Komut satırında Coverage Studio 2.2026.4 — iki motorun ölçtüğü bir dosya, komutu nereden başlatırsanız başlatın bir kez sayılır
2026-10-04
Düzeltildi
- Komutu başlattığınız klasör, bir raporun ne anlama geldiğine karar vermez. 2.2026.3, bir raporun göreli yollarını o raporun yazıldığı klasöre bağlar — ama yalnızca başka bir yerden başlatılan bir komut için. Ölçtüğü ağacın kökünden, yani bir kapsama komutunun normalde çalıştırıldığı yerden çalıştırıldığında göreli bir yol yine o klasöre göre çözümleniyordu ve llvm-cov'un tam adıyla andığı bir dosya ikinci kez sayılıyordu: 5.258 satırlık bir ağaç 5.836 olarak okunuyordu. Artık yalnızca
--cwd ve raporun kendi konumu karar verir. Aynı düzeltme her iki düzenleyicide de var; orada o klasör, VS Code'un ya da Visual Studio'nun başlatıldığı klasördü. export --format json çalıştırmayı ayarlarınızın üzerine yazıyordu. Dosyası fucini-coverage.json idi — ayarların okunduğu adın ta kendisi — bu yüzden alışılmış biçimde yapılandırılmış bir klasörde dışa aktarma, az önce kendisine ölçüt yaptığı eşikleri yok ediyordu. Çalıştırma coverage-run.json dosyasına yazılır ve export ile badge, ayar dosyasını adlandıran bir --out değerini reddeder. --cwd klasörü, nasıl yazarsanız yazın kabul eder. Göreli bir klasör — --cwd ., --cwd ../tree — yazıldığı gibi alınıyor ve yanlış yol kurallarıyla okunuyordu: Windows'ta yarı POSIX yarı Windows yazılmış bir ayar dosyasının okunamadığını bildiriyor, hiçbir rapor da bulamıyordu. Sondaki ayırıcı da artık klasörün parçası değil. - Kimsenin tanımlamadığı bir bayrak rapor değildir.
summary -o out.json, -o değerini bir rapor sanıyor ve böyle bir dosya olmadığını söylüyordu. Yalnızca -h ve -v kısadır; -- adı tireyle başlayan bir dosyayı yine geçirir ve komuttan önce yazılan bir bayrak, tüm yardımla yanıtlanmak yerine hatada adıyla anılır. check --json, çıkış kodunun söylediğini söyler. Hiçbir eşik ayarlı değilken çıkış kodu 0'ın yanına "passed": false yazıyordu; JSON'u çıkış kodu yerine okuyan bir işlem hattı, komutun geçirdiği bir çalıştırmayı başarısız sayıyordu. passed, tek kelimeyle çıkış kodudur; hiç kapı olmadığını söyleyen alan configured'dır. Boş bir --lines "", o kapıyı sessizce kapatmak yerine reddedilir. - Karşılaştırma, temel çizgiyi çalıştırmayı koyduğu yere koyar.
pathRemap ve bir raporun bildirdiği kök çalıştırmaya uygulanıyor, temel çizgiye uygulanmıyordu; böylece bir derleme sunucusunda yazılmış bir temel çizgi hiçbir şeyle eşleşmiyor ve karşılaştırma, apaçık değişmiş bir toplamın yanında hiçbir şeyin değişmediğini bildiriyordu.
Komut satırında Coverage Studio 2.2026.3 — iki motorun ölçtüğü bir dosya yeniden tek bir dosya
2026-10-04
Düzeltildi
- Bir raporun göreli yolları, o raporun yazıldığı klasöre bağlanır. llvm-cov bir dosyanın tam yolunu yazar; gcovr ise onu raporunun bulunduğu derleme klasörüne göre yazar. Bir ağacın iki raporu birlikte verildiğinde
summary, ikisinin ortak olduğu her dosyayı iki kez listeliyordu — her motorun sayılarıyla birer kez — ve ikisini de toplama ekliyordu, çünkü göreli bir yolun çözümlenecek bir kökü yoktu ve kabuğun o anda bulunduğu klasöre göre çözümleniyordu. 5.258 satırlık bir ağaç 5.836 olarak bildiriliyordu; fazlalık, hiçbirini içermeyen bir yolun altındaki dosyalara aitti. Artık her rapor, komutun çalıştığı klasöre kadar kendi klasörüne ve üstündekilere bağlanıyor — her iki sürümün zaten yaptığı gibi — böylece ikisi, her derleme dizini için bir pathRemap kuralı olmadan tek bir dosya kümesi olarak buluşuyor. - Bayt sırası işaretiyle başlayan bir ayar dosyası da reddediliyordu. Windows’taki bir düzenleyici onu metnin önüne yazabilir; artık JSON’un bir parçası sayılmıyor.
- Erken duran bir okuyucuya yönlendirilen çıktı sessizce sona erer.
head’e ya da PowerShell’in Select-Object -First’üne yönlendirilen summary, işlenmemiş bir EPIPE ve bir yığın iziyle ölüyordu. Okuyucunun boruyu kapatması kendi seçimidir, komutun bir hatası değil: komut artık ulaştığı çıkış koduyla sona eriyor.
Komut satırında Coverage Studio 2.2026.1 — desen içeren bir ayar dosyası okunuyor
2026-10-04
Düzeltildi
- Desen içeren bir ayar dosyası reddediliyordu.
fuciniCoverage.coverageFile.paths içindeki bir yolda **/*.lcov.info, bir sonrakinde **/coverage.json bulunduğunda her komut is not JSON iletisiyle sona eriyordu: ikisinin arasında kalan kısım yorum sanılıyordu. Dosya artık düzenleyicilerin okuduğu gibi okunuyor; bir değerden sonraki yorum ve kapanış ayracından önceki virgül de buna dahil.
Komut satırında Coverage Studio 2.2026.0 — fucini-coverage, ilk sürüm
2026-10-04
Eklendi
- Komut satırında okuyucu, ücretsiz.
npm install -g fucini-coverage — iki sürümdekiyle aynı okuyucu, düzenleyicinin olmadığı yerler için. Tek paket, Windows, Linux, WSL ve macOS'te tek davranış, Node 20 ya da daha yenisi.
check, kapı. Satırlar, dallar, işlevler, MC/DC, koşullar, bölgeler, mutasyon ya da ağırlıklı puan üzerinde, ayarlardan ya da komut satırından gelen bir eşiğin altında çıkış kodu 1; --new-code 80 --base-ref origin/main, aracın kendi çalıştırdığı git diff üzerinden bir dalın değiştirdiği satırları değerlendirir; --require-reasons nedeni olmayan bir hariç tutma işaretini başarısız sayar.
summary, export, report, badge, compare. Toplamlar ve her dosya; çalıştırma dosya başına ya da işlev başına CSV, Markdown, LCOV, Cobertura, SARIF, hariç tutma listesi, bir rozet ya da Fucini'nin JSON'u olarak; çok sayfalı HTML raporu; ayarların ölçeğine göre renklendirilmiş rozet; bu çalıştırmanın bir temel çizgi karşısındaki durumu, önce gerilemeler, bir pull request denetimi için --fail-on-regression ile.
mcp, bir yapay zekâ ajanı için. Sürümlerin altı aracı, çalıştırma üzerinden 127.0.0.1 üzerinde bir belirtecin ardında sunulur; istemcinin mcp.json dosyası için girdi yazdırılır.
- Visual Studio sürümünün ayar dosyası. Kodun yanında
fucini-coverage.json, VS Code ayarlarının fuciniCoverage.* anahtarlarıyla; onun altında .vscode/settings.json. Raporlar dosya, klasör ya da desen olarak adlandırılır, bir .gz açılır ve her komut kendini belgeler: fucini-coverage help <command>.
VS Code için Coverage Studio 2.2026.2 — Deneme, Lisans Sunucusunun Yanıtıyla Başlar
2026-10-04
Değiştirildi
- Yeni bir kurulumun deneme süresi lisans sunucusunun ilk yanıtıyla başlar. Uzantı fucini.software adresine bir kez ulaşana kadar Community katmanında çalışır ve nedenini söyler. Zaten deneme süresinde olan ya da lisansı bulunan bir kurulum hiçbir şey fark etmez.
- Geliştirme kapsayıcısında veya Codespace’te deneme yok. Uzantı orada Community katmanında başlar; bir abonelik kodu, bir anahtar veya 7 günlük geçiş her şeyin kilidini açar.
- Kullanım defteri bir makineyi ikinci bir özetle tanır: işletim sisteminin kendi kimliğinin özetiyle. Yalnızca özet gönderilir; bkz. gizlilik politikası.
Visual Studio için Coverage Studio 2.2026.1 — Küçük Düzeltmeler
2026-10-04
Düzeltildi
- Küçük düzeltmeler. Bir bakım sürümü: perde arkasında küçük düzeltmeler; gördüklerinizi veya kullanım biçimini değiştiren hiçbir şey yok.
VS Code için Coverage Studio 2.2026.1 — Küçük Düzeltmeler
2026-10-04
Düzeltildi
- Küçük düzeltmeler. Bir bakım sürümü: perde arkasında küçük düzeltmeler; gördüklerinizi veya kullanım biçimini değiştiren hiçbir şey yok.
Visual Studio için Coverage Studio 2.2026.0 — Ekrandaki Kapsam, Yapay Zekâ Ajanları için
2026-10-04
Eklendi
- Ekrandaki kapsam, yapay zekâ ajanları için. Test yazan bir ajan testleri çalıştırıp bir yüzde okuyabiliyordu; Visual Studio'nun bildiğini soramıyordu. Altı araç bunu, bir ajanın harekete geçebileceği sözcüklerle yanıtlar:
coverage_summary, coverage_gaps, tests_for_line, patch_coverage, coverage_delta ve test_run_command. MCP konuşan bir ajan onlara, fuciniCoverage.mcp.enabled açıkken Visual Studio'nun çalıştırdığı bir sunucu üzerinden ulaşır — varsayılan olarak kapalı, yalnızca 127.0.0.1 üzerinde, size ait bir belirtecin ardında ve web sayfalarına kapalı. Copy MCP Server Configuration istemcinin girdisini panoya koyar. - Ekrandakiyle aynı sayılar. Araçlar yüklü çalıştırmadan yanıt verir — aynı hariç tutmalar, aynı yeniden eşleme — böylece bir fonksiyonun kapsam boşluklarını kapatması söylenen bir ajan ile kenar boşluğuna bakan bir gözden geçiren aynı satırlardan söz eder.
Değiştirildi
- Bir anahtarın planı, VS Code'da neye karar veriyorsa Visual Studio'da da ona karar verir. Bir özelliği dışarıda bırakan bir plan — MC/DC, HTML raporu, bir satırı çalıştıran testlerin adları — onu VS Code'da dışarıda bırakıyor, burada bırakmıyordu. İki sürüm de artık aynı tabloyu okur: planın içermediği bir özellik verilmez ve komutu bunu söyler.
- Lisans sunucusunun istediği en düşük sürüm burada da geçerlidir. 2.2026.0'dan itibaren VS Code sürümü ile Visual Studio sürümü aynı sürüm numarasını taşır; dolayısıyla bu en düşük sürümden eski bir derleme, VS Code sürümünün yaptığı gibi güncellenmeyi ister.
VS Code için Coverage Studio 2.2026.0 — Ekrandaki Kapsam, Yapay Zekâ Ajanları için
2026-10-04
Eklendi
- Ekrandaki kapsam, yapay zekâ ajanları için. Test yazan bir ajan testleri çalıştırıp bir yüzde okuyabiliyordu; düzenleyicinin bildiğini soramıyordu. Altı araç bunu, bir ajanın harekete geçebileceği sözcüklerle yanıtlar:
coverage_summary, coverage_gaps, tests_for_line, patch_coverage, coverage_delta ve test_run_command. VS Code'un kendi ajanı bunlara dil modeli araçları olarak sahiptir; kurulacak bir şey yoktur. MCP konuşan diğer her ajan onlara, fuciniCoverage.mcp.enabled açıkken uzantının çalıştırdığı bir sunucu üzerinden ulaşır — varsayılan olarak kapalı, yalnızca 127.0.0.1 üzerinde, size ait bir belirtecin ardında ve web sayfalarına kapalı. Copy MCP Server Configuration istemcinin girdisini panoya koyar. - Ekrandakiyle aynı sayılar. Araçlar yüklü çalıştırmadan yanıt verir — aynı hariç tutmalar, aynı yeniden eşleme — böylece bir fonksiyonun kapsam boşluklarını kapatması söylenen bir ajan ile kenar boşluğuna bakan bir gözden geçiren aynı satırlardan söz eder.
Visual Studio için Coverage Studio 1.2026.22 — iki motorun ölçtüğü bir dosya tek bir dosyadır
2026-10-04
Düzeltildi
- İki motorun ölçtüğü bir dosya tek bir dosyadır. llvm-cov bir dosyanın tam yolunu yazar; gcovr ise onu raporunun bulunduğu derleme klasörüne göre yazar. Göreli bir yol, raporun kendi klasörüne ve onun üstündeki klasörlere bağlanır — ama bundan önce çözümleyici, yolun olduğu gibi var olup olmadığını soruyordu ve bu soru, Visual Studio'nun kendisinin başlatıldığı klasörden yanıtlanır. O klasör dosyayı içeriyorsa yol göreli kalıyordu: dosyanın iki adı oluyor, Coverage penceresinde iki kez listeleniyor ve toplamlara iki kez katılıyordu. 5.258 satırlık bir ağaç 5.836 olarak okunuyordu. Kendine ait bir konum adlandırmayan bir yol artık hiç sorulmuyor; raporun yazıldığı yere bağlanıyor ve satır bunu söylüyor.
VS Code için Coverage Studio 1.2026.23 — iki motorun ölçtüğü bir dosya tek bir dosyadır ve seçtiğiniz oluk modu ayarlarınızın dışında kalır
2026-10-04
Düzeltildi
- İki motorun ölçtüğü bir dosya tek bir dosyadır. llvm-cov bir dosyanın tam yolunu yazar; gcovr ise onu raporunun bulunduğu derleme klasörüne göre yazar. Göreli bir yol, raporun kendi klasörüne ve onun üstündeki klasörlere bağlanır — ama bundan önce çözümleyici, yolun olduğu gibi var olup olmadığını soruyordu ve bu soru, uzantı ana sürecinin başlatıldığı klasörden yanıtlanır;
code . sonrası bu, proje kökünüzdür. Yol o zaman göreli kalıyordu: dosyanın iki adı oluyor, Coverage görünümünde iki kez listeleniyor ve toplamlara iki kez katılıyordu. 5.258 satırlık bir ağaç 5.836 olarak okunuyordu. Kendine ait bir konum adlandırmayan bir yol artık hiç sorulmuyor; raporun yazıldığı yere bağlanıyor ve satır bunu söylüyor. - Seçtiğiniz oluk modu oturum boyunca geçerlidir ve ayarlarınız yazdığınız gibi kalır. Durum çubuğundan, seçiciden ya da Toggle Coverage Painting ile bir mod seçmek, onu
settings.json dosyasına yazıyordu — birçok projede sürüm denetimi altındaki bir dosyayı, dakikada iki kez basılmak üzere tasarlanmış bir düğme yeniden yazıyordu. Seçim artık oturum boyunca yaşar ve ayarlarınıza yazdığınız bir mod, pencere açıldığında yine kazanır.
Visual Studio için Coverage Studio 1.2026.21 — Bir Test Fark Eder miydi? İmleçte Bir Mutasyon Çalıştırması
2026-10-03
Eklendi
- Run Mutation Tests Here. Kapsam bir satırın çalıştığını söyler; bir mutasyon aracı ise satır yanlış olsaydı bir testin bunu fark edip etmeyeceğini söyler. İmlecin içinde bulunduğu fonksiyon — ya da seçili satırlar ya da dosya — klasörün çalıştırıcısına mutasyona uğratması söylenen şeydir ve raporu ekrandaki kapsamın yanına yüklenir: C# için Stryker.NET, JavaScript ve TypeScript için StrykerJS, Java için Maven ile PIT. Bir projenin mutasyon çalıştırması bir saat sürer; tek bir fonksiyonunki bir dakika.
VS Code için Coverage Studio 1.2026.22 — Bir Test Fark Eder miydi? İmleçte Bir Mutasyon Çalıştırması
2026-10-03
Eklendi
- Run Mutation Tests Here. Kapsam bir satırın çalıştığını söyler; bir mutasyon aracı ise satır yanlış olsaydı bir testin bunu fark edip etmeyeceğini söyler. İmlecin içinde bulunduğu fonksiyon — ya da seçili satırlar ya da dosya — klasörün çalıştırıcısına mutasyona uğratması söylenen şeydir ve raporu ekrandaki kapsamın yanına yüklenir: C# için Stryker.NET, JavaScript ve TypeScript için StrykerJS, Java için Maven ile PIT. Bir projenin mutasyon çalıştırması bir saat sürer; tek bir fonksiyonunki bir dakika.
Visual Studio için Coverage Studio 1.2026.20 — Uygulamanın Kendisi, Kapsamla
2026-10-03
Eklendi
- Run App with Coverage…, yalnızca testlerin yaptığını değil, bir kişinin ulaştığını da ölçer: klasörün .NET uygulaması Microsoft'un
dotnet-coverage aracı altında, kendi konsolunda başlatılır ve kapatılana dek çalışır. Gezilen yerler sonra herhangi bir çalıştırma gibi yüklenir, bir kapsam oturumunda ise testlerin çalıştırdıklarına eklenir. dotnet tool install --global dotnet-coverage gerekir.
VS Code için Coverage Studio 1.2026.21 — Uygulamanın Kendisi, Kapsamla
2026-10-03
Eklendi
- Run App with Coverage…, yalnızca testlerin yaptığını değil, bir kişinin ulaştığını da ölçer: klasörün .NET uygulaması Microsoft'un
dotnet-coverage aracı altında, kendi konsolunda başlatılır ve kapatılana dek çalışır. Gezilen yerler sonra herhangi bir çalıştırma gibi yüklenir, bir kapsam oturumunda ise testlerin çalıştırdıklarına eklenir. dotnet tool install --global dotnet-coverage gerekir.
Visual Studio için Coverage Studio 1.2026.19 — GitHub ve GitLab'den Zip Yapıtları
2026-10-03
Eklendi
- Zip yapıtından bir CI referansı. GitHub ve GitLab bir yapıtı arşiv olarak yayımlar.
baseline.report böyle bir arşivi adlandırdığında — bir URL ya da diskteki bir zip — arşiv açılır ve içindeki rapor tutulur: # işaretinden sonra adı verilen üye (ci/artifact.zip#coverage/lcov.info), yoksa arşivin tek dosyası, o da yoksa rapora benzeyen tek dosyası.
VS Code için Coverage Studio 1.2026.20 — GitHub ve GitLab'den Zip Yapıtları
2026-10-03
Eklendi
- GitHub ve GitLab'den zip yapıtları. CI bir yapıt yayımlar ve yapıt bir arşivdir. Getirilen bir zip artık açılır ve içindeki rapor tutulur — URL'deki
# işaretinden sonra adı verilen üye (…/zip#coverage/lcov.info), yoksa arşivin tek dosyası, o da yoksa rapora benzeyen tek dosyası. coverageFile.paths içindeki bir URL için, baseline.report için ve diskte zip olarak duran bir referans için.
Düzeltildi
- Bir Cobertura referansının dosyaları, raporun kendi
<source> öğesi altında bulunmuyordu. Karşılaştırma, değişmiş bir toplamın yanında 0 file(s) moved diyordu. Artık, yüklenen bir raporda olduğu gibi, raporun adlandırdığı kök kullanılır.
Visual Studio için Coverage Studio 1.2026.18 — Yazara ve Tarihe Göre Yeni Kod
2026-10-03
Eklendi
- Yazara ve tarihe göre yeni kod. Yeni kod, bir git ref'ine karşı değişen satırlardı. İki ayar, bir ref'in soramayacağını sorar:
fuciniCoverage.gitDiff.author — bir kişinin yazdığı satırlar — ve fuciniCoverage.gitDiff.since — belirli bir günden beri yazılan satırlar. İkisi de git blame çıktısından okunur ve hem fark kapsamına hem de yeni kod eşiğine uygulanır.
VS Code için Coverage Studio 1.2026.19 — Yazara ve Tarihe Göre Yeni Kod
2026-10-03
Eklendi
- Yazara ve tarihe göre yeni kod. Yeni kod, bir git ref'ine karşı değişen satırlardı. İki ayar, bir ref'in soramayacağını sorar:
fuciniCoverage.gitDiff.author — bir kişinin yazdığı satırlar — ve fuciniCoverage.gitDiff.since — belirli bir günden beri yazılan satırlar. İkisi de git blame çıktısından okunur ve hem fark kapsamına hem de yeni kod eşiğine uygulanır.
Visual Studio için Coverage Studio 1.2026.17 — Go ve Rust'ta Kapsamla Tek Bir Test
2026-10-02
Eklendi
- Run This Test with Coverage, Go ve Rust'ı okur. Bir Go dosyasında imlecin bulunduğu
func TestXxx tek başına, kendi paketinde ve tam adıyla çalışır — go test ./pkg/calc -run "^TestTotal$". Bir Rust dosyasında #[test] fonksiyonu crate içindeki yoluyla, --exact ile çalışır; bir mod içinde o modülün testleri; tests/ altındaki bir entegrasyon testi ise kendi ikilisinde.
VS Code için Coverage Studio 1.2026.18 — Go ve Rust'ta Kapsamla Tek Bir Test
2026-10-02
Eklendi
- Run This Test with Coverage, Go ve Rust'ı okur. Bir Go dosyasında imlecin bulunduğu
func TestXxx tek başına, kendi paketinde ve tam adıyla çalışır — go test ./pkg/calc -run "^TestTotal$". Bir Rust dosyasında #[test] fonksiyonu crate içindeki yoluyla, --exact ile çalışır; bir mod içinde o modülün testleri; tests/ altındaki bir entegrasyon testi ise kendi ikilisinde.
Visual Studio için Coverage Studio 1.2026.16 — GCC 14 Koşul Kapsamı, Satır Satır
2026-10-02
Eklendi
- GCC 14'ün koşul kapsamı, satır satır.
-fcondition-coverage dosya başına iki sayım olarak okunuyordu; artık her koşul kendi satırında işaretlenir ve üzerine gelindiğinde çıkan ipucunda adlandırılır — koşul 1 hiç doğru olmadı, koşul 0 hiç doğru da yanlış da olmadı — gcov'un JSON çıktısından ve metin dökümünden. threshold.conditions ona eşik koyar, Copy Coverage Summary bir Conditions sütunu içerir, badge.metric conditions değerini alır ve arama conditions < 80 sorgusunu kabul eder.
Düzeltildi
- Bir fonksiyonun dal değeri, koşullarının sonuçlarını da sayıyordu. Aracın 6'da 4 dediği yerde
branches 8/12. Koşullar orada, dosyanın ve çalıştırmanın değerlerinde olduğu gibi, dışarıda bırakılır.
VS Code için Coverage Studio 1.2026.17 — GCC 14 Koşul Kapsamı, Satır Satır
2026-10-02
Eklendi
- GCC 14'ün koşul kapsamı, satır satır.
-fcondition-coverage dosya başına iki sayım olarak okunuyordu; artık her koşul kendi satırında işaretlenir ve üzerine gelindiğinde çıkan ipucunda adlandırılır — koşul 1 hiç doğru olmadı, koşul 0 hiç doğru da yanlış da olmadı — gcov'un JSON çıktısından ve metin dökümünden. threshold.conditions ona eşik koyar, Copy Coverage Summary bir Conditions sütunu içerir, badge.metric conditions değerini alır ve arama conditions < 80 sorgusunu kabul eder.
Düzeltildi
- Bir fonksiyonun dal değeri, koşullarının sonuçlarını da sayıyordu. Aracın 6'da 4 dediği yerde
branches 8/12. Koşullar orada, dosyanın ve çalıştırmanın değerlerinde olduğu gibi, dışarıda bırakılır.
Visual Studio için Coverage Studio 1.2026.15 — Coverage Görünümü Düzenleyiciyi İzler
2026-10-02
Eklendi
- Coverage görünümü düzenleyiciyi izler. Baktığınız dosya ağaçta vurgulanır, üstündeki klasörler açılır ve satırı görünür alana kaydırılır.
fuciniCoverage.coverageView.followActiveEditor bunu kapatır.
VS Code için Coverage Studio 1.2026.16 — Coverage Görünümü Düzenleyiciyi İzler
2026-10-02
Eklendi
- Coverage görünümü düzenleyiciyi izler. Baktığınız dosya ağaçta vurgulanır, üstündeki klasörler açılır ve satırı görünür alana kaydırılır.
fuciniCoverage.coverageView.followActiveEditor bunu kapatır.
Visual Studio için Coverage Studio 1.2026.14 — Yalnızca Dallara Yönelik Hariç Tutma İşaretleri ve .NET Raporlarında Dal Kapsamı
2026-10-02
Eklendi
- Yalnızca dallara yönelik ve gcovr hariç tutma işaretleri.
LCOV_EXCL_BR_LINE ile LCOV_EXCL_BR_START … LCOV_EXCL_BR_STOP, satırlarındaki dalları sayımdan çıkarır, satırları ise sayımda bırakır; LCOV_EXCL_EXCEPTION_BR_LINE yalnızca bir istisnanın ulaştığı kolları çıkarır. Her işaret gcovr'ın önekleriyle de okunur: GCOVR_EXCL_LINE, GCOVR_EXCL_START, GCOV_EXCL_BR_LINE ve diğerleri.
Düzeltildi
- Bir .NET raporu hiç dal kapsamı göstermiyordu. Coverlet ve
dotnet-coverage, bir Cobertura satırının branch özniteliğini True olarak yazar ve yalnızca küçük harfli true okunuyordu — bu yüzden böyle bir rapordaki her karar atılıyordu. Artık iki yazım da okunuyor. Sayılar değişir: bir .NET projesinin dal kapsamı, hiç olmadığı yerde belirir, onunla birlikte puanı da. - Birkaç ağaçtan birleştirilmiş bir Cobertura raporu yalnızca ilk ağacın dosyalarını buluyordu. Böyle bir rapor ağaç başına bir
<source> adlandırır; artık her biri, rapordaki sırayla denenir.
VS Code için Coverage Studio 1.2026.15 — Yalnızca Dallara Yönelik Hariç Tutma İşaretleri ve .NET Raporlarında Dal Kapsamı
2026-10-02
Eklendi
- Yalnızca dallara yönelik ve gcovr hariç tutma işaretleri.
LCOV_EXCL_BR_LINE ile LCOV_EXCL_BR_START … LCOV_EXCL_BR_STOP, satırlarındaki dalları sayımdan çıkarır, satırları ise sayımda bırakır; LCOV_EXCL_EXCEPTION_BR_LINE yalnızca bir istisnanın ulaştığı kolları çıkarır. Her işaret gcovr'ın önekleriyle de okunur: GCOVR_EXCL_LINE, GCOVR_EXCL_START, GCOV_EXCL_BR_LINE ve diğerleri.
Düzeltildi
- Bir .NET raporu hiç dal kapsamı göstermiyordu. Coverlet ve
dotnet-coverage, bir Cobertura satırının branch özniteliğini True olarak yazar ve yalnızca küçük harfli true okunuyordu — bu yüzden böyle bir rapordaki her karar atılıyordu. Artık iki yazım da okunuyor. Sayılar değişir: bir .NET projesinin dal kapsamı, hiç olmadığı yerde belirir, onunla birlikte puanı da. - Birkaç ağaçtan birleştirilmiş bir Cobertura raporu yalnızca ilk ağacın dosyalarını buluyordu. Böyle bir rapor ağaç başına bir
<source> adlandırır; artık her biri, rapordaki sırayla denenir.
Visual Studio için Coverage Studio 1.2026.13 — Her Satırı Yine de Çalıştıran En Az Sayıda Test
2026-10-01
Eklendi
- Show Minimal Test Set…, test takımının çalıştırdığı her satırı yine de çalıştıran en az sayıda testi bulur ve bunların altında kendine ait hiçbir satır eklemeyen testleri listeler. Commit öncesindeki hızlı çalıştırma ve test takımını budayanlar için — satırlara göre gereksiz olanın, bir testin denetledikleri bakımından gereksiz olmadığı hatırlatmasıyla.
VS Code için Coverage Studio 1.2026.14 — Her Satırı Yine de Çalıştıran En Az Sayıda Test
2026-10-01
Eklendi
- Show Minimal Test Set…, test takımının çalıştırdığı her satırı yine de çalıştıran en az sayıda testi bulur ve bunların altında kendine ait hiçbir satır eklemeyen testleri listeler. Commit öncesindeki hızlı çalıştırma ve test takımını budayanlar için — satırlara göre gereksiz olanın, bir testin denetledikleri bakımından gereksiz olmadığı hatırlatmasıyla.
Visual Studio için Coverage Studio 1.2026.12 — Nedenini Söyleyen Hariç Tutmalar
2026-10-01
Eklendi
- Gerekçeli hariç tutmalar. Yazıldığı yerde sayımdan çıkarılan kod nedenini söyleyebilir —
// LCOV_EXCL_LINE: defensive, unreachable by construction, [ExcludeFromCodeCoverage(Justification = "…")] — ve nedenler raporlanır: Export Coverage Report… hariç tutmaları ve gerekçelerini Markdown ve CSV olarak listeler. fuciniCoverage.exclusions.requireReason ile neden belirtmeyen bir hariç tutma, kendi satırında bir uyarıdır ve Check Coverage Thresholds denetimini başarısız kılar.
VS Code için Coverage Studio 1.2026.13 — Nedenini Söyleyen Hariç Tutmalar
2026-10-01
Eklendi
- Gerekçeli hariç tutmalar. Yazıldığı yerde sayımdan çıkarılan kod nedenini söyleyebilir —
// LCOV_EXCL_LINE: defensive, unreachable by construction, [ExcludeFromCodeCoverage(Justification = "…")] — ve nedenler raporlanır: Export Coverage Report… hariç tutmaları ve gerekçelerini Markdown ve CSV olarak listeler. fuciniCoverage.exclusions.requireReason ile neden belirtmeyen bir hariç tutma, kendi satırında bir uyarıdır ve Check Coverage Thresholds denetimini başarısız kılar.
Visual Studio için Coverage Studio 1.2026.11 — Yeni Kod için Bir Eşik ve Düzenleme Olmadan Değişen Kapsam
2026-10-01
Eklendi
- Tüm çalıştırmaya ilişkin eşiklerin yanında, yeni kod için bir eşik.
fuciniCoverage.threshold.newCode, gitDiff.baseRef karşısında değişen satırların, yüzde olarak, sahip olması gereken en düşük satır kapsamıdır. Check Coverage Thresholds onu kendi cümlesiyle başarısız sayar — New code 72.00% < 80% (18 of 25 line(s) changed against origin/main ran) — ve tüm çalıştırma ekranda kalır. - Show Indirect Coverage Changes…, kimse düzenlemediği hâlde kapsamı değişen satırları listeler — bir test kaldırıldığı ya da yukarıdaki bir dal artık erken döndüğü için çalışmayı bırakan kod.
baseline.report bir CI referansı adlandırıyorsa ona karşı, yoksa bir önceki çalıştırmaya karşı.
VS Code için Coverage Studio 1.2026.12 — Yeni Kod için Bir Eşik ve Düzenleme Olmadan Değişen Kapsam
2026-10-01
Eklendi
- Tüm çalıştırmaya ilişkin eşiklerin yanında, yeni kod için bir eşik.
fuciniCoverage.threshold.newCode, gitDiff.baseRef karşısında değişen satırların, yüzde olarak, sahip olması gereken en düşük satır kapsamıdır. Check Coverage Thresholds onu kendi cümlesiyle başarısız sayar — New code 72.00% < 80% (18 of 25 line(s) changed against origin/main ran) — ve tüm çalıştırma ekranda kalır. - Show Indirect Coverage Changes…, kimse düzenlemediği hâlde kapsamı değişen satırları listeler — bir test kaldırıldığı ya da yukarıdaki bir dal artık erken döndüğü için çalışmayı bırakan kod.
baseline.report bir CI referansı adlandırıyorsa ona karşı, yoksa bir önceki çalıştırmaya karşı.
Visual Studio için Coverage Studio 1.2026.10 — Yalnızca Değişikliklerinizin Dokunduğu Testleri Çalıştırın
2026-10-01
Eklendi
- Run Tests Affected by My Changes…, çalışma ağacının
fuciniCoverage.testImpact.baseRef (varsayılan olarak HEAD) karşısında değiştirdiği bir satırı çalıştıran testleri listeler; değişikliğin en büyük bölümünü çalıştıran en başta gelir. Bir testi seçmek onu açar; raporların test başına bir çalıştırmadan (testRun.perTest) geldiği yerde ilk girdi yalnızca o testleri çalıştırır.
Düzeltildi
testRun.skipWhenTestsFail çalıştırmadan sonra da geçerlidir. Kırmızı bir çalıştırmanın yazdığı raporlar diskte kalıyor, izleyici de onları bir an sonra yüklüyordu. Artık kaldırılıyorlar.- Bir TRX günlükçüsünün bir kapsam raporundan çıkardığı kopya hiçbir zaman izleme dosyası sanılmaz.
VS Code için Coverage Studio 1.2026.11 — Yalnızca Değişikliklerinizin Dokunduğu Testleri Çalıştırın
2026-10-01
Eklendi
- Run Tests Affected by My Changes…, çalışma ağacının
fuciniCoverage.testImpact.baseRef (varsayılan olarak HEAD) karşısında değiştirdiği bir satırı çalıştıran testleri listeler; değişikliğin en büyük bölümünü çalıştıran en başta gelir. Bir testi seçmek onu açar; raporların test başına bir çalıştırmadan (testRun.perTest) geldiği yerde ilk girdi yalnızca o testleri çalıştırır.
Düzeltildi
testRun.skipWhenTestsFail çalıştırmadan sonra da geçerlidir. Kırmızı bir çalıştırmanın yazdığı raporlar diskte kalıyor, izleyici de onları bir an sonra yüklüyordu. Artık kaldırılıyorlar.- Bir TRX günlükçüsünün bir kapsam raporundan çıkardığı kopya hiçbir zaman izleme dosyası sanılmaz.
Visual Studio için Coverage Studio 1.2026.9 — İşaretlerde Geçti ya da Kaldı ve Visual Studio'nun Kendi Kod Kapsamı Dosyaları
2026-09-30
Eklendi
- İşaretlerde geçti ya da kaldı. Başarısız bir testin çalıştırdığı satır, başında kırmızı bir çubuk alır ve üzerine gelindiğinde çıkan ipucu başarısız testleri adlandırır; Show Tests That Ran This Line testlerden hangilerinin başarısız olduğunu söyler. Bunun için bir satırı hangi testlerin çalıştırdığını söyleyen bir rapor ve çalıştırıcının sonuç dosyası — TRX ya da JUnit XML — gerekir; dosya raporun klasöründe durmalı ya da
fuciniCoverage.testResults.paths içinde adlandırılmalıdır. Run Tests with Coverage artık dotnet test komutundan böyle bir dosya ister. - Visual Studio'nun kendi kod kapsamı, yüklenmiş olarak. Visual Studio'nun Analyze Code Coverage komutunun yazdığı
.coverage dosyası dotnet-coverage ile dönüştürülür ve kendiliğinden yüklenir: Coverage Studio yerleşik toplayıcıyla yarışmak yerine onun üzerine kurulur.
VS Code için Coverage Studio 1.2026.10 — İşaretlerde Geçti ya da Kaldı
2026-09-30
Eklendi
- İşaretlerde geçti ya da kaldı. Başarısız bir testin çalıştırdığı satır, başında kırmızı bir çubuk alır ve üzerine gelindiğinde çıkan ipucu başarısız testleri adlandırır; Show Tests That Ran This Line testlerden hangilerinin başarısız olduğunu söyler. Bunun için bir satırı hangi testlerin çalıştırdığını söyleyen bir rapor ve çalıştırıcının sonuç dosyası — TRX ya da JUnit XML — gerekir; dosya raporun klasöründe durmalı ya da
fuciniCoverage.testResults.paths içinde adlandırılmalıdır. Run Tests with Coverage artık dotnet test komutundan böyle bir dosya ister.
Visual Studio için Coverage Studio 1.2026.8 — Aramanızı, Oturumunuzu ve Son Çalıştırmanızı Koruyan Yeniden Yüklemeler
2026-09-30
Düzeltildi
- Kapsam yeniden yüklendiğinde arama kutusu sorgusunu ve odağını korur. Her yeniden yükleme onu boşaltıyordu, çoğu kez sorgu hâlâ yazılırken.
< 80% gibi bir sorgu, eşleştiği risk noktalarını da tutar. - Bir kapsam oturumu artık aynı çalıştırmayı iki kez saymıyor. Değişmemiş raporların her yeniden yüklenmesi onları yeniden ekliyor ve her isabet sayısı ikiye katlanıyordu. Bir oturum artık her rapor kümesini bir kez tutar.
- CI referansı artık bir yüklemeyi bekletmiyor. Önce yükleme çizilir, karşılaştırma ardından gelir. Referans bir kez hazırlanır ve raporu ile ayarlar aynı kaldıkça saklanır; URL'ye ulaşılamadığında ise daha önce getirilen kopya kullanılır.
- “Son çalıştırmadan beri”, değişmemiş raporların yeniden yüklenmesinden sonra da kalır. Bir ayar değişikliği ya da yenileme, ekrandaki çalıştırmayı kendi son çalıştırması yapıyor ve bir önceki çalıştırmadan bu yana olan her değişiklik kayboluyordu. Böyle bir yeniden okuma artık geçmişte de tutulmaz.
- Aynı anda tek yükleme. Birlikte istenen iki yeniden yükleme yan yana çalışıyor ve yavaş olan kazanıyordu. Bir yükleme sırasında istenen yeniden yüklemeler artık ondan sonra tek bir yükleme olur.
- HTTP üzerinden bir CI referansı VS Code'daki gibi getirilir. Tek istemci, sunucuya ulaşılamadığı zamanlar için saklanan son kopya ve yalnızca yazıldıkları adrese gönderilen
remote.headers — asla düz HTTP üzerinden değil. - İşi başarısız olan bir komut bunu söyler. Bir komuttaki ya da zamanlayıcıdaki hata yutuluyordu; artık Çıkış penceresinde bir satırdır.
- UI iş parçacığında daha az iş. Dosya izleyicileri arka planda oluşturulur, Hata Listesi girdileri yükleme başına bir kez hesaplanır ve günlük satır satır değil, toplu hâlde yazılır.
- İki Visual Studio penceresi artık çalıştırma geçmişine zarar vermiyor. Geçmişin dizini, ikisinin de paylaştığı bir kilit altında tek adımda değiştirilir ve kaybolduğunda çalıştırmalardan yeniden oluşturulur.
- Run Native Project with Coverage, projeyi kendi platformu için derler ve
llvm-cov ile llvm-profdata araçlarını derleyicinin LLVM'inden, bir çift olarak alır. - Coverage penceresinin uyarı, hata ve başarı renkleri açık temaya da uyar, koyu temaya uyduğu gibi.
- Kaydedilmemiş değişikliklerle açık duran bir ayarlar dosyasının üzerine yazılmaz. Ayarlar sayfası önce onu kaydetmenizi söyler.
Değiştirildi
- Seçtiğiniz bir kapsam dosyası ve bir test çalıştırmasının yazdığı rapor sizin için hatırlanır;
.vscode/settings.json dosyasına yazılmaz. O dosya çoğu kez commit edilir; dolayısıyla bir test çalıştırması depoda kimsenin istemediği bir değişiklik bırakıyordu. coverageFile.paths içinde zaten bulunan yollar çalışmayı sürdürür.
VS Code için Coverage Studio 1.2026.9 — Aramanızı, Oturumunuzu ve Son Çalıştırmanızı Koruyan Yeniden Yüklemeler
2026-09-30
Düzeltildi
- Kapsam yeniden yüklendiğinde arama kutusu sorgusunu ve odağını korur. Her yeniden yükleme onu boşaltıyordu, çoğu kez sorgu hâlâ yazılırken.
< 80% gibi bir sorgu, eşleştiği risk noktalarını da tutar. - Bir kapsam oturumu artık aynı çalıştırmayı iki kez saymıyor. Değişmemiş raporların her yeniden yüklenmesi onları yeniden ekliyor ve her isabet sayısı ikiye katlanıyordu. Bir oturum artık her rapor kümesini bir kez tutar.
- CI referansı artık bir yüklemeyi bekletmiyor. Önce yükleme çizilir, karşılaştırma ardından gelir. Referans bir kez hazırlanır ve raporu ile ayarlar aynı kaldıkça saklanır; URL'ye ulaşılamadığında ise daha önce getirilen kopya kullanılır.
- Değişen rapor dosyalarının denetimi aynı anda yalnızca tek bir geçiş çalıştırır. Yavaş bir ağ sürücüsünde iki geçiş aynı değişikliği görüyor ve kapsam iki kez yükleniyordu.
- “Son çalıştırmadan beri”, değişmemiş raporların yeniden yüklenmesinden sonra da kalır. Bir ayar değişikliği ya da yenileme, ekrandaki çalıştırmayı kendi son çalıştırması yapıyor ve bir önceki çalıştırmadan bu yana olan her değişiklik kayboluyordu. Böyle bir yeniden okuma artık geçmişte de tutulmaz.
Değiştirildi
- Seçtiğiniz bir kapsam dosyası ve bir test çalıştırmasının yazdığı rapor sizin için hatırlanır;
.vscode/settings.json dosyasına yazılmaz. O dosya çoğu kez commit edilir; dolayısıyla bir test çalıştırması depoda kimsenin istemediği bir değişiklik bırakıyordu. coverageFile.paths içinde zaten bulunan yollar çalışmayı sürdürür.
Visual Studio için Coverage Studio 1.2026.7 — Tam Olarak Adlandırdığını Çalıştıran Test Çalıştırmaları
2026-09-30
Düzeltildi
- İki ya da daha fazla test projesi olan bir .NET çözümü artık biri dışında tüm projelerin kapsamını kaybetmiyor.
dotnet test proje başına bir rapor yazıyordu ve hepsi aynı coverage/coverage.cobertura.xml üzerine taşınıyordu; bu yüzden yalnızca sonuncusu yükleniyordu. Böyle bir klasör artık dotnet test komutunu test projesi başına bir kez çalıştırır, her rapor coverage/<Project>/ içine gider ve tek bir projenin çalıştırılması yalnızca o projenin raporunu değiştirir. - Birkaç dosyayı aynı anda kaydetmek, kaydedilen her dosyanın testlerini çalıştırır.
testRun.onSave ile yalnızca son dosyanın testleri çalışıyordu; bir çalıştırma sürerken gelen kaydetmeler saklanır ve ondan sonra birlikte çalıştırılır. - Run This Test with Coverage ve test başına çalıştırmalar tam olarak adlandırdıklarını çalıştırır. .NET filtresi alt dizgeyle eşleştiriyordu:
Total, TotalTax testini de çalıştırıyordu. Artık bir test tam adıyla, bir sınıf ise adı ve ardından gelen bir noktayla çalışır ve iç içe bir sınıftaki test bulunur (Outer+Inner). - Başlığında
(, + ya da $ bulunan bir jest veya vitest testi çalışır. Başlık, düzenli ifade okuyan -t seçeneğine gidiyordu; bu yüzden böyle bir test hiçbir şeyle eşleşmiyor ve hiçbir şey çalışmıyordu. - Run This Test with Coverage, VB ve F# test dosyalarını okur.
Public Sub üstündeki <Fact> ile let ya da member üstündeki [<Fact>] hiç tanınmıyordu. - Bir test çalıştırmasını iptal etmek, başlattığı her süreci sonlandırır. Yalnızca kabuk sonlandırılıyor,
dotnet test onun arkasında çalışmayı sürdürüyordu. Visual Studio'yu kapatmak da çalıştırmayı iptal eder. - Bir kaydetmenin ardından gelen çalıştırma sırasında yazmak artık işaretleri kaydırmıyor. İşaretler, çalıştırmanın ölçtüğü metne sabitlenir.
- Ağ paylaşımındaki bir çözüm testlerini orada çalıştırır. Çalıştırma
C:\Windows içinde başlıyordu, çünkü komut kabuğu bir \\server\share yolunu çalışma klasörü olarak kabul etmez.
VS Code için Coverage Studio 1.2026.8 — Tam Olarak Adlandırdığını Çalıştıran Test Çalıştırmaları
2026-09-30
Düzeltildi
- İki ya da daha fazla test projesi olan bir .NET çözümü artık biri dışında tüm projelerin kapsamını kaybetmiyor.
dotnet test proje başına bir rapor yazıyordu ve hepsi aynı coverage/coverage.cobertura.xml üzerine taşınıyordu; bu yüzden yalnızca sonuncusu yükleniyordu. Böyle bir klasör artık dotnet test komutunu test projesi başına bir kez çalıştırır, her rapor coverage/<Project>/ içine gider ve tek bir projenin çalıştırılması yalnızca o projenin raporunu değiştirir. - Birkaç dosyayı aynı anda kaydetmek, kaydedilen her dosyanın testlerini çalıştırır.
testRun.onSave ile yalnızca son dosyanın testleri çalışıyordu; bir çalıştırma sürerken gelen kaydetmeler saklanır ve ondan sonra birlikte çalıştırılır. - Run This Test with Coverage ve test başına çalıştırmalar tam olarak adlandırdıklarını çalıştırır. .NET filtresi alt dizgeyle eşleştiriyordu:
Total, TotalTax testini de çalıştırıyordu. Artık bir test tam adıyla, bir sınıf ise adı ve ardından gelen bir noktayla çalışır ve iç içe bir sınıftaki test bulunur (Outer+Inner). - Başlığında
(, + ya da $ bulunan bir jest veya vitest testi çalışır. Başlık, düzenli ifade okuyan -t seçeneğine gidiyordu; bu yüzden böyle bir test hiçbir şeyle eşleşmiyor ve hiçbir şey çalışmıyordu. - İçinde tırnak bulunan bir test başlığı terminale bütün olarak ulaşır. Tırnak içinde
\" bulunan bir komut daha ilkinde dağılıyordu. - Run This Test with Coverage, VB ve F# test dosyalarını okur.
Public Sub üstündeki <Fact> ile let ya da member üstündeki [<Fact>] hiç tanınmıyordu. - Bir süreç başlatmadan biten bir test görevi artık Run Tests with Coverage komutunu sonsuza dek bekletmiyor. Komut biter ve çalıştırmanın hiçbir şey yazmadığını söyler.
Visual Studio için Coverage Studio 1.2026.6 — Bir Satırı Hangi Testlerin Çalıştırdığı, Her Kaydetmeden Sonra Kapsam ve Bir CI Referansı
2026-09-29
Eklendi
- Bu satırı hangi testlerin çalıştırdığı. Raporun bunu kaydettiği yerde —
--show-contexts ile coverage.py, OpenCover'ın izlenen metotları, test başına yazılmış bir lcov izleme dosyası — bir fonksiyonun CodeLens'i onu kaç testin çalıştırdığını söyler, Show Tests That Ran This Line ise onları en yoğundan başlayarak listeler ve seçtiğinizi açar. Bir dotnet test çalıştırması için testRun.perTest testleri sınıf sınıf çalıştırır; böylece her rapor onu hangi sınıfın yazdığını söyler.
- Her kaydetmeden sonra kapsam.
testRun.onSave ile bir kaynak dosyayı kaydetmek, onu kapsayan testleri kapsamla birlikte çalıştırır ve kenar çubuğu bunu izler. Bir .NET çözümünde yalnızca kaydedilen dosyanın projesine başvuran test projeleri çalışır; art arda birkaç kaydetme tek bir çalıştırmadır.
- Run This Test with Coverage. İmleç bir test metodunda, bir test sınıfında veya
describe içinde ya da bir test dosyasındayken tek bir komut tam olarak onu kapsamla çalıştırır — dotnet test --filter, jest/vitest -t veya bir pytest düğüm kimliği — ve yazdığını yükler. Test metinden okunur; bu yüzden bir dil hizmeti olmadan C#, VB, F#, JavaScript, TypeScript ve Python için çalışır.
- Exclude from Coverage ve iki .NET filtresi. Kapsam ağacındaki bir satıra sağ tıklamak ya da açık dosyada Exclude This File from Coverage, dosyayı veya klasörü
fuciniCoverage.ignore ayarına ekler ve o her toplamdan çıkar. ignore.namespaces bir ad alanının dosyalarını dışarıda bırakır (*.Migrations), ignore.attributes ise bir özniteliğin altındaki sınıfı, metodu veya özelliği — varsayılan olarak OpenCover, dotCover ve dönüştürülmüş bir lcov'un dikkate almadığı ExcludeFromCodeCoverage.
- Exclude Selection from Coverage. Satırları seçin ve ampulden ya da düzenleyicinin bağlam menüsünden alın: bir .NET sınıfının, metodunun veya özelliğinin üstüne
[ExcludeFromCodeCoverage] yazar — dosya System.Diagnostics.CodeAnalysis ad alanını zaten içe aktarıyorsa kısa biçimde — başka yerlerde ise dilin kendi yorum işaretiyle LCOV_EXCL_LINE ya da bir LCOV_EXCL_START/STOP çifti. Zaten var olan bir işaret ikilenmez.
- Ad alanları, sınıflar ve metotlar. Sınıflarını adlandıran bir .NET raporu için — Cobertura, Coverlet, OpenCover — bir Folders / Namespaces açılır listesi aynı çalıştırmayı ad alanı, sınıf ve metoda göre, aynı sıralama ve filtreyle gösterir; bir metot satırı dosyayı o metotta açar.
<>c ve async durum makineleri gibi derleyicinin ürettiği türler, üretildikleri sınıfın içine katlanır.
- Kapsam ağacının üstünde bir arama kutusu. Adı veya yolu hepsini içeren satırları tutmak için sözcükler, rakamı koşulu sağlayan satırları tutmak için bir karşılaştırma yazın —
< 80%, lines >= 90, branches = 0; ikisi birlikte ikisini de ister. Metot satırları ve risk noktaları da aranır; Escape temizler.
- Run Native Project with Coverage. Tools menüsünden başlangıç C++ projesi: bir ClangCL projesi clang'ın kapsam enstrümantasyonuyla
coverage/native/ içine yeniden derlenir, çalıştırılır ve raporu yüklenir; başka her araç takımı, kuruluysa OpenCppCoverage altında çalışır; ikisi de mümkün değilse bir cümle neyin kurulacağını söyler.
- Kapsam oturumları ve bir eğilim. Start Coverage Session ile o andan sonra yüklenen her çalıştırma öncekilere eklenir — satırlar, dallar ve fonksiyonlar aynı şekilde: herhangi birinin çalıştırdığı şey kapsanmış sayılır — böylece birim testleri, entegrasyon testleri ve uygulamada bir gezinti birlikte neye ulaştıklarını gösterir. Araç çubuğunun altında, kaydedilmiş geçmişin satır kapsamı bir eğilim olarak çizilir, çalıştırma başına bir nokta.
- Compare Two History Runs, VS Code'daki gibi: saklanan iki çalıştırmayı seçin; aralarında değişen dosyalar, hangisi önce seçilmiş olursa olsun eskiden yeniye listelenir.
- Compare with CI Baseline.
baseline.report, ana dalınızın derlemesinin yayımladığı raporu adlandırır — remote.headers ile getirilen bir URL ya da indirilmiş bir dosya — ve her yükleme onunla ölçülür: durum çubuğunun kartı bu çalıştırmanın nerede durduğunu söyler, Compare with CI Baseline ise değişen dosyaları listeler. Referans, çalıştırmayla aynı hariç tutma listesinden geçer; böylece toplamlar eşit koşullarda karşılaştırılır.
- Nerede bulunurlar. Yeni komutlar Tools > Coverage Studio altında ve düzenleyicinin bağlam menüsündedir; Show Tests That Ran This Line aynı zamanda Ctrl+Shift+U, T kısayoludur, Exclude Selection from Coverage ise bir ampul eylemidir.
Düzeltildi
- Bir test çalıştırmasının raporu artık kullanıcı ve makine adınızı taşımıyor. Microsoft'un Code Coverage toplayıcısı raporunu
<user>_<machine>_<stamp>.cobertura.xml olarak adlandırır ve bu ad ağaçta ve her ekran görüntüsünde duruyordu; rapor artık yüklenmeden önce coverage.cobertura.xml olarak yeniden adlandırılır.
- Üretilmiş bir dosyanın
fuciniCoverage.ignore tarafından dışarıda bırakıldığı söyleniyordu. Dışarıda bırakılan her dosya artık onu dışarıda bırakan ayar altında sayılır — ignore, ignore.generated veya ignore.namespaces — böylece gösterilen ad, değiştirilmesi gereken addır.
- Test başına yazılmış bir lcov izleme dosyası, dosya başına tek kayıt olarak okunur, test bölümleri toplanarak, VS Code'un okuduğu gibi; önceden her testin kaydı ayrı bir dosyaydı.
- Günlük, bir ayrıştırıcının neyi dışarıda bıraktığını söyler. Bir ayrıştırıcının enstrümante edecek hiçbir şey bulamadığı dosyalar (
FUCINI_PARSE_030) ve bir raporun kendi boşluklarına dair açıklaması (FUCINI_PARSE_031, OpenCover'ın MissingPdb kaydı) VS Code'un yazdığı gibi günlüğe yazılır.
- Makrolardan oluşan bir başlık dosyası artık ağaçta %100 olarak durmuyor. llvm-cov ve gcov bir makronun kullanımlarını onu tanımlayan satırlara yazar; hariç tutulan satırlardaki dallar ve fonksiyonlar artık satırlarla birlikte gider ve ölçülebilir hiçbir şeyi kalmayan bir dosya çalıştırmadan çıkarılıp çıktıda adıyla belirtilir (
FUCINI_EXCLUDE_001).
- Desteklenmeyen biçim diye reddedilen beş rapor tanınıyor. Kover'ın JaCoCo XML'i, bir Stryker.NET raporu, bir NCover raporu, eski bir SimpleCov resultset'i ve çok sayıda boş dosya içeren bir SonarQube raporu artık başlarında taşıdıklarıyla tanınır. Yollarında
cobertura sözcüğü geçen bir Clover veya SonarQube raporu artık Cobertura olarak okunmaz.
- Onları yazan araçlarla uyuşan sayılar. Bir MC/DC derlemesinin dal değeri
llvm-cov report ile eşleşir; LCOV 2 istisna dalları (BRDA:12,e0,1,3) sayılır; bir llvm-cov fonksiyonu yalnızca onu tanımlayan dosyada bildirilir; iki test ikilisinin listelediği bir Go bloğu sayımlarını toplar; iki sınıfın bildirdiği bir Cobertura kararı ve iki kez listelenen bir JaCoCo satırı tüm kollarını bir kez korur.
- Daha küçükler. Yazılırken yarıda kesilmiş bir izleme dosyası artık bir dosya kaybetmez; birkaç
.gcda dosyası üzerinde gcov -t her biri için bir dosya verir, şablon örneklemeleri bir kez okunur ve gcov -H çıktısındaki 1.20k gibi sayımlar korunur; GNATcoverage dosyalarının hepsi artık kapsamlarından bu yana değişmiş olarak bildirilmez; bekleyen bir Stryker mutantı veya yarıda kesilmiş bir PIT çalıştırması artık puanın aleyhine sayılmaz.
- Ayarlar dosyasında elle yapılan bir değişiklik, dosya kaydedildiğinde uygulanır, VS Code'un bir ayar değişikliğini uyguladığı gibi.
VS Code için Coverage Studio 1.2026.7 — Bir Satırı Hangi Testlerin Çalıştırdığı, Her Kaydetmeden Sonra Kapsam ve Bir CI Referansı
2026-09-29
Eklendi
- Bu satırı hangi testlerin çalıştırdığı. Raporun bunu kaydettiği yerde —
--show-contexts ile coverage.py, OpenCover'ın izlenen metotları, test başına yazılmış bir lcov izleme dosyası — bir fonksiyonun CodeLens'i onu kaç testin çalıştırdığını söyler, Show Tests That Ran This Line ise onları en yoğundan başlayarak listeler ve seçtiğinizi açar. Bir dotnet test çalıştırması için testRun.perTest testleri sınıf sınıf çalıştırır; böylece her rapor onu hangi sınıfın yazdığını söyler.
- Her kaydetmeden sonra kapsam.
testRun.onSave ile bir kaynak dosyayı kaydetmek, onu kapsayan testleri kapsamla birlikte çalıştırır ve kenar çubuğu bunu izler. Bir .NET çözümünde yalnızca kaydedilen dosyanın projesine başvuran test projeleri çalışır; art arda birkaç kaydetme tek bir çalıştırmadır.
- Run This Test with Coverage. İmleç bir test metodunda, bir test sınıfında veya
describe içinde ya da bir test dosyasındayken tek bir komut tam olarak onu kapsamla çalıştırır — dotnet test --filter, jest/vitest -t veya bir pytest düğüm kimliği — ve yazdığını yükler. Test metinden okunur; bu yüzden bir dil hizmeti olmadan C#, VB, F#, JavaScript, TypeScript ve Python için çalışır.
- Exclude from Coverage ve iki .NET filtresi. Kapsam ağacındaki bir satıra sağ tıklamak ya da açık dosyada Exclude This File from Coverage, dosyayı veya klasörü
fuciniCoverage.ignore ayarına ekler ve o her toplamdan çıkar. ignore.namespaces bir ad alanının dosyalarını dışarıda bırakır (*.Migrations), ignore.attributes ise bir özniteliğin altındaki sınıfı, metodu veya özelliği — varsayılan olarak OpenCover, dotCover ve dönüştürülmüş bir lcov'un dikkate almadığı ExcludeFromCodeCoverage.
- Exclude Selection from Coverage. Satırları seçin ve ampulden ya da düzenleyicinin bağlam menüsünden alın: bir .NET sınıfının, metodunun veya özelliğinin üstüne
[ExcludeFromCodeCoverage] yazar — dosya System.Diagnostics.CodeAnalysis ad alanını zaten içe aktarıyorsa kısa biçimde — başka yerlerde ise dilin kendi yorum işaretiyle LCOV_EXCL_LINE ya da bir LCOV_EXCL_START/STOP çifti. Zaten var olan bir işaret ikilenmez.
- Ad alanları, sınıflar ve metotlar. Sınıflarını adlandıran bir .NET raporu için — Cobertura, Coverlet, OpenCover — bir Folders / Namespaces açılır listesi aynı çalıştırmayı ad alanı, sınıf ve metoda göre, aynı sıralama ve filtreyle gösterir; bir metot satırı dosyayı o metotta açar.
<>c ve async durum makineleri gibi derleyicinin ürettiği türler, üretildikleri sınıfın içine katlanır.
- Kapsam ağacının üstünde bir arama kutusu. Adı veya yolu hepsini içeren satırları tutmak için sözcükler, rakamı koşulu sağlayan satırları tutmak için bir karşılaştırma yazın —
< 80%, lines >= 90, branches = 0; ikisi birlikte ikisini de ister. Metot satırları ve risk noktaları da aranır; Escape temizler.
- Kapsam oturumları ve bir eğilim. Start Coverage Session ile o andan sonra yüklenen her çalıştırma öncekilere eklenir — satırlar, dallar ve fonksiyonlar aynı şekilde: herhangi birinin çalıştırdığı şey kapsanmış sayılır — böylece birim testleri, entegrasyon testleri ve uygulamada bir gezinti birlikte neye ulaştıklarını gösterir. Araç çubuğunun altında, kaydedilmiş geçmişin satır kapsamı bir eğilim olarak çizilir, çalıştırma başına bir nokta.
- Compare with CI Baseline.
baseline.report, ana dalınızın derlemesinin yayımladığı raporu adlandırır — remote.headers ile getirilen bir URL ya da indirilmiş bir dosya — ve her yükleme onunla ölçülür: durum çubuğunun kartı bu çalıştırmanın nerede durduğunu söyler, Compare with CI Baseline ise değişen dosyaları listeler. Referans, çalıştırmayla aynı hariç tutma listesinden geçer; böylece toplamlar eşit koşullarda karşılaştırılır.
Düzeltildi
- Bir test çalıştırmasının raporu artık kullanıcı ve makine adınızı taşımıyor. Microsoft'un Code Coverage toplayıcısı raporunu
<user>_<machine>_<stamp>.cobertura.xml olarak adlandırır ve bu ad ağaçta ve her ekran görüntüsünde duruyordu; rapor artık yüklenmeden önce coverage.cobertura.xml olarak yeniden adlandırılır.
- Terminal PowerShell olduğunda bir test çalıştırması Windows'ta başarısız oluyordu.
Code Coverage;Format=cobertura etrafındaki tırnaklar pwsh yolunda kayboluyordu ve o da ; işaretini komutun sonu olarak okuyordu; tarif artık terminale sözcük sözcük verilir ve başlattığı kabuk için tırnaklanır.
- Üretilmiş bir dosyanın
fuciniCoverage.ignore tarafından dışarıda bırakıldığı söyleniyordu. Dışarıda bırakılan her dosya artık onu dışarıda bırakan ayar altında sayılır — ignore, ignore.generated veya ignore.namespaces — böylece gösterilen ad, değiştirilmesi gereken addır.
- Makrolardan oluşan bir başlık dosyası artık ağaçta %100 olarak durmuyor. llvm-cov ve gcov bir makronun kullanımlarını onu tanımlayan satırlara yazar; hariç tutulan satırlardaki dallar ve fonksiyonlar artık satırlarla birlikte gider ve ölçülebilir hiçbir şeyi kalmayan bir dosya çalıştırmadan çıkarılıp çıktıda adıyla belirtilir (
FUCINI_EXCLUDE_001).
- Desteklenmeyen biçim diye reddedilen beş rapor tanınıyor. Kover'ın JaCoCo XML'i, bir Stryker.NET raporu, bir NCover raporu, eski bir SimpleCov resultset'i ve çok sayıda boş dosya içeren bir SonarQube raporu artık başlarında taşıdıklarıyla tanınır. Yollarında
cobertura sözcüğü geçen bir Clover veya SonarQube raporu artık Cobertura olarak okunmaz.
- Onları yazan araçlarla uyuşan sayılar. Bir MC/DC derlemesinin dal değeri
llvm-cov report ile eşleşir; LCOV 2 istisna dalları (BRDA:12,e0,1,3) sayılır; bir llvm-cov fonksiyonu yalnızca onu tanımlayan dosyada bildirilir; iki test ikilisinin listelediği bir Go bloğu sayımlarını toplar; iki sınıfın bildirdiği bir Cobertura kararı ve iki kez listelenen bir JaCoCo satırı tüm kollarını bir kez korur.
- Daha küçükler. Yazılırken yarıda kesilmiş bir izleme dosyası artık bir dosya kaybetmez; birkaç
.gcda dosyası üzerinde gcov -t her biri için bir dosya verir, şablon örneklemeleri bir kez okunur ve gcov -H çıktısındaki 1.20k gibi sayımlar korunur; GNATcoverage dosyalarının hepsi artık kapsamlarından bu yana değişmiş olarak bildirilmez; bekleyen bir Stryker mutantı veya yarıda kesilmiş bir PIT çalıştırması artık puanın aleyhine sayılmaz.
Değiştirildi
- Her yüklemede artık
FUCINI_ENCODING_001 yok. Bayt sırası işareti olmayan bir rapor, her aracın yazdığı gibi UTF-8 olarak okunur ve bunu söyleyen bir not çıkmaz.
Visual Studio için Coverage Studio 1.2026.5 — Raporun Belireceği Yerde İzleme
2026-09-28
Eklendi
- Joker karakterli göreli bir girdi her derinlikte aranır.
*.lcov.info, coverageFile.paths içinde, dosyayı temel klasörün altında nerede olursa olsun bulur; VS Code onu hep böyle okumuştu. Köklü bir girdi — ${workspaceFolder}/build/coverage-merged/*.lcov.info, her derinlik için ** — eskisi gibi tam söylediği yere bakar.
- Raporun belireceği yerde izleme. İzleme, ayarların adlandırdığı klasörleri kapsar; orada henüz bir rapor olsun ya da olmasın: köklü bir dosyanın klasörü, joker karakterden önceki klasörler — desen alt klasörlere uzandığında altlarındaki her şeyle birlikte — ve göreli bir joker karakter için temel klasör. Bir derlemenin oraya yazdığı rapor kendiliğinden yüklenir; o klasörlerdeki başka herhangi bir dosyaya yazılması yoksayılır.
Düzeltildi
- Bir llvm-cov JSON raporu desteklenmeyen biçim diye reddediliyordu. Biçim ilk 4096 karakterden tanınır ve llvm-cov,
"type": "llvm.coverage.json.export" işaretini en sona yazar; ilk dosya kaydı çok sayıda dal ve iç içe makro genişletmesi taşıyan bir dışa aktarımın o baş kısmında tanınabilir başka hiçbir şey yoktu. Böyle bir rapor artık başka hiçbir biçimde bulunmayan açılışından, {"data":[{"files":[, tanınıyor.
- Aynısı
gcov --json-format için. gcov bir dosyanın işlevlerini satırlarından önce yazar ve bir düzine işlevli bir dosyanın incelenen baş kısmında da hiç satır girdisi yoktur; belgenin kendi gcc_version anahtarı artık onu tanımlıyor.
VS Code için Coverage Studio 1.2026.6 — Tam Yolda Joker Karakter, Raporun Belireceği Yerde İzleme
2026-09-28
Eklendi
- Mutlak bir
coverageFile.paths girdisinde joker karakter. ${workspaceFolder}/build/coverage-merged/*.lcov.info o klasördeki her böyle dosyayı yükler ve ** her derinlik anlamına gelir: ilk joker karakterden önceki klasörlerde aranır, gerisi onların altındaki desendir; Visual Studio sürümü böyle bir girdiyi hep böyle okumuştu. Daha önce mutlak bir girdi yazıldığı gibi aranıyordu, bu yüzden yıldızlı bir girdi hiçbir şeyle eşleşmiyor — ve joker karakter olduğu için, hiçbir şeyle eşleşmediği de hiç bildirilmiyordu. Oraya daha sonra beliren bir rapor, düz bir girdi gibi izleyici ya da yoklama tarafından yüklenir; hiçbir şeyle eşleşmeyen bir joker karakter bildirilmez, çünkü bir derlemeyi bekliyor olabilir.
Düzeltildi
- Bir llvm-cov JSON raporu desteklenmeyen biçim diye reddediliyordu. Biçim ilk 4096 karakterden tanınır ve llvm-cov,
"type": "llvm.coverage.json.export" işaretini en sona yazar; ilk dosya kaydı çok sayıda dal ve iç içe makro genişletmesi taşıyan bir dışa aktarımın o baş kısmında tanınabilir başka hiçbir şey yoktu. Böyle bir rapor artık başka hiçbir biçimde bulunmayan açılışından, {"data":[{"files":[, tanınıyor.
- Aynısı
gcov --json-format için. gcov bir dosyanın işlevlerini satırlarından önce yazar ve bir düzine işlevli bir dosyanın incelenen baş kısmında da hiç satır girdisi yoktur; belgenin kendi gcc_version anahtarı artık onu tanımlıyor.
Visual Studio için Coverage Studio 1.2026.4 — İki Rapor, Tek Cevap ve Kapsanan Yerde Yeşil
2026-09-26
Eklendi
- Bir dosyanın raporlarını seçin ya da birleştirin. Coverage penceresinde bir dosyaya sağ tıklayıp Choose Coverage Source... öğesini seçin — birden fazla yüklü raporun ölçtüğü dosyalarda sunulur — ya da Tools > Coverage Studio > Choose Coverage Source for This File... komutunu kullanın: her rapor kendi sayılarıyla, ardından Combine them — agree (yalnızca her raporun satırı çalıştırdığı yerde kapsanmış: tek kod tabanı, iki derleyici) ve — union (herhangi birinin çalıştırdığı yerde kapsanmış: tek bir derlemenin birkaç test takımı); dosya, klasörü ya da bir desen için. Raporların uyuşmadığı satırlar kenar boşluğunda ve Annotated Source'ta, her raporun ne dediğiyle birlikte turkuazdır; satır, raporları ve tartışmalı satır sayısını adlandırır, durum çubuğu ve iki kart da sayıların nereden geldiğini söyler.
- Kırmızı, kehribar ve yeşil. Gutter: Coverage, kırmızı ve kehribarın yanında kapsanan her satırı yeşile boyar — %100'deki bir dosyanın yeşil olmasını bekleyen herkes için mod. Isı haritasının beş tonu birer ayardır (
heatmap.colors, heatmap.colorsDark) ve ayarlar penceresi her rengi seçilirken önizler.
Düzeltildi
- Dosyanın durum çubuğundaki sayısı, kartındaki sayıdır. İçinde hiçbir şey olmayan bir metrik — karar içermeyen bir dosyada MC/DC — öğede %100 olarak sayılıyor, açtığı kartta ise hiç sayılmıyordu.
- Yalnızca sabitlerden oluşan bir başlık artık %0 ya da %100 göstermiyor.
excludeComments açıkken önişlemci yönergeleri, yorumlar gibi, kod değil sayılır.
VS Code için Coverage Studio 1.2026.5 — İki Rapor, Tek Cevap ve Kapsanan Yerde Yeşil
2026-09-26
Eklendi
- Bir dosyanın raporlarını seçin ya da birleştirin.
coverageFile.sources, yüklü birkaç rapordan hangisinin bir dosya adına konuşacağına dosya başına karar verir — ya da onları birleştirir: agree bir satırı yalnızca her raporun onu çalıştırdığı yerde kapsanmış sayar ve uyuşmadıkları satırları turkuazla işaretler; union ise herhangi birinin çalıştırdığı yerde. Coverage görünümündeki bir satırda ya da açık dosya için Choose Coverage Source... kuralı sizin yerinize yazar. Ücretli planlara dahildir; Community'de en yeni rapor karar verir.
- Kırmızı, kehribar ve yeşil, ve tek tıkla kenar boşluğu modu.
coverage modu kapsanan satırları yeşile boyar; ısı haritasının tonları, ayarlar panelinde canlı önizlemesi olan ayarlardır; bir durum çubuğu düğmesi ve Alt+G kenar boşluğunu sırayla kapalı, kapsanmayan, kapsam ve ısı haritası arasında dolaştırır.
Düzeltildi
- Dosyanın durum çubuğundaki sayısı, kartındaki sayıdır. İçinde hiçbir şey olmayan bir metrik — karar içermeyen bir dosyada MC/DC — öğede %100 olarak sayılıyor, açtığı kartta ise hiç sayılmıyordu.
- Yalnızca sabitlerden oluşan bir başlık artık %0 ya da %100 göstermiyor.
excludeComments açıkken önişlemci yönergeleri, yorumlar gibi, kod değil sayılır.
Visual Studio için Coverage Studio 1.2026.3 — Koddan Başka Seçilecek Bir Şey Yok
2026-09-24
Değiştirildi
- Licence iletişim kutusu yalnızca kodu sorar. Dört plan düğmesi kaldırıldı: bir abonelik ya da davet kodu bir havuzu adlandırır ve havuz kendi planını bilir; dolayısıyla bir kişinin kodun kendisinden daha iyi verebileceği bir yanıt yoktu — üstelik Pro hâlâ seçiliyken yapıştırılan bir Business daveti yanlış plan gerekçesiyle reddediliyordu. Kodu yapıştırın ve Activate düğmesine basın.
VS Code için Coverage Studio 1.2026.4 — Koddan Başka Seçilecek Bir Şey Yok
2026-09-24
Değiştirildi
- Enter Subscription Code yalnızca kodu sorar. Plan sorusu kaldırıldı: kod bir havuzu adlandırır ve havuz kendi planını bilir; dolayısıyla gerisini sunucu üstlenir ve bir kodu artık yanlış plana ait diye reddetmez. E-postalardaki tek tıklamalık bağlantılar değişmedi; etkinleştirme e-postalarında artık bir "planınızı seçin" adımı yok ve aynı kod, VS Code gerekmeden Visual Studio için Coverage Studio'yu etkinleştirir.
Visual Studio için Coverage Studio 1.2026.2 — Her Test Çalıştırması, Her Rapor ve Neyin Değiştiği
2026-09-24
Eklendi
- Her test çalıştırmasından sonra kapsam. Collect Coverage in Test Explorer…, çözümün yanına Microsoft'un Cobertura toplayıcısını içeren tek bir
.runsettings koyar — Tools → Options → Test → Auto detect runsettings files açıkken kendiliğinden alınır ya da Test → Configure Run Settings altında bir kez seçilir; o andan itibaren her Test Explorer çalıştırması test projesinin altına bir rapor yazar ve rapor belirdiği anda, ayarların adlandırdığı her şeyle birleştirilerek yüklenir. Hiçbir şey Test Explorer'a bağlanmaz, bu yüzden Visual Studio 2026 ve Microsoft.Testing.Platform oldukları gibi çalışır. Run Tests with Coverage, dotnet test, vitest, jest, pytest, go, cargo, maven, gradle, phpunit ve ctest'i tanır, bunları Output penceresinde kapsam açık olarak çalıştırır ve yazdıklarını yükler; coverlet.collector olmayan bir test projesi, test SDK'sının birlikte getirdiği toplayıcıyla çalıştırılır.
- Son çalıştırmadan bu yana. Her yükleme bir öncekiyle karşılaştırılır: çalışmaya başlayan ya da çalışmayı bırakan her satırda kenar çubuğunda bir üçgen, puanın yanında eğilim ve sayıları değişen dosyalar için Compare with Last Run.
history.enabled çalıştırmaları yeniden başlatmalar boyunca saklar; gitDiff.enabled çalıştırmayı dalınızın değiştirdiği satırlara indirger.
- Eşik denetimleri ve Error List. Check Coverage Thresholds çalıştırmayı
threshold.* anahtarlarına göre değerlendirir; compliance.diagnostics, problems.enabled, problems.perLine ya da deadCode.enabled ile bulgular Error List'te derleyicininkilerin yanında durur ve her biri dosyasını açar.
- Raporlar, dışa aktarmalar ve bir rozet. Show Annotated Source etkin dosyayı belge alanında bir sayfa olarak açar — her satır kendi renginde, bulgular yanında — ve düzenleyiciyle her iki yönde birlikte kayar. Open HTML Report ve Generate Full HTML Report çalıştırmayı
htmlReport.outputDir içine yazar ve tarayıcıyı açar. Export Coverage Report… dosya başına ya da işlev başına CSV, Markdown, LCOV, Cobertura, SARIF, bir SVG rozeti ya da Fucini JSON yazar. Generate Coverage Badge rozeti depoda tutar, badge.autoUpdate ile her yüklemeden sonra.
- Risk hotspots ve satır süzgeçleri Coverage penceresinde, VS Code'daki gibi: karmaşık kodun az kapsamla buluştuğu işlevler, en kötüsü başta; ve sıralamanın yanında tüm dosyalar, boşluklu dosyalar, test edilmemiş dosyalar ya da son çalıştırmadan beri değişen dosyalar için bir açılır liste.
- Çözüm kökünde bir ayar dosyası. Çözümün yanındaki
fucini-coverage.json, .vscode/settings.json dosyasından sonra okunur ve var olan dosya o olduğunda ayarlar penceresi tarafından yazılır — .vscode klasörü tutmak istemeyen bir ekip için. İki sürüm de onu okur.
- Törensiz .NET.
ignore.generated tasarımcı, üretilmiş, obj\ ve geçiş dosyalarını her toplamın dışında bırakır; testRun.skipWhenTestsFail, bir çalıştırma kırmızı bittiğinde son iyi kapsamı ekranda tutar.
Bu sürümde henüz yok
- Test Coverage paneli bir VS Code API'sidir ve Solution Explorer rozet gösteremez. Compare Two History Runs, aboneler istediğinde gelecek.
Coverage Studio for VS Code 1.2026.3 — Hotspots, Süzgeçler ve Paketsiz .NET
2026-09-24
Eklendi
- Hangi dosyaların gösterileceği. Coverage görünümünün araç çubuğunda, sıralamanın yanında ikinci bir açılır liste: tüm dosyalar, boşluklu dosyalar, test edilmemiş dosyalar ya da sayıları önceki çalıştırmadan beri değişen dosyalar. Klasörler dosyalarını izler ve kendi sayılarını korur. Her planda.
- Risk hotspots. Ağacın altında: karmaşık kodun az kapsamla buluştuğu işlevler, en kötüsü başta, her biri dosyasını işlevde açar. Bir işlev CRAP puanıyla —
hotspots.crapThreshold, varsayılan 30, metriğin yazarlarının önerdiği değer — ya da tek başına döngüsel karmaşıklıkla, hotspots.complexityThreshold, varsayılan olarak kapalı, listeye girer. Community sayıyı ve en kötü puanı görür; sıralı liste Pro'dadır.
- Paketsiz
dotnet test. Run Tests with Coverage önce proje dosyalarını okur: hiçbiri Coverlet'e başvurmuyorsa çalıştırma Microsoft'un kendi toplayıcısını kullanır — --collect:"Code Coverage;Format=cobertura" — ki bu Microsoft.NET.Test.Sdk ile birlikte gelir, ve raporu Coverlet'inki gibi yüklenir.
- Üretilmiş .NET dosyaları dışarıda bırakılır. Varsayılan olarak açık olan
ignore.generated, *.Designer.cs, *.g.cs, *.generated.cs, *.razor.g.cs, AssemblyInfo, genel using'ler, Migrations/ ve obj/ altındaki her şeyi her toplamdan, sayfadan ve dışa aktarmadan çıkarır. Kimsenin test etmediği bir tasarımcı dosyası artık çözüme eşik denetimini kaybettirmez.
- Başarısız bir çalıştırma son iyi kapsamı korur.
testRun.skipWhenTestsFail ile, başarısız bir testle biten bir çalıştırma kapsamı ekranda olduğu gibi bırakır ve bunu Output bölmesinde söyler. Varsayılan olarak kapalı.
Değiştirildi
- Bir Test Explorer çalıştırması kendiliğinden bulunur. Hiçbir şey yapılandırılmamışken bilinen adlar artık yalnızca çalışma alanı klasörünün kendisininkini değil, her test projesinin
TestResults/<run>/ klasörünü ve Coverlet'inkinin yanında Microsoft'un toplayıcısının <user>_<machine>_<date>.cobertura.xml dosyasını da içerir. Testleri Visual Studio'da çalıştırılmış bir .NET çözümü kapsamını ilk açılışta gösterir; her çalıştırma klasörü yüklenir ve birleştirme her dosya için en yeni çalıştırmanın sözünü korur.
Visual Studio için Coverage Studio 1.2026.1 — Aynı kapsam, öteki IDE'de
2026-09-23
Eklendi
- Visual Studio 2022 ve 2026 için ikinci bir uzantı — Community, Professional ve Enterprise. VS Code sürümüyle aynı okuyucu; böylece aynı rapor her iki düzenleyicide de basamağına kadar aynı sayıları verir; ve aynı
fuciniCoverage.* ayarları, .vscode/settings.json dosyasından ve makinede varsa VS Code'un kendi kullanıcı ayarlarından okunur. Visual Studio'nun kendi kod kapsamını kullanmaz: Visual Studio 2022'de bu bir Enterprise özelliğidir ve Community ile Professional'da IDE'nin göstereceği tek kapsam budur. - Düzenleyicide: satır başına bir kenar çubuğu — kırmızı hiç çalışmadı, kehribar kısmen, ziyaret sayısına göre ısı haritası — satır içi isabet sayıları, her işlevin üstünde kapsamı, karmaşıklığı, CRAP puanı ve MC/DC'siyle bir satır, kaydırma çubuğunda şeritler, hangi dalın alınmadığını söyleyen bir üzerine gelme ve rapordan sonra düzenlediğiniz satırda bir nokta.
- Coverage penceresi (View → Other Windows → Coverage): her dosya metrikleriyle ve hepsinin üzerinde tek bir puan, sıralanabilir, ölçülmemiş dosyalar altta; durum çubuğunun
Coverage ve File öğeleri, her biri tam kartı açar. - Komutlar Tools → Coverage Studio altında,
Ctrl+Shift+U sonrası iki vuruşlu akorlarla: bir sonraki ve önceki kapsanmamış satır için N/P, bir sonraki kısmen test edilmiş karar için B, yeniden yüklemek için R. İzleme modu, derlemenizin yazdığı dosya değiştiğinde yeniden yükler. - Getting Started, her biri için düğmesi olan altı adım, 18 dilde; ilk seferde kendiliğinden açılır.
- Ayarlar, Coverage penceresinin araç çubuğundaki dişliden; bu sürümün kullanıcı ayarlarını ya da klasörün
.vscode/settings.json dosyasını yazar ve düzenlediği dosyanın yorumlarını korur. - Lisans: her ücretli plana dahil. VS Code için Coverage Studio'nun etkinleştirildiği bir makinenin başka bir şeye ihtiyacı yoktur — anahtar kendiliğinden bulunur; başka her yerde Tools → Coverage Studio → Licence… etkinleştirme e-postanızdaki abonelik kodunu alır. Abonelik olmadan kapsam okunmaz: Visual Studio'da ücretsiz katman yoktur.
Bu sürümde henüz yok
- Run Tests with Coverage ve Test Coverage paneli VS Code API'leridir; Solution Explorer rozet gösteremez. Annotated Source görünümü, HTML raporu ve dışa aktarmalar, Check Thresholds, Error List girdileri, geçmiş ve eğilim ile diff kapsamı abonelerin istediği sırayla gelecek.
Coverage Studio for VS Code 1.2026.2 — Başlarken, ve tek abonelikle iki düzenleyici
2026-09-23
Eklendi
- Bir adım adım kılavuz. Get started with Coverage Studio — Help → Welcome → Walkthroughs altında ve kurulumdan sonra kendiliğinden açılır — yeni bir kullanıcıyı altı adımda bir kapsam raporundan kimsenin test etmediği satırlara götürür, her adımda ilgili komut için bir düğmeyle. On sekiz dilin tümünde.
- Kurulum kimliği, Visual Studio için Coverage Studio'nun okuduğu yere bırakılır. Visual Studio sürümü
license.key'deki anahtarı aynı parmak izine göre doğrular ve bu uzantının durum deposunu okuyamaz; artık her etkinleştirmede kimlik uzantının genel deposunun yanına da yazılır, böylece VS Code'da etkinleştirilmiş bir makine Visual Studio'da ikinci bir etkinleştirmeye ihtiyaç duymaz. Rastgele bir UUID, hiçbir şeye bağlı değil, hiçbir yere gönderilmez.
Değiştirildi
- İade aboneliği sona erdirir. Onaylanan bir iade ya da ters ibraz artık aboneliği hemen iptal eder ve etkinleştirme kodu artık anahtar vermez; iadeler müşteri başına birdir. Bir makinede zaten bulunan anahtarlar eskisi gibi kendi süreleri dolana kadar çalışır. İade politikası tam olarak ne olduğunu söyler.
Coverage Studio for VS Code 1.2026.1 — Her Zaman Okunabilen Dosya Adları
2026-09-21
Düzeltildi
- Coverage görünümündeki dosya adları her genişlikte okunabiliyor. Ad, satırın küçülen tek parçasıydı — sıradan bir kenar çubuğunda yedi karaktere kadar. Artık tam olarak çiziliyor; metrik sütunları, puan ve çubuk soldan onun altına kayıyor ve yarım bir sayı asla tam bir sayı gibi okunmasın diye kesim yerinde soluyor. Her değer hâlâ satırın ipucunda duruyor.
- “Dosya değişti” işareti dosyaya ayak uyduruyor. Bir yüklemeden sonra ilk düzenlemeyi ve ilk geri almayı izliyor, ardından bir sonraki yüklemeye kadar hiçbir şey onu kıpırdatmıyordu. Artık her kaydetme ve diskteki her değişiklik ulaşıyor.
- Coverage görünümünün araç çubuğu artık düğme etiketlerini bölmüyor. Dar bir kenar çubuğunda araç çubuğu artık denetimlerinin arasından alt satıra geçiyor ve sıralama kutusu kendi satırına iniyor.
- Kapsam rozeti dışa aktarma seçicisinde de ücretsiz. Generate Coverage Badge SVG rozetini her katmanda zaten yazıyordu; Export Coverage Report… ise aynı dosyayı Community’de reddediyordu. Artık ikisi de yazıyor.
- Show Worst-Covered Folders diğer iki liste gibi lisanslanıyor. Üçünün de ücretsiz ve sayılmadığı Community’de de, daha önce verilmiş hiçbir anahtar için de bir şey değişmiyor.
Eklendi
- Desteklenen en düşük sürüm. Uzantı artık yaklaşık haftada bir lisans sunucumuzdan küçük, imzalı bir ilke okuyor. Bir derleme hâlâ desteklenen en eski sürümden daha eskiyse deneme ve ücretsiz katman durur ve güncelleme ister; ücretli bir lisansa tarih bildirilir ve önce bir tolerans süresi boyunca çalışmaya devam eder. Bu okuma sizinle veya kurulumunuzla ilgili hiçbir şey göndermez ve sunucuya ulaşamayan bir kurulum bu nedenle asla durdurulmaz. Bugün belirlenmiş bir alt sınır yok.
Değiştirildi
- Lisans bu sürümden itibaren tescilli. Uzantı MIT koşullarıyla yayımlanıyordu; bu, abonelikle satılan bir ürüne hiç uymuyordu. Yayımlanan derlemeyi planınızın sınırları içinde, ticari amaçla da kurup kullanabilirsiniz; kopyalayamaz, değiştiremez, yeniden dağıtamaz veya tersine mühendislik uygulayamazsınız. Verilerinizden ürettikleri — raporlar, dışa aktarımlar, rozetler — sizindir ve eski atıf koşulu kalktı. Önceki bir sürümün kopyası, birlikte geldiği koşullara tabi kalır.
- Yol eylemleri düğmesi (⋯), bir satırın üzerine gelene kadar yer kaplamıyor. Her satırda ayırdığı 25 piksel artık dosya adına gidiyor; üzerine gelindiğinde adın hemen ardında beliriyor ve satırda hiçbir şey kaymıyor.
Coverage Studio for VS Code 1.2026.0 — Koşullar, mutantlar ve bir satırın ardındaki testler
2026-09-20
Düzeltildi
- LCOV 2 izleme dosyaları her işlevi bir kez listeler.
FN:<satır>,<bitiş satırı>,<ad> artık lcov 2.0’ın yazdığı gibi okunuyor — önceden her işlev iki kez görünüyordu, biri hiç çağrılmamış olarak, biri 0. satırda — ve lcov 2.2’nin FNL:/FNA: çiftleri de onunla birlikte okunuyor.
- Bir C++ şablonu, bir örneklemesi çalışmadı diye artık hiç çalışmamış gibi boyanmıyor; makro dolu bir işlev de her makro için bir tane değil, yine tek bir işlev.
- Onay metinleri kurulumun gerçekte ne gönderdiğini söylüyor: kaynak kodunuzdan aylık bir sayfa yok ve kullanım özetiniz, anahtarınızın verildiği istek kodunu taşıyor.
Eklendi
- Koşul kapsamı kendi başına bir ölçüt.
a && b bir karar ve iki koşuldur; bir test takımı her iki dalı da geçip b değerini hiç yanlış görmeyebilir. Artık kendi satırı, sütunu, dışa aktarımı, rozeti, puandaki ağırlığı (3, dallar ile MC/DC arasında) ve eşiği var — BullseyeCoverage’dan, TRACE32 cond dışa aktarımından ve GCC 14’ün -fcondition-coverage seçeneğinden okunuyor.
- Mutantlar, bulundukları yerde. PIT ve Stryker raporları mutant mutant okunuyor: hayatta kalanlar düzenleyicide kendi satırlarında işaretleniyor, değişiklik ve o satırı çalıştıran testler ipucunda görünüyor, HTML raporunda ve açıklamalı kaynakta listeleniyor.
- Bu satırı hangi testler çalıştırdı.
--show-contexts ile yazılan coverage.py ve -coverbytest ile toplanan OpenCover, bir satıra hangi testlerin ulaştığını söyler; isabet sayısı ipucu bunları adlandırır.
- Çalışmış bir satırın hiç çalışmayan kısmı düzenleyicide renklendiriliyor ve C ile C++ işlevleri, llvm-cov’un zaten taşıdığı dal verisinden sayılan bir karmaşıklık ile CRAP puanı alıyor.
- JaCoCo, Cobertura ve Coverlet projeleri ilk açılışta yükleniyor, hiçbir ayar olmadan — Maven, Gradle ve
dotnet test araçlarının varsayılan olarak yazdığı yerler dâhil.
- Her dosyanın yanında her ölçüt, her genişlikte, puanınızdaki ağırlığına göre sıralı; sığmayan kaybolmak yerine kayıyor — ve siz başka yere bakarken bir izleme dosyası yeniden yüklendiğinde Coverage simgesinde bir sayı beliriyor.
- Gönüllü olabileceğiniz bir ön sürüm kanalı ve düzenleyici başlık çubuğunda, kapsam boyamasını kapatıp tam olarak öncekini geri getiren tek bir düğme.
Değiştirildi
- Bullseye ve TRACE32: dal kapsamı artık koşulları içermiyor. Kararlar dal kapsamı, koşullar koşul kapsamıdır; dolayısıyla böyle bir projenin dal oranı değişir, bileşik puanı da onunla birlikte. Eski puan için
whmWeights.conditions değerini 0 yapın.
- Ücretsiz Community katmanının haftalık bir hakkı var: ölçülen eylemlerin her birinden haftada beş — günde yirmi yerine — ve sınıra gelindiğinde abonelik ya da 7 günlük geçiş önerilir. Hâlihazırda kullanılan bir kurulum eski sınırlarını 30 gün korur ve bu bir kez, tarihiyle birlikte bildirilir.
- Deneme ve ücretsiz katman, lisans sunucusuyla bir kullanım defteri tutar: VS Code’un makine kimliğinin özeti, sürüm, değerlendirmenin başladığı gün ve ölçülen eylemlerin sayaçları — başka hiçbir şey; ücretli lisansta hiç tutulmaz ve hiçbir zaman beklenmez. Telemetri takası artık tek seferlik 30 gündür.
- Aylık kaynak kodu sayfası kaldırıldı — kimse için toplanmıyor, saklanmıyor, gönderilmiyor; önceki bir derlemenin sakladığı sayfa da bu sürümün ilk açılışında siliniyor.
0.2026.82 — Projenize Uyan Eşikler ve Raporlarınızın Taşıdığı Her Şey
2026-09-17
Düzeltildi
- Isı haritası koyu temada doğru yönde okunuyor. Renk geçişi soluk sarıdan koyu kahverengiye uzanıyordu, bu yüzden en sıcak döngü en sönük çubuğa sahipti. Koyu temanın artık kendine ait bir renk geçişi var: sönük zeytin yeşilinden canlı turuncuya.
- MC/DC üzerine gelme bilgisi ayrıntısını yeniden gösteriyor, ve bir llvm-cov kararı koşullarını doğru sayıyor. Güncel VS Code bu bilgiyi tek satıra katlıyordu;
(a && b) || c ise, haklı olarak 3 çiftten 2’si diyen bir başlığın altında %100’lük tek bir koşulla listeleniyordu. - C++ işlevleri sizin yazdığınız gibi adlandırılıyor:
clamp_to<int> ve gearbox::next_gear; bağlayıcının ??$clamp_to@H@@YAHHHH@Z adı değil — llvm-cov, lcov ve gcov için. - Istanbul satır sayıları nyc ile örtüşüyor,
dotnet-coverage XML’i okunuyor, SimpleCov :nocov: satırları bozulmak yerine hariç tutuluyor ve yalnızca özet taşıyan bir rapor, raporlar hangi sırayla okunursa okunsun rakamlarını koruyor. - Çok köklü çalışma alanları: HTML raporu artık bir klasörü iki kez adlandırmıyor, Coverage görünümü bir çalışma alanı klasörüne kendi adıyla başlık veriyor ve bir
pathRemap kuralında ${workspaceFolder} de ${workspaceRoot} gibi kullanılabiliyor.
Eklendi
- Bir raporun taşıdığı her şey gösteriliyor. İşlev çağrıları, nesne kodu ve mutasyon puanı; Coverage görünümünde, HTML raporunda ve CSV ile Markdown dışa aktarımlarında bir sütun, durum çubuğu kartlarında bir satır ve açıklamalı kaynakta bir rozet alıyor — bir raporun taşımadığı ölçüt ise sıfır olarak yazdırılmak yerine dışarıda bırakılıyor.
- Karmaşıklık ve CRAP. Bir rapor döngüsel karmaşıklık taşıyorsa (OpenCover, JaCoCo, Clover, Cobertura), her işlev CodeLens’inde bir CRAP puanı, her dosya yönteme bağlantı veren bir Max CRAP alıyor ve HTML raporu Riskiest Methods listesini veriyor.
- Her biçimden daha fazlası: adlandırılmış dal kolları, hariç tutulan satırlar, satır içi sütun aralıkları, raporun aracı, sürümü ve tarihi ile aracın rapora yazdığı uyarılar.
- İsteğe bağlı ağırlıklar: bileşik puanda nesne kodu ve mutasyon puanı için; siz ayarlamadıkça ikisi de
0.
Değiştirildi
- Varsayılan eşikler artık %100 değil. Ayarlamadığınız bir eşik artık satırlar 80, işlevler 80, bölgeler 75, dallar 70 ve bileşik puan 75 anlamına geliyor; MC/DC, örneklemeler, işlev çağrıları ve nesne kodu için kapı yok — sıradan bir projeden beklenebilecek düzey.
fuciniCoverage.threshold.profile: "safety" her kapıyı tam olarak eskisi gibi yeniden 100’e getirir ve sizin ayarladığınız bir eşik her iki profilin de önüne geçer. Eski varsayılanlara güveniyorduysanız, safety seçeneğini belirleyene kadar daha hoşgörülü değerlendirilirsiniz; daha önce çalışmış bir kuruluma bu, profili ayarlayan bir düğmeyle birlikte bir kez bildirilir. - Kapısı olmayan bir ölçüt nötr bir çizgi gösterir: kartlarda onay işareti veya çarpı yerine; ayrıca ayarlar paneli kararı gerçekten yürürlükteki kapılara göre önizler.
0.2026.81 — Kesin Yüzdeler ve Gönderebileceğiniz Bir Rapor
2026-09-16
Düzeltildi
- Kaydedilmemiş değişiklikleri olan bir arabellekteki kapsam yeniden hizalı. Bir dosyada kaydedilmemiş düzenlemeler varken yüklenen bir çalıştırma, her işareti, vurgulama ipucunu ve CodeLens’i o düzenlemelerin ittiği kadar satır kaydırıyordu. Düzenlemeler artık diskteki dosyadan geri çıkarılır ve bir satırın üstüne yapıştırılan bütün bir satır, o satırı artık düzenlenmiş saymaz.
- Birleştirmeler ve yinelenen LCOV kayıtları toplanır. Daha yeni bir tracefile artık eski çalıştırmanın dal ve MC/DC özetlerini tutmaz ve bir tracefile içinde iki kez listelenen dosya, genhtml’in birleştirdiği gibi birleştirilir.
- Lisans anahtarı kendi makinesinde kalır. Settings Sync onu artık kapsamı engellediği diğer kurulumlara taşımaz; süresi dolan bir Business, Enterprise veya Pro Plus anahtarı, dolduktan sonra 45 güne kadar kendini yeniler.
- Uzak tracefile’lar daha dikkatli alınır.
remote.headers yönlendirmeler boyunca kendi kaynağında kalır, bir alma 30 saniye sonra vazgeçer, bir oturum açma sayfası önbelleğe alınmak yerine reddedilir ve çevrimdışı açılan bir pencere son indirilen kopyayı yükler. Kendi kendine güncelleme yalnızca kendi sürümünü kurar. - Ayrıştırıcılar: llvm-cov satır sayıları
llvm-cov show ile eşleşir, farklı yöntemlerden OpenCover kararları artık birbirinin üzerine yazmaz, xccov, TRACE32 ve EMMA satır rakamlarını korur, bir dosyayı paylaşan Cobertura sınıfları tek dosyadır, JaCoCo toplu raporları okunur ve yol eşleme .. ögesini çözer ve bütün bölümleri karşılaştırır. - Düzenleyicide: geçmiş çalışma alanı başına tutulur, işaretler bir fark düzenleyicisinin HEAD bölmesinde değil gerçek dosyalarda kalır, dosya sonunun ötesindeki satırlar çizilmez, Windows’ta Gezgin rozetleri
C:\… yolları için çalışır ve büyük çalıştırmalarda arama daha hızlıdır.
Eklendi
- Tanılama raporu gönder. Başarısız bir yükleme, uzak alma, birleştirme, geçmiş karşılaştırması veya sohbet bildirimleri bunu sunar. Gönderilecek JSON’u tam olarak önizler, isteğe bağlı 4 KB dosya örneği, yorum ve yanıt adresiyle; siz Gönder’e tıklayana kadar hiçbir şey göndermez.
- Hata raporları. VS Code’un telemetri düzeyi
all veya error olduğunda bir FUCINI_* hatası dosya içeriği, yol veya ad olmadan bildirilir. Üç günlük satırının artık kendi kodu var: FUCINI_REMOTE_002, FUCINI_REMOTE_003 ve FUCINI_GITDIFF_002; her biri kullanıcı kılavuzunda açıklanmıştır.
Değiştirildi
- Her kapsam yüzdesinin iki ondalık basamağı var, yuvarlanmak yerine kesilir:
87.43%, ve 100.00% yalnızca kapsam tam olarak 100 olduğunda. - Eşikler kesin değere göre karar verir. Şimdiye kadar her yüzde önce tam sayıya yuvarlanıyordu, bu yüzden %89,6 bir %90 eşiğini geçiyordu. Yalnızca yuvarlama sayesinde geçen bir proje, kapsamı eşiğe gerçekten ulaşana kadar artık NON-COMPLIANT gösterecek.
- Telemetri günlük. Her kurulum, VS Code’un
all telemetri düzeyinde günde bir küçük lisans iletisi gönderir; telemetry.enabled açıkken kullanım özeti aylık yerine günlük gider. Özellikleri telemetri karşılığında açan kurulumlara koşulları değişmeden önce sorulur.
0.2026.80 — Görünen Bir Güncelleme
2026-09-14
Eklendi
- Coverage görünümü, bir güncelleme çıktığında bunu söylüyor ve söylemeye devam ediyor. Lisans başlığının üstündeki bir çubuk, yeni sürümü sizdeki sürümün yanında, güncelleme bildirimiyle aynı üç düğmeyle gösteriyor: “İndir & Kur”, “Değişiklik Günlüğünü Gör” ve “Bu Sürümü Atla”. Görünümün etkinlik çubuğundaki simgesi de bir rozet taşıyor, böylece görünüm kapalıyken de fark ediliyor. Bildirim yalnızca bir kez, otomatik denetimde çıkıyordu ve başka bir yere tıklamak onu bir gün sonraki denetime kadar gizliyordu; çubuk ise güncelleme kurulana, atlanana ya da
fuciniCoverage.update.checkForUpdates kapatılana kadar kalıyor ve pencere yeniden yüklense de yerinde duruyor.
0.2026.79 — Günde Tek Ping
2026-09-14
Değiştirildi
- Küçük pingler günde en fazla bir kez, birlikte gönderilir. Bir güncelleme, bir lisans değişikliği, yeni bir kapsam biçimi ve okunamayan bir dosya eskiden her biri ayrı bir pingdi ve fark edildiği anda gönderilirdi — bazı kurulumlarda da her oturumda yeniden fark edilirdi: iptal edilmiş bir koltuk her açılışta iptalini bildiriyordu, farklı biçimler kullanan çalışma alanları arasında geçiş yapmak da her seferinde “yeni” bir küme bildiriyordu. Artık toplanıp tek bir ping olarak, günde en fazla bir kez gönderiliyorlar. Bildirecek bir şeyin olmadığı gün hiçbir şey gönderilmez.
- Yalnızca gerçekten değişen bildirilir. Gün içinde değişip eski hâline dönen bir lisans hiçbir şey bildirmez; biçimler de son çalışma alanınınkiler değil, kurulumun şimdiye kadar yüklediği tüm biçimlerdir. Kurulum pingi ve kaldırma bildirimi hâlâ hemen gönderilir ve yeni hiçbir şey toplanmaz.
- VS Code’un kendi telemetri anahtarı artık küçük pingleri de kapsıyor.
telemetry.telemetryLevel off olarak ayarlıysa günlük ping için hiçbir şey toplanmaz ve hiçbir şey gönderilmez; şimdiye kadar buna yalnızca aylık özet ve kaldırma bildirimi uyuyordu. Tek seferlik kurulum pingi değişmedi.
- Düzenleyici boştayken biten bir ay yine de bildirilir. Aylık özet yalnızca kapsam yüklendikten sonra denetleniyordu; bu yüzden artık kullanılmayan bir kurulum son ayını hiç göndermiyordu. Artık VS Code açıkken her saat de denetleniyor — yine yalnızca telemetri açıkken ve yine en fazla 30 günde bir.
Düzeltildi
- Sunucunun reddettiği bir ping artık gönderilmiş sayılmıyor. Sunucudan gelen her yanıt, hata dahil, teslim sayılıyordu; bu yüzden reddedilen bir günlük ping topladıklarını kaybediyor, reddedilen bir kurulum pingi de yeniden denenmiyordu. Artık yalnızca başarılı bir yanıt sayılıyor; reddedilen bir günlük ping ya da aylık özet saklanır ve bir gün sonra yeniden denenir.
0.2026.78 — Yeni On Dört Gün
2026-09-13
Değiştirildi
- Her değerlendirme bir kez yeni 14 gün alır. Bu sürüm ilk kez başladığında, ücretli lisansı olmayan her Pro kurulumunda deneme yeniden açılır — çoktan dolmuş olsun ya da hâlâ birkaç günü kalmış olsun — ve o günden itibaren 14 gün sürer. Bu olduğunda kısa bir bildirim bunu söyler. Ücretli lisans etkilenmez; deneme süresi olmayan Community sürümü de değişmez.
- Ücretli lisans yeşil renkte “Etkinleştirildi” der. Lisans şeridi eskiden bir aboneye “Etkinleştirildi — 30 gün kaldı” gösteriyordu. Abonelik anahtarı ödenen dönemin sonuna kadar geçerlidir ve onunla birlikte yenilenir; bu yüzden o geri sayım, süresi dolmak üzere olan bir deneme gibi okunmaktan hiç vazgeçmeyecekti. Başlık artık yalnızca Etkinleştirildi diyor, tarih ayrıntılarda “Geçerlilik sonu” olarak yer alıyor ve geri sayım yalnızca bir anahtarın süresi dolmadan önceki son haftada, zaten orada olan yakında yenileme notunun yanında geri dönüyor.
0.2026.77 — Kodunuzu Yapıştırın, Hepsi Bu
2026-09-12
Eklendi
- “Enter Subscription Code” — ve başka hiçbir şey sorulmuyor. Planınızı seçin, satın alma e-postanızdaki kodu yapıştırın, onaylayın; lisans anahtarınız sizin için üretilip uygulanır. Şimdiye kadar editörün içinden geçen tek yol değerlendirme formuydu — ad, e-posta, hesap türü, şirket, bir anket — ve bu, çoktan satın almış birinin önüne konacak yanlış formdur. Diğer yol e-postadaki
vscode:// bağlantısıydı; ona temkinli yaklaşmak ürkeklik değil, makul bir davranıştır: böyle bir bağlantı, ziyaret ettiğiniz herhangi bir sayfa tarafından tetiklenebilir — etkinleştirmenin sizden onay istemesinin nedeni de tam olarak budur. Komut, Komut Paleti’nde yer alıyor; ayrıca kapsam panelindeki lisans şeridinde ve etkinleştirme iletişim kutusunda bir düğme olarak duruyor — her durumda, çünkü bir lisans makineler arasında taşınır ve denemenin ortasında satın almak istisna değil, olağan durumdur.
- Planları denemenin kendi içinden görmenin bir yolu. Fiyatlandırma sayfasına ücretsiz sürümün ekranlarından ulaşılabiliyordu, ama etkinleştirme iletişim kutusundan ya da lisans şeridinden ulaşılamıyordu — “3 gün kaldı” yazısını okuyan birinin gerçekten baktığı tek yerden. O okura bir anket ve bir
settings.json ipucu sunuluyordu, fiyat ise hiç.
Değiştirildi
- Etkinleştirme iletişim kutusu ile lisans şeridi artık
FCK1 ile açılmıyor. İkisi de eskiden istek kodunuzla ve “anahtarı settings.json dosyasına yapıştırın” yönergesiyle başlıyordu; oysa bu, lisans sunucumuza hiç ulaşılamadığı durumun yoludur. İlk gösterilen şey olduğu için asıl yönerge gibi okunuyordu — böylece elinde FCB1… abonelik kodu tutan bir müşteri, onu kesinlikle reddedecek tek alan olan “Enter Activation Key” alanına yönlendiriliyordu. İkisi de hâlâ orada, satın almış birine uygun yolların altında ve gerçekte ne olduklarıyla anlatılıyor.
0.2026.76 — E-postanın Adını Verdiği Komut
2026-09-12
Düzeltildi
- “Request Activation Key” artık gerçekten bir komut. Satın alma e-postanız — ve her dildeki etkinleştirme sayfası — tek tıklamalık bağlantı posta uygulamanızdan sağ çıkmazsa Komut Paleti’nden Fucini Coverage: Request Activation Key komutunu çalıştırabileceğinizi, planınızı seçip kodunuzu yapıştırabileceğinizi söylüyor. Oysa bu ad panelin başlık çubuğuna ve bağlantının kendisine aitti, hiçbir zaman bir komuta değil; dolayısıyla palette bu adla hiçbir şey çıkmıyordu — ada göre en yakın eşleşme olan Enter Activation Key ise sunucumuzun verdiği
FCK1… anahtarını alır, e-postanızın taşıdığı FCB1… kodunu değil. Yönergeleri izlemek sizi, elinizdekini kesinlikle reddedecek tek alana götürüyordu. Artık gerçek bir komut.
- Etkinleştirme iletişim kutusu, deneme süresi veya anahtar hâlâ geçerliyken de Lisans İste… seçeneğini sunuyor. Daha önce bu seçenek, ikisinden biri sona erene kadar gizleniyordu; gerekçe, çalışan bir kurulumun lisans sunucusuna başvurmak için bir nedeni olmadığıydı. Ama denemenin ortasında satın almak istisna değil, olağan durumdur ve bu konumdaki bir alıcının iletişim kutusundan kodunun gireceği alana hiçbir yolu yoktu: kalan iki düğme, ancak kodun kullanılmasıyla ortaya çıkan bir anahtar istiyordu.
0.2026.75 — Renk Körlüğüne Uygun Bir Palet
2026-09-12
Eklendi
- Renk körlüğüne uygun bir palet.
colorScale.preset ayarını colorblind yapın; kapsam kırmızı, kehribar ve yeşil yerine vermilyon, turuncu ve mavi (Okabe–Ito paleti) ile çizilir — renk geçişi, kenar çubukları, satır vurgusu, Gezgin rozetleri ve son çalıştırmadan beri işaretleri. Kendi belirlediğiniz bir renk önceliklidir.
0.2026.74 — Teste göre filtrelenen kapsam
2026-09-12
Eklendi
- VS Code'un kendi Test Coverage görünümünde kapsamı teste göre filtreleyin. Bir iz dosyası testlerini adlandırdığında — lcov'un
TN: bölümleri — her test Test Explorer'da Fucini Coverage altında bir öğe olur, Test Coverage görünümündeki her dosya içinde bir şey çalıştıran testleri listeler ve birini seçmek o testin ulaştığı satırları gösterir. - Yol ayarlarında
${command:…}. ${command:cmake.buildDirectory}/coverage.info seçili CMake kitini izler. Komut her keşiften önce, en fazla beş saniye ve yalnızca güvenilen bir çalışma alanında çalışır; başarısız olan bir komut değişkeni yazıldığı gibi bırakır ve çıktı nedenini söyler. - 30 saniyelik hızlı başlangıç ve alternatiflerle karşılaştırma artık Marketplace sayfasını ve ana sayfayı açıyor.
Düzeltildi
- Bir dosyayı her test için ayrı kaydeden bir iz dosyası, onu da her test için ayrı sayıyordu. Kayıtlar artık genhtml'in okuduğu gibi iz dosyası başına toplanıyor: dosya toplamlarda bir kez sayılıyor ve birden çok iz dosyası yüklendiğinde hiçbir testin satırları kaybolmuyor.
0.2026.73 — İmzalı güncellemeler ve geçişten sağ çıkan bir anahtar
2026-09-11
Düzeltildi
- Kurulum kimliği artık herhangi bir şey onu kullanmadan önce kaydediliyor. 0.2026.72 derleme 2, kimliğin her çağrıda yeniden belirlenmesini durdurdu; ancak başlangıçta hâlâ yazılmasını bekleyen bir şey yoktu. Bu yüzden açıldıktan hemen sonra kapatılan bir pencere onu yine kaybedebiliyordu — ve onunla birlikte etkinleştirme anahtarının bağlı olduğu makine parmak izini de. Başlangıç artık bekliyor.
- Pro'dan Community'ye geçmek etkinleştirme anahtarınızı artık geçersiz kılmıyor. Her sürümün kendi eklenti depolaması vardır; bu yüzden Community yeni bir kurulum kimliği ve yeni bir parmak iziyle başlıyordu, oysa ayarlarınızdaki anahtar — geçişin ücretsiz kilit açma için az önce istediği anahtar da dahil — eskisine bağlıydı. Geçiş artık kimliği devrediyor.
Güvenlik
- fucini.software'den gelen güncellemeler imzalı ve kurulmadan önce doğrulanıyor. Güncelleme akışındaki her
.vsix, hiçbir zaman web sunucusunda bulunmayan bir anahtarla oluşturulmuş bir SHA-256 özeti ve Ed25519 imzası taşır. Yerleşik güncelleyici ve Community'ye geçiş, ikisini de indirilen dosyayla karşılaştırır ve başka her şeyi reddeder — bir proxy'nin hata sayfasını, yarım kalmış bir indirmeyi, önbellekten gelen eski bir derlemeyi veya bize ait olmayan bir dosyayı. Tek başına HTTPS bunu karşılamaz: TLS denetimi yapan bir kurumsal proxy, gördüğü her bağlantıyı yeniden imzalar. - Her sürümün kendine ait bir dosya adı var. Güncelleme akışı artık her sürümde üzerine yazılan bir dosya yerine sürüm numaralı bir
.vsix'e işaret ediyor; böylece Cache-Control'ü yok sayan bir önbellek geçen ayın derlemesini bu ayınki gibi sunamaz. İndirme sayfasındaki bağlantılar değişmedi.
0.2026.72 — Yalnızca tek yönde test edilen kararlar
2026-09-10
Eklendi
- Yalnızca tek yönde test edilmiş kararlara atlayın. Next Partly-Tested Decision ve önceki ikizi, bazı kolları çalışmış bazıları hiç çalışmamış dallanmaları dolaşır. Kapsanmayan satır gezinmesinin gösteremediği boşluk budur: deyimi çalışmış bir satır kapsanmış sayılır ve kolları ne kadar hiç alınmamış olursa olsun kapsanmış kalır —
a yanlışken bir kez ulaşılan if (a && b), satır bazında %100 kapsanmış ve yarı test edilmiştir. Kol başına değil karar başına bir durak, çünkü bir if/else’in kolları sayfalarca uzakta olabilir ve bir switch’in beşinci koluna atlamak, switch’in kendisine atlamaktan daha az şey söyler. Hiçbir kolu ulaşılmamış kararlar, zaten orada duran kapsanmayan satır komutlarına bırakılır — ve raporunda hiç dallanma bulunmayan bir dosya bunu söyler, her kararın iki yönde de test edildiğini iddia etmek yerine.
Reload Coverage zaten yüklü olanı yeniden okur. İzleme kapalıyken, testleri yeniden çalıştırdıktan sonra taze sayılara dönmenin tek yolu Load Coverage idi; o ise keşfi yeniden çalıştırır ve ekrandakinden farklı bir kümeyle dönebilir. Bu komut şu anda yüklü olanı tam olarak yeniden okur; elle seçilmiş, keşfin bir daha asla bulamayacağı izleme dosyaları dâhil.
Copy Coverage Summary çalıştırmayı bir Markdown tablosuna koyar. En az kapsanan dosya başta, toplam satırıyla, bir pull request’e yapıştırmaya hazır. Dal ve MC/DC sütunları yalnızca çalıştırmada bunları ölçen bir şey varsa görünür: tirelerden oluşan bir sütun, ölçülmemiş değil sıfır kapsam olarak okunur ki bu gerçeğin tam tersidir.
Düzeltildi
- Kurulum kimliği oturumlar arasında değişebiliyordu — ve lisans parmak izi tam da ondan türetiliyor. Her çağrıda yeniden belirleniyor ve yazma işlemi beklenmeden kaydediliyordu; bu yüzden ikinci bir çağrı ya da başlatmadan kısa süre sonra kapatılan bir düzenleyici penceresi yenisini üretebiliyordu. Değişen bir kimlik, artık eşleşmeyen bir etkinleştirme anahtarı demektir; ayrıca kurulum başına sayılan her rakamı şişiriyordu. Artık oturum başına bir kez belirleniyor ve herhangi bir şey onu kullanmadan önce kaydediliyor. Derleme 2.
0.2026.71 — Bu satırı hangi izleme dosyası kapsadı
2026-09-08
Eklendi
- Satır düzeyinde köken ataması. Birden fazla izleme dosyası yüklüyken, çalışma sayısını gösteren ipucu artık Kapsayan: ve o satırda çalışma kaydeden raporlarla bitiyor — ve Coverage görünümündeki bir izleme dosyası satırına tıklamak, artık onun katkıda bulunduğu satırları her açık düzenleyicide aydınlatıyor; daha önce yalnızca ölçtüğü dosyaları aydınlatıyordu. Birleştirilmiş bir çalışmanın yanıtlayabildiği, tek bir raporun yanıtlayamadığı tek soru budur: aynı dosyayı ölçen iki izleme dosyası, o dosyanın satırları konusunda anlaşamaz ve şimdiye dek birleştirme bu anlaşmazlığı düzleyip hiç göstermedi. Birleştirme yine dosya bazında — en yeni rapor ortak bir dosyayı tümüyle kazanır — bu yüzden satır kökenleri birleştirmeden önce dizinlenir. Yalnızca kapsanan satırlar sayılır: bir satırı
0 olarak kaydeden rapor onu kapsamamıştır.
- lcov’un
TN: kaydı sonunda okunuyor. Kendi test kümesini adlandıran bir izleme dosyası — TN:integration — kökenin adlandırıldığı her yerde coverage.info (integration) olarak görünür ve bu ad, lcov’a geri dışa aktarımda boş yazılmak yerine korunur. Çoğu araç TN: alanını boş yazar ve bir şey değişmez; onu dolduranlar tam da izleme dosyaları birleştirilenlerdir ve o zaman hangisinin hangisi olduğunu söyleyen tek şey addır.
fuciniCoverage.lineHighlight satırların kendisini renklendirir. off | uncovered | heatmap, varsayılan olarak kapalı: kapsanmayan ve kısmen kapsanan her satırın arkasında yarı saydam bir renk, heatmap modunda çalışmış her satırın arkasında da — ne kadar sık çalıştıysa o kadar sıcak. editorGutter.mode için dördüncü bir değer yerine kendi ayarı, çünkü ikisi farklı bileşimlerde isteniyor: kenar boşluğu temizken renklendirilmiş boşluklar ya da kodun arkasında renk olmadan çubuklar. Yarı saydam, çünkü metnin altında durur; ve kapsanan satırları değil boşlukları renklendirir, kenar boşluğuyla aynı nedenle.
fuciniCoverage.overviewRuler kaydırma çubuğundaki şeride kendi karar verir. follow (varsayılan) her zamanki gibi davranır: kenar boşluğunun kapsanmayan veya kısmi bir çubuk çizdiği yerde şerit, ısı haritası için asla. uncovered onu editorGutter.mode kapalıyken de çizer — dosyanın boşluklarının kaydırma çubuğu boyunca haritası ve kodun yanında hiçbir şey. off çubukları korur, şeridi kaldırır. Cetvel daha önce kenar boşluğuna sabitlenmişti, dolayısıyla bu iki bileşim mümkün değildi.
Düzeltildi
- Ayrıştırılamayan bir izleme dosyası artık ne olarak okunduğunu söylüyor. “…iyi biçimlendirilmemiş” okuyucuyu, dosyanın sandığı biçim olarak tanınıp tanınmadığını tahmin etmeye bırakıyordu — ve VectorCAST ayrıştırıcısının reddettiği bir Cobertura belgesi, gerçekten kesilmiş bir Cobertura belgesinden başka bir sorundur. Bildirim artık, dosyayı bir ayrıştırıcı üstlendiğinde cobertura olarak okundu. ifadesiyle bitiyor. Hiçbiri üstlenmediyse bir şey eklenmez: “bu uzantının okuduğu bir biçimde değil” zaten bunu tümüyle söyler.
0.2026.70 — Eski veri bildirimi simgesini yeniden gösteriyor
2026-09-08
Düzeltildi
- Durum çubuğu ipucundaki eski veri bildirimi,
$(history) metni yerine yeniden saat simgesini gösteriyor. Altındaki sayıların dosyaların daha eski bir sürümünü anlattığını söyleyen bildirim, durum çubuğunun kendisiyle aynı $(history) işaretini taşır. Durum çubuğunda bu işaret saat simgesi olarak çizilir, çünkü StatusBarItem.text simgeleri kendiliğinden yerleştirir; ipucu ise bir MarkdownString, ve bunu supportThemeIcons ile açıkça istemek zorunda, ama hiç istememişti — böylece kapsamın neden güvenilir olmadığını açıklayan tek satır ham sözdiziminin bir parçasıyla başlıyordu. İpucu artık bunu istiyor.
0.2026.69 — Kenar boşluğu kipleri, uzak kapsam dosyaları, çok köklü çalışma alanları ve ölçülmemiş dosyalar
2026-09-08
Eklendi
- Düzenleyicinin kendi kenar boşluğu artık kapsanmayan satırları ya da bir isabet sayısı ısı haritası gösterebiliyor. Varsayılan olarak hâlâ yalnızca bulguları gösteriyor — MC/DC çubukları, son-çalıştırmadan-beri üçgenleri, düzenlenmiş satır noktaları — ve bütün bir dosyanın renk kodlu görünümü Annotated Source olarak kalıyor.
fuciniCoverage.editorGutter.mode daha fazlasını açıyor: uncovered, hiç çalışmamış her satıra bir çubuk, bir dal kolu hiç alınmamış her satıra kehribar rengi bir çubuk koyuyor, kapsanan satırlara ise hiçbir şey; böylece yeşil bir duvar üç kırmızıyı gizlemiyor. heatmap, çalıştırılmış her satıra sıcak bir ton ekliyor; ne kadar sık çalıştıysa o kadar sıcak. Choose Editor Gutter Mode... paletten ya da durum çubuğu menüsünden üçü arasında geçiş yapıyor. README eskiden düpedüz “yerel kenar boşlukları” iddiasındaydı; artık gerçekten olanı söylüyor. - Satır içi isabet sayıları.
fuciniCoverage.hitCounts.inline, bir deyimin başladığı her satırın ardına ×12 yazıyor, ×0 dâhil — üzerine gelince hep orada olan sayı, üzerine gelmeden. Toggle Inline Hit Counts bunu açıp kapatıyor; durum çubuğu menüsü hangisi geçerliyse Göster ya da Gizle olarak sunuyor. - Her yol ayarında
${env:NAME}, ${config:section.key}, ${userHome} ve ${workspaceFolderBasename}, zaten orada olan ${workspaceFolder}’ın yanında. Uzantının tanımadığı bir değişken yazıldığı gibi bırakılıyor; böylece bir yazım hatası yok olmak yerine keşif günlüğünde aranan yol olarak görünüyor. - Bir
coverageFile.paths girdisi bir http(s):// URL’si olabilir. Yapıt her yüklemede uzantının depolama alanına indiriliyor ve oradan yükleniyor; Kapsam görünümü önbellek yolunu değil URL’yi adlandırıyor. Her indirme koşullu (ETag / Last-Modified), bu yüzden değişmemiş bir yapıtı yeniden almak hiçbir şey indirmiyor; bir indirme başarısız olduğunda ise bunun yerine son indirilen kopya yükleniyor ve nedeni çıktıda. fuciniCoverage.remote.headers, değişkenleri genişletilmiş Name: value başlıkları ekliyor — Authorization: Bearer ${env:CI_TOKEN} belirteci settings.json’ın dışında tutuyor — ve fuciniCoverage.remote.refreshMinutes bir zamanlayıcıyla yeniden indiriyor. URL’nin kendisi bir dosya adıyla bitmiyorsa, biçimin bilinmesi için URL parçası olarak #lcov.info (ya da başka bir dosya adı) ekleyin. - Yükleme ve Generate Full HTML Report ilerleme gösteriyor ve iptal edilebiliyor. On ya da daha fazla kapsam dosyasının, ya da 8 MB ve üzerinin yüklenmesi, okunan dosyayı ve aşamayı (okuma, sonra kaynakların denetimi) adlandıran, İptal düğmeli bir ilerleme bildirimi altında çalışıyor; daha küçüğü eskisi gibi yalnızca durum çubuğunu döndürüyor. İptal etmek önceki çalıştırmayı yüklü bırakıyor ve bunu söylüyor. HTML raporu aynısını oluşturulup yazılan her sayfa için yapıyor.
- Yeniden yüklemek için iki neden daha. Çalışma alanının dışındaki mutlak bir
coverageFile.paths girdisi — checkout’un yanındaki bir derleme ağacı, bir Bazel çıktı kökü — artık yoklanıyor da; böylece pencere açıldıktan sonra orada beliren bir dosya, bir daha hiç bakılmamak yerine yükleniyor; izleyici yalnızca çalışma alanını görüyordu. Ve fuciniCoverage.watch.reloadAfterTasks, bitişi kapsamı yeniden yükleyen görevleri adlandırıyor (tasks.json’daki bir label ya da Run Task listesinin gösterdiği biçimiyle source: name, ör. npm: test), watch.enabled açık olsun olmasın — izleyicinin takip edemediği derlemeler için: sembolik bağlı bir çıktı ağacının yerine yenisini koyan bir çalıştırma, bir ağ paylaşımındaki rapor, dosyasını sonradan işleyen bir kapsam adımı. - Çok köklü çalışma alanları. Bir çalışma alanının her klasörü artık kendi koşullarıyla keşfediliyor:
coverageFile.defaultLocation, coverageFile.paths, pathRemap, ignore, watch.*, remote.*, badge.*, rapor dizinleri, gitDiff.*, problems.perLine, editorGutter.mode ve hitCounts.inline klasör başına okunuyor; böylece bir klasörün kendi .vscode/settings.json’ı ya da .code-workspace girdisi geçerli oluyor; ${workspaceFolder} girdinin kendi klasörü demek; her klasörde bulunan kapsam dosyaları tek bir çalıştırmada birleşiyor ve Kapsam görünümü dosyaları klasöre göre gruplandırıyor. Bir pathRemap kuralındaki ${workspaceRoot} önce kapsam dosyasının kendi klasörünü, sonra diğerlerini deniyor. Tek bir klasöre ihtiyaç duyan her şey — dosya iletişim kutuları, rapor ve rozet çıktısı, git meta verisi, Run Tests with Coverage — etkin düzenleyicininkini alıyor; birden çok klasör varken ve düzenleyici yokken test çalıştırması hangisi olduğunu soruyor. Çalışma alanına eklenen ya da ondan çıkarılan bir klasör kapsamı kendiliğinden yeniden yüklüyor. Bundan önce on iki yer ilk klasörü alıyordu ve ikinci bir kök her şey için yanlış tabanı buluyordu. - Çalıştırma VS Code’un kendi Test Coverage görünümüne yayımlanıyor.
fuciniCoverage.testCoverage.publish ile (varsayılan olarak açık) yüklenen her çalıştırma yerel Test Coverage paneline, onun Explorer’daki dosya başına yüzdelerine ve düzenleyicinin kendi “Show Inline Coverage” anahtarına da gidiyor — satırlar, dal kolları ve işlevler olarak, ayrıntılar istek üzerine yüklenerek. Show in Test Coverage View, ayar ne derse desin etkin çalıştırmayı yayımlıyor ve paneli açıyor; durum çubuğu menüsü bunu quickActions.showTestCoverage arkasında sunuyor. - Dosyalar eşleşmediğinde bir yol yeniden eşleme kuralı öneriliyor. En yaygın “yüklendi ama hiçbir şey yanmıyor” durumu, yolları bir konteynerden ya da CI checkout’undan gelen (
/build/src/a.c, /home/runner/work/repo/repo/src/a.c, C:\agent\_work\1\s\src\a.c) bir kapsam dosyasıdır; oysa çalışma alanında src/a.c vardır. Bir yükleme dosyaları eşleşmemiş bıraktığında uzantı dosya adlarını çalışma alanında arıyor, çoğunu açıklayan önek kuralını çıkarıyor, bunu [FUCINI_REMAP_002] olarak günlüğe yazıyor ve yükleme sonucu Apply Suggested Remap sunuyor — tek tıklama kuralı fuciniCoverage.pathRemap’e ekliyor ve yeniden yüklüyor. Suggest Path Remap Rule aynı çözümlemeyi istek üzerine çalıştırıyor. Tıklama olmadan hiçbir şey yazılmıyor. fuciniCoverage.ignore: hiç sayılmayan dosyalar. Dışarıdan alınan, üretilmiş ya da üçüncü taraf dosyalar (vendor/**, **/*.generated.ts, build/**) çalıştırma yüklenirken ondan düşürülüyor; böylece Kapsam görünümü, durum çubuğu, eşikler, rozetler, CodeLens, geçmiş ve dışa aktarımların hepsi onlarsız sayıyor; yükleme sonucu kaçının dışarıda bırakıldığını söylüyor, çıktı da onları adlandırıyor. Desenler çalışma alanına göreli yolla ve mutlak yolla eşleşiyor; / içermeyen bir desen, .gitignore gibi, herhangi bir derinlikteki bir klasör ya da dosya adıyla eşleşiyor. Bütün dosyalar için — bir dosyanın içindeki satırlar aracın kendi dışlama işaretçilerini kullanmaya devam ediyor. - Satır başına Problems kayıtları, isteğe bağlı.
fuciniCoverage.problems.perLine (off, uncovered ya da uncoveredAndPartial; varsayılan olarak kapalı), hiç çalışmamış her bitişik satır bloğuna bir Bilgi tanısı koyuyor — kırk satırlık ölü bir işlev kırk değil, tek kayıt — ve ikinci kipte, dal kolu hiç alınmamış her satıra. Yalnızca açık belgeler için; böylece iki bin dosyalık bir çalıştırma paneli boğamıyor; kayıtlar arabellek düzenlendikçe satırlarını izliyor ve belge kapanınca gidiyor. problems.enabled arkasındaki dosya başına kayıt değişmedi. - README için bir kapsam rozeti. Generate Coverage Badge, etkin çalıştırma için shields tarzı bir SVG’yi çalışma alanına yazıyor (
fuciniCoverage.badge.outputPath, varsayılan coverage-badge.svg); bir README bunu  ile, barındırılan hiçbir hizmet olmadan gömüyor. badge.metric satırları, dalları, MC/DC’yi ya da ağırlıklı puanı seçiyor; renk colorScale katmanlarını izliyor; badge.autoUpdate her yüklemeden sonra onu yeniden yazıyor. Export Coverage Report’un zaten sunduğu SVG rozeti artık aynı oluşturucuyu paylaşıyor. - Ölçülmemiş ile kapsanmayan. Hiçbir testin yüklemediği bir dosya kapsam dosyasında hiç yer almaz; bu yüzden uzantı onu 0 isabetli ölçülmüş bir dosyadan hep ayrı tutmuştur — sayıların da dışında; modüllerinin yarısının testi olmayan bir projenin “%92” okunması tam da böyle olur. Ayrım artık görünüyor: böyle bir dosyayı açmak durum çubuğuna
not measured koyuyor ve fuciniCoverage.unmeasured.mode başka ne olacağına karar veriyor. list, Kapsam görünümüne, çalıştırmanın ölçtüğü türden olup çalıştırmada bulunmayan her çalışma alanı dosyasını içeren bir Ölçülmemiş grubu ekliyor, onları yükleme sonucunda sayıyor, rozetler açıkken Explorer’da ? ile işaretliyor ve threshold.unmeasuredFiles’ın seçilen bir sayının üstünde Check Coverage Thresholds’u başarısız kılmasına izin veriyor. count daha ileri gidiyor: böyle her dosya çalıştırmaya %0 olarak katılıyor — her kod satırı için bir kapsanmayan satır — böylece durum çubuğu, eşikler, rozetler, geçmiş, dışa aktarımlar ve Test Coverage görünümünün hepsi dürüst rakamı görüyor; dosya her yerde ölçülmemiş olarak çiziliyor, asla “artık kapsamıyla eşleşmiyor” olarak değil. unmeasured.exclude başlıkları ve benzerlerini dışarıda tutuyor (varsayılan olarak **/*.h, **/*.hpp, **/*.hh, **/*.inl, **/*.d.ts). Varsayılan olarak kapalı; durum çubuğu durumu her zaman açık olan tek değişiklik. - Kapsam görünümü birleştirmenin ne yaptığını gösterir. 0.2026.63’ten beri bir modülün kendi yeniden çalıştırması, tüm projenin çalıştırmasının üstüne yüklendiğinde o çalıştırmanın modül dosyalarına ait sayılarını değiştirir ve her satır hangi rapordan gösterildiğini söylerdi — ama sayıları daha eski bir raporu geçersiz kılan satır, birkaç rapordan yalnızca birinin ölçtüğü satırla tıpatıp aynı görünüyordu ve bir raporun ne kadarının geçersiz kılındığını hiçbir şey söylemiyordu. Artık böyle bir satırın izleme dosyası rozeti çerçevelidir; ağacın üstündeki her izleme dosyası satırı birleştirmenin dosyalarına ne yaptığını sayar („42 dosya · 7 tanesi daha yeni bir raporca geçersiz kılındı“, „7 dosya · daha eski raporlarda 7 tanesini geçersiz kılıyor“); ve bir izleme dosyası satırına tıklamak onun ölçtüğü dosyaları tam ağaçta vurgular, geri kalanı soluklaştırır, yeniden tıklanana dek.
fuciniCoverage.coverageView.mergedMarks (varsayılan olarak açık) çerçeveyi ve vurguyu kapatır; sayılar kalır.
0.2026.68 — Ekip koltukları davet kodunu soruyor
2026-09-07
Düzeltildi
- Bir Business veya Enterprise kullanıcısından artık şirket kodu değil, davet kodu isteniyor. 2 Eylül’den beri lisans sunucusu, bir Business veya Enterprise koltuğu için ortak şirket kodunu reddediyor: bu kodla alınan bir koltuk kimseyi adlandırmıyordu; bu yüzden her ekip koltuğu artık davet edildiği adrese bağlı ve bir koltuğu etkinleştiren kod, o e-postadaki
FCI1… davet kodu. Anket ise alanı hâlâ “Şirket kodu” olarak etiketliyor, kodu yöneticiden istemeyi öneriyor ve bir FCB1… örneği gösteriyordu — insanları artık çalışmayan tek kodu yapıştırmaya yönlendiriyor, boş bıraktıklarında da şirket kodu girmelerini söylüyordu. Ekip planlarında alan artık “Davet kodu” olarak okunuyor, ipucu kodun nereden geldiğini ve ortak şirket kodunun bir koltuğu etkinleştirmediğini söylüyor, örnek FCI1… biçimini gösteriyor ve doğrulama iletisi davet kodunu istiyor. Pro, abonelik kodunu bu adla soruyor. Pro Plus değişmedi: ortak kodu bilerek koruyor. 17 görüntüleme dilinin tamamı yeni ifadeleri taşıyor.
0.2026.67 — ${workspaceFolder} her iki yol ayarında da çalışıyor
2026-09-05
Düzeltildi
${workspaceFolder} artık coverageFile.paths içinde de çalışıyor; coverageFile.defaultLocation içinde zaten hep çalışıyordu. İki ayar yan yana durur ve yalnızca biri değişkeni belgelediği için insanlar onu ikisine de yazdı — oysa ${ ile başlayan bir girdi mutlak değildir; bu yüzden temel klasörün altına düz metin olarak keşif glob’una giriyor, hiçbir şeyle eşleşmiyor ve uzantı kapsama olmadığını söylüyordu. Böyle bir girdi artık önce genişletiliyor, bu da onu mutlak bir yol yapıyor, ve yalnızca kontrol ediliyor. Ayarda yazıldığı gibi kalıyor, aynı dosya seçildiğinde başka bir biçimde ikinci kez yazılmıyor ve Coverage görünümünden kaldırıldığında ayardan kendiliğinden çıkıyor.- Yapılandırılmış ama var olmayan bir izleme dosyası artık çıktıda bildiriliyor. Yanlış bir yolu adlandıran girdi, hiçbir şeyin bildirmediği tek şekilde başarısız oluyordu: “kapsama bulunamadı”, gerçekten kapsaması olmayan bir projeden ayırt edilemez biçimde.
[FUCINI_DISCOVERY] artık dosya bulunamayan her girdiyi ve bakılan yolu adlandırıyor; her yeniden yüklemede değil, girdi başına bir kez. Joker karakterli bir girdi bildirilmiyor, çünkü bir derlemenin bir şey yazmasını bekliyor olabilir.
0.2026.66 — İşlev CodeLens’inde dallar, MC/DC ve bir puan
2026-08-29
Eklendi
- İşlev başına CodeLens artık yalnızca satırları ve isabetleri değil, dalları, MC/DC’yi ve bileşik bir puanı da gösteriyor — “add: %92 kapsandı (12/13 satır, 52 isabet, puan %88, dallar 3/4 (%75), MC/DC 2/3 (%66))”. Kapsam dosyasının o işlev için bildirecek bir şeyi yoksa — dal verisi olmayan düz bir C derlemesi ya da
-fcoverage-mcdc ile araçlandırılmamış bir derleme — her biri yanıltıcı bir 0/0 göstermek yerine o işlevden düşürülüyor; puan da aynı biçimde yalnızca diğer ikisinden en az birinin yanında gösteriliyor, çünkü tek ölçüt satırlar olduğunda puan, tanım gereği lensin zaten başa koyduğu sayının aynısıdır.
- Köken rozetinin ipucu, her kapsam dosyasının ne kadar önce yazıldığını söylüyor, yalnızca zaman damgasını değil — “module.info tarafından ölçüldü (2026-08-15 14:32 · 3 saat önce), lcov.info’nun (2026-08-01 09:10) onun hakkında söylediğinin yerine geçiyor.” “Az önce”ye kadar iniyor; 30 günden sonra yalnızca mutlak tarih gösteriliyor.
- Kapsam dosyası mtime’larında bir beraberlik artık sessiz kalmıyor. Aynı derleme adımında yazılan iki rapor ya da mtime çözünürlüğü bir saniyeden kaba bir dosya sistemi, ikisinin de ölçtüğü dosyalar için birebir aynı zaman damgasını bildirebilir — daha önce kazanan,
coverageFile.paths sırasına düşüyor ve ekranda bunu açıklayan hiçbir şey olmuyordu. Çıktı kanalı artık bunu söylüyor: [FUCINI_MERGE_TIE] her iki kapsam dosyasını ve kaç dosyayı paylaştıklarını adlandırıyor.
- “Son Çalıştırmadan Bu Yana Neyin Değiştiğini Göster”, karşılaştırılacak bir önceki çalıştırma varsa bir dosya satırının
… menüsünde — Compare with Last Run’ın zaten hesapladığı dosya başına farkın aynısı, bütün ağaç yerine sorduğunuz tek dosyaya yöneltilmiş. Hiçbir şeyin kıpırdamadığı bir dosya, hiçbir şey sunmamak yerine bunu açıkça söylüyor.
- Tune Colour Scale komutu:
colorScale.* renklerini ve eşiklerini kalıcı yapmadan önce canlı Kapsam görünümünde deneyin. Her düzenleme doğrudan ayara yazılıyor — görünüm zaten her colorScale/threshold değişikliğinde yeniden boyanıyor, dolayısıyla değeri yazmak önizlemenin ta kendisi — ve sonda bir “Koru” ya da “Özgün değerlere dön” döngüyü kapatıyor.
- Problems panelinde dosya başına kapsam boşlukları,
threshold.statement altındaki her yüklü kaynak dosya için bir kayıt, yeni fuciniCoverage.problems.enabled ayarının arkasında (varsayılan olarak kapalı — varsayılan deyim eşiği 100). Her kayıt kapsanmayanı özetliyor (“satırların %62’si kapsandı — 14 kapsanmayan satır, 2 kapsanmayan işlev”) ve hangi sohbet uzantısı kuruluysa onu (Copilot, Claude Code, …) boşluk için bir test yazma istemiyle açan bir hızlı düzeltme taşıyor — satır başına bir tanı gerçek bir kod tabanında Problems’ı boğardı; bu yüzden bu, okuyanın gerçekten eyleme geçebileceği düzey olan dosya ayrıntı düzeyinde kalıyor.
Düzeltildi
- Kapsam görünümünde eksik/uyuşmayan/doğrulanmış bir dosyanın gerekçesi artık seçilip kopyalanabiliyor. Eskiden yalnızca satırın yerel
title ipucunda yaşıyordu; o da tarayıcının kendi ipucu olduğundan seçilemez — tam gerekçeyi bir hata raporuna yapıştırmak isteyen biri onu elle yeniden yazmak zorundaydı. Üzerine gelince artık aynı metin gerçek, biçimlendirilmiş bir panelde gösteriliyor ve sayfadaki başka her içerik gibi üzerinden sürüklenebiliyor. Sıradan bir dosyanın ipucu (yalnızca yolu) etkilenmiyor.
- Parametre listesi birkaç satıra yayılan bir işlev artık yanlışlıkla taşınmış olarak bildirilmiyor.
detectMismatch, bir bildirimin kaydedilmiş satırıyla adının gerçekten bulunduğu yer arasında en fazla iki satırlık fark tanıyordu — bir imza satırı, bir dönüş türü satırı ve bir açılış ayracı arasındaki olağan fark için yeterli, ama ikisini keyfî uzaklığa koyabilen çok satırlı bir parametre listesi için değil. void LOG_Emit(...) — yedi parametre, her biri bir satırda — açılış ayracında, 163. satırda kaydedilmişti ve "LOG_Emit" is at line 3 olarak bildiriliyordu: en yakın metinsel eşleşme, ki bu da dosyanın başlık yorumunda geçen işlevin kendi adı çıktı; ne 163. satıra ne de 156. satırdaki gerçek bildirime yakındı. Denetim artık daha geride bulunan bir adı da kabul ediyor, yeter ki onunla kaydedilmiş satır arasındaki her satır tek bir kesintisiz bildirim gibi okunsun — boş satır yok, önceki deyimi ya da bloğu bitiren satır yok — ki bir parametre listesi bunu her zaman yapar, gerçekten taşınmış bir işlev ise neredeyse hiç yapmaz. Uyuşmazlığın hâlâ gerçek olduğu yerde bildirilen satır artık dosyada ilk bulunan değil, kaydedilmiş olana en yakın eşleşme.
- Köken rozeti artık “+N” demiyor. Bir modülün kendi raporunu daha geniş bir çalıştırmanın üzerine yüklemek, dosyanın rozetini modülün adı artı onu kapsayan diğer kapsam dosyalarının sayısıyla işaretliyordu — “bu kadarı geçersiz kılındı” demek istiyordu, “bu raporlar hemfikir” diye okunuyordu ve ağaçtan n’in hangilerini kastettiğini anlamanın yolu yoktu. Rozet artık yalnızca sayıları ekranda olan kapsam dosyasını adlandırıyor; ipucu neyin, neyle ve ne zaman geçersiz kılındığını hâlâ açıkça yazıyor.
- Köken rozeti artık yanındaki dosya adını panelin kenarından dışarı itmiyor. Rozetin genişliği sabitti (
flex: none); bu yüzden bir satırın yeri bitince bütün açığı dosya adı yükleniyor ve ikisinden daha az önemli olan rozet olmasına rağmen önce o kısaltılıyordu. Rozet artık dosya adı tek bir karakter kaybetmeden önce kendi genişliğinden veriyor; dosya adından zaten üstün olan yüzde ve çubuk etkilenmiyor.
0.2026.65 — Bir modülün yeniden çalıştırması, daha geniş bir çalıştırmanın söylediğinin yerine geçiyor
2026-08-15
Değiştirildi
- Bir modülün kendi yeniden çalıştırması, daha geniş bir çalıştırmanın onun hakkında söylediğine eklenmek yerine onun yerine geçiyor. Proje genelinde bir rapor yükleyip üzerine tek bir modülün kendi raporunu yüklemek, ikisinin paylaştığı her dosya için isabet sayılarını topluyordu — yalnızca o modülün testlerinin yeniden çalıştırılması, daha geniş ve artık bayat bir çalıştırmanın zaten bildirdiği sayıları tazelemek yerine şişiriyordu. Diskteki mtime’ı en yeni olan kapsam dosyası artık ölçtüğü her dosya için düpedüz kazanıyor: deyimler, dallar, bildirimler ve dosya başına toplamlar (dal, MC/DC, işlev, işlev çağrısı, nesne ve mutasyon özetleri), her iki yolun
coverageFile.paths içinde nerede durduğundan bağımsız olarak yalnızca o rapordan geliyor — bir modül yeniden çalıştırması son yüklenen olduğu için değil, gerçekten daha yeni olduğu için kazanıyor. Bir dosya için hiç deyim bildirmeyen bir kapsam dosyası — bir TRACE32 nesne kodu dışa aktarımı, gerçek bir raporun yanına yüklenen bir Stryker mutasyon raporu — yine yalnızca gerçekten taşıdığı özete katkıda bulunuyor ve daha önceki raporun satır/dal ayrıntısına dokunmuyor; o durum etkilenmiyor. Bu, iki çalıştırmanın ölçtüğü dosya başına MC/DC (ya da işlev/işlev çağrısı/mutasyon) toplamının paydasının payıyla birlikte toplandığı ve gerçek yüzdeyi düşük gösterdiği süregelen bir kusuru da ortadan kaldırıyor. Köken rozetinin ipucu artık “birlikte toplandı” yerine “_ öğesinin onun hakkında söylediğinin yerine geçiyor” diyor.
Düzeltildi
- Kapsam görünümünde uzun bir dosya adı artık taşmak yerine kısaltılıyor. Satırın ad span’inde
min-width: 0 eksikti — bir flex öğesinin overflow/text-overflow: ellipsis bildirimlerinin gerçekten devreye girmesini sağlayan tek bildirim; o olmadan uzun bir ad, panel yeterince daralınca tam genişliğini koruyor ve ardından gelen köken rozetinin, yüzdenin ve çubuğun altından geçiyordu.
0.2026.64 — Kapsam görünümünü puana göre sıralayın
2026-08-01
Eklendi
- Kapsam görünümünü yalnızca ada göre değil, puana göre de sıralayın. Her satır zaten bir WHM puanı ve ölçüt başına bir döküm taşıyor; büyük bir ağaçta en kötü dosyayı bulmak, alfabetik bir listeyi onun için baştan sona okumak demekti. Tümünü daralt / Tümünü genişlet’in yanındaki bir açılır liste artık Dosya adı, Bileşik puan, Satırlar, Dallar ve MC/DC sunuyor — Dosya adı dışındaki her kip klasörleri ve dosyaları iç içe, o ölçütün kendi yüzdesine göre en kötü önde sıralıyor; böylece kötü test edilmiş bir klasör, kötü test edilmiş bir dosyadan ayrı gruplanmak yerine tam onun gibi sıralanıyor. Görüntülenen ölçüt için verisi olmayan bir dosya (diyelim, hiç dal bildirmeyen bir biçim) %0 olarak okunmak yerine en alta gidiyor. Seçim yapıldığı anda yeni
fuciniCoverage.coverageView.sortBy ayarına yazılıyor; böylece her seferinde Dosya adı’na dönmek yerine pencere yeniden yüklemesini atlatıyor.
Düzeltildi
- Çok satırlı bir işlev imzası artık yanlışlıkla “taşınmış” olarak işaretlenmiyor. Istanbul’un
fnMap’i bir işleve iki satır başvurusu verir — adının durduğu yer ve gövdesinin başladığı yer — ve ayrıştırıcı, daha sonra kaynak metinde adı arayan uyuşmazlık denetimi için gövde satırını yeğliyordu. Parametre listesi iki satırdan uzun süren her işlev için (100 sütunda sarılan bir kod tabanında olağan) adın gerçek satırı kaydedilmiş olandan fazla uzaktı ve dosya, Kapsam görünümünde sahte bir “artık kapsamıyla eşleşmiyor” uyarısıyla soluklaşıyordu. Ayrıştırıcı artık adın kendi satırını yeğliyor; uyuşmazlık denetiminin zaten hep aradığı buydu.
0.2026.63 — Her satır kendi kapsam dosyasını adlandırır
2026-07-20
Eklendi
- Her satır kendisini hangi kapsam dosyasının ölçtüğünü söyler. Bir modülün kendi raporunu proje genelindeki bir çalıştırmanın üzerine yüklemek, aynı dosyaların iki kez ölçülmesidir ve ağaç bir satırın hangi raporu okuduğunu söylemiyordu. Birden fazla kapsam dosyası yüklüyken her dosya satırı artık kendisini ölçen raporun adını taşır — birkaçı ölçtüyse en son yüklenenin — diğerlerinin her biri için
+1 ve onları adlandıran bir ipucu ile. Birleştirme, birini kazandırmak yerine isabetleri toplar; ipucu bunu söyler. Tek dosya yüklüyken hiçbir şey çizilmez, çünkü ayırt edilecek bir şey olmazdı.
Değiştirildi
- Uzantının kendi sayfası her ayarı, gerçek varsayılanıyla birlikte adlandırır. Yirmi ayarın hiç satırı yoktu — dil, üç eşik, bir ağırlık ve on beş hızlı eylem anahtarı — ve telemetri satırı bir süredir kapalı olmasına rağmen varsayılanın açık olduğunu söylüyordu. Artık bir test, varsayılanlar dâhil, sayfayı bildirimle karşılaştırıyor.
Düzeltildi
- Önceki sürümde eklenen,
files.watcherExclude altındaki kaynakların yeniden denetimi, kendine ait bir ayar adı yerine bu denetimin geri kalanı gibi staleWarning.enabled ayarına uyuyor.
0.2026.62 — Gezgin rahat bırakıldı, susturulan kaynaklar yeniden denetlendi
2026-07-06
Değiştirildi
- Gezgin rahat bırakılıyor. Gezgin’deki dosyaların yanındaki kapsam rozetleri varsayılan olarak kapalı. O sütun onu kullanana aittir — VS Code oraya git’in M ve U’sunu koyar ve yalnızca tek bir rozet sığar — ve Kapsam görünümü aynı dosyaları aynı sayılarla, onlar için var olan bir yerde listeler.
explorerBadges.enabled onları olduğu gibi geri getirir.
Düzeltildi
files.watcherExclude altındaki bir kaynak da yeniden denetleniyor. Bir dosya ile kapsamı arasındaki canlı eşleşmeyi kaydetmeler ve bir dosya sistemi izleyicisi sürükler; o izleyici dışlanan her şey için sessizdir — en çok da build/ altındaki üretilmiş kaynaklar için, ki bayat bir işareti fark etmenin en zor olduğu yer orasıdır. Bu dosyalar artık kapsam dosyalarıyla aynı iki saniyelik nabızda yoklanıyor ve yalnızca gerçekten değiştiklerinde yeniden okunuyor. İki yüzü aşınca çıktı bunu söylüyor, nabzı buna harcamak yerine.
0.2026.61 — Test çalıştırıcısı için tek bir soru, her çalıştırmada değil
2026-06-09
Eklendi
- Test çalıştırıcısı bir kez sorulur, her çalıştırmada değil. Birden fazla tanınan çalıştırıcısı olan bir çalışma alanı — diyelim bir jest yapılandırması ve bir
go.mod — seçiciyi her Run Tests with Coverage öncesine koyuyor, çoktan verilmiş bir karar için tuş vuruşu istiyordu. Yanıt artık çalışma alanı için hatırlanıyor ve istem bunu söylüyor. Forget the Test Runner soruyu geri getirir; çalışma alanında artık bulunmayan, hatırlanmış bir çalıştırıcı ise çalıştırılmak yerine yok sayılır.
Değiştirildi
- Uzantının kendi sayfası her komutu adlandırır. Otuz dördün on dördü tablosundan düşmüştü — burada ve kılavuzda belgeliydiler, ama kurmadan önce okunan sayfada değil. Artık hepsi listeleniyor ve bir test bunu böyle tutuyor.
0.2026.60 · build 3 — Geri al noktaları yeniden kaldırır
2026-06-01
Düzeltildi
- Geri al, düzenlenen satırlardaki noktaları yeniden kaldırır. Çalıştırmadan sonra düzenlenen bir arabellek, yeniden yazılan satırlarda gri noktalar gösterir ve kapsam oralardan çekilir. O düzenlemeleri geri almak noktaları yerinde bırakıyordu: her değişiklik sayılıyordu, metni geri koyan değişiklik dâhil. Artık arabelleğin, kimse yazmadan önce ne içerdiği hatırlanıyor; onu yeniden içerdiği anda noktalar kalkıyor ve sayılar ona yeniden uygulanıyor.
- Sürüm numaraları birbirine karşı denetleniyor. Bildirim, değişiklik günlüğünün en üstteki girdisi ve sürüm etiketi; sürüm ile yapı numarasını taşır, üçü de elle yazılır ve daha önce birbirinden ayrıldılar. Test paketi artık onları karşılaştırıyor ve girdilerin en yeniden başlayarak sıralandığını, her birinin gerçek bir tarih taşıdığını denetliyor.
0.2026.59 — Kalıcı bir kaldırma
2026-05-12
Değiştirildi
- Kaldırılan bir kapsam dosyası kaldırılmış kalır. Kapsam görünümündeki listeden bir dosyayı çıkarmak, tam olarak pencere kadar sürüyordu: hiçbir şey yapılandırılmamışsa keşif bilinen adlara döner ve ertesi sabah yine
lcov.info’u buluyordu; aksini söylemenin tek yolu, birini dışlamak için bir yol yapılandırmaktı. Karar artık çalışma alanı için hatırlanıyor. Dosyayı yeniden seçmek ya da coverageFile.paths içinde adını yazmak kararı geri alır — ayarın adını verdiği bir dosya asla saklanmaz, dolayısıyla kimse söylemeden hiçbir şey eksilmez.
Düzeltildi
- Düzenlenen bir arabelleğin yeniden çizimi daha hızlı. Yeniden yazılan satırların listesi her çizimde kaydedilmiş tüm düzenlemelerden yeniden hesaplanıyordu; bütün öğleden sonra düzenlenen uzun bir dosya, son tuş vuruşundan beri değişmemiş bir yanıt için satır sayısı çarpı düzenleme sayısı ödüyordu. Artık tuş vuruşu başına bir kez hesaplanıyor.
0.2026.58 · build 2 — Test çalıştırması kendi kapsam dosyasını hatırlar
2026-05-01
Değiştirildi
- Test çalıştırması kendi kapsam dosyasını hatırlar, elle seçim gibi. Run Tests with Coverage çalıştırmanın yazdığını yüklüyor, sonra bunu
coverageFile.paths ayarına eklemek isteyip istemediğinizi soruyordu. Elle seçilen bir dosya oraya 0.2026.56’dan beri kendiliğinden yazılıyor; test çalıştırması ise aynı eylemin başka bir yolu, bu yüzden artık aynı biçimde yazıyor. İkisini tek bir ayar yönetiyor: coverageFile.rememberPicks; Kapsam görünümündeki dosya satırı ise her ikisinin de yeniden çıkarıldığı yer.
Düzeltildi
- Arka plan zamanlayıcıları uzantı durunca duruyor. Kapsam dosyası izleyicisi pencereyle birlikte bırakılıyordu, ama arkasındaki iki saniyelik yoklama ve bekleyen her kaynak denetimi sıradan zamanlayıcılardır ve onları hiçbir şey bırakmaz. Uzantıyı devre dışı bırakmak ya da uzantı kapalıyken bir pencereyi yeniden yüklemek, onları çalışır hâlde bırakıyor ve uzantının artık okumaya hakkı olmayan bir çalışma alanını okutuyordu.
0.2026.57 · build 4 — Etiketli canlı önizleme, çizilmiş bayraklar, seçim iletişim kutusunda her biçim
2026-04-24
Eklendi
- Canlı önizleme neyi gösterdiğini söylüyor. Ayarlar panelinin önizlemesi artık Çalıştırma: coverage/lcov.info · 12 dosya ile başlıyor ve etkin editör çalıştırmanın kapsadığı bir dosyayı gösteriyorsa, çalıştırmanınkinin altında o dosyanın kendi kararıyla Etkin dosya: src/a.c geliyor. Editörü ve her yüklemeyi, formun o an tuttuğu değerlerle — kaydedilmemiş düzenlemeler dâhil — izler. Panel öndeyken Kapsam görünümündeki bir tıklama dosyayı açmak yerine önizlemeyi o dosyaya geçirir.
- Seçim iletişim kutusu her biçimi adlandırıyor. Önce Tüm kapsam biçimleri, sonra LCOV; JSON (llvm-cov, Istanbul/nyc, coverage.py, SimpleCov, Coveralls, gcov, xccov, Stryker); XML (Cobertura, JaCoCo, Clover, OpenCover, GNATcoverage, Bullseye, SonarQube, VectorCAST, TRACE32, EMMA, UCIS/UCDB, NCover, dotCover, PIT); Go kapsam profili; gcov listesi ve Testwell CTC++ — ve
.lcov, .gcov, .txt ve .coveragexml artık soluk değil.
Değiştirildi
- Durum çubuğu ipuçları renk ölçeğini giyiyor. Çalıştırma ve dosya ipuçlarındaki metrik çubukları
colorScale.* ayarının üç rengini alır; yapılandırılmışsa her metriğin kendi eşiğine, değilse ölçeğin kırılma noktalarına göre kademelenir; karar rozetleri sabit durum renklerini korur.
- Dil ayarında çizilmiş bayraklar. 0.2026.56'daki bayrak emojileri Windows'ta iki çıplak harf olarak görünüyor. Liste artık her dili kendi adıyla anıyor — Nederlands (nl) — altında listede seçim yapan küçük çizilmiş bayraklardan oluşan bir sıra var.
0.2026.56 · build 3 — Seçimler hatırlanır, izleme dosyaları Kapsam görünümünde, dil ayarında bayraklar
2026-04-08
Eklendi
- Bir seçim hatırlanır. Pick Coverage File ile seçilen bir dosya yalnızca seçildiği pencerede yaşıyordu. Artık çalışma alanı ayarlarındaki
coverageFile.paths içine kendiliğinden girer — temel klasörün altındaysa göreli, değilse mutlak olarak — böylece bir sonraki pencere onu yükler ve izleyici yeniden yükler. coverageFile.rememberPicks (varsayılan açık) isteyenler için eski davranışı korur. Bu ayardaki mutlak bir girdi artık dosyayı nerede olursa olsun adlandırır.
- Kapsam görünümünde izleme dosyaları. Ağacın üstünde, yüklenen her izleme dosyası için dosya sayısını ve onu çalıştırmadan ve ayarlardan çıkaran bir kaldır düğmesini taşıyan bir satır; yanındaki Seç… düğmesi bir tane ekler. Son izleme dosyasını kaldırmak çalıştırmayı temizler.
- Dil ayarında bayraklar. Ayarlar panelinin dil listesi çıplak kodlar gösteriyordu; her girdi artık bir bayrak ve dilin kendi adını taşıyor — 🇳🇱 Nederlands (nl), 🇯🇵 日本語 (ja), 🌐 Otomatik.
0.2026.55 — Bir PHP dosyasının son satırı, dosya sonunun ötesindeki kapsam değildir
2026-03-27
Düzeltildi
- Bir PHP dosyasının son satırı artık dosya sonunun ötesindeki kapsam sayılmıyor. Xdebug ve PCOV, örtük dosya sonu dönüşünü son satır sonundan sonraki satıra yazar; bu yüzden php-code-coverage 251 satırlık bir dosyanın „252. satırına” bir isabet yazar — ve uyuşmazlık denetimi, sonunda satır sonu olan her PHP dosyasında bunu çelişki sayıyordu. Son satır sonundan bir satır ötesi artık kabul ediliyor; bunun ötesine ya da son satır sonu olmayan bir dosyanın ötesine yapılan başvuru hâlâ eskisi gibi bir çelişki.
0.2026.54 · build 2 — What Community Includes içinde bir deneme satırı
2026-03-24
Eklendi
- What Community Includes içinde bir deneme satırı, Community sürümünde. O derlemede hiç deneme olmadı; bu yüzden listesi artık Pro listesini açan 14 günlük Pro denemesi başlat… ile başlıyor; Pro derlemesinin etkinleştirmesi ardından Community derlemesini yoldan çekmeyi önerir. Ne karar verilirse verilsin Community ücretsiz kalır.
0.2026.53 — Show Worst-Covered Folders
2026-03-03
Eklendi
- Show Worst-Covered Folders. Show Worst-Covered Files'ın klasör düzeyindeki karşılığı: her klasör altındaki her şeyin kapsamına göre, en kötüsü önce, Gezgin rozetlerinin çizildiği aynı dizinden sıralanır; bir seçim klasörü Gezgin'de gösterir. Durum çubuğu menüsünde
quickActions.worstCoveredFolders ile.
0.2026.52 — Sorunlar panelinde eşik denetimi
2026-01-23
Eklendi
- Sorunlar panelinde eşik denetimi.
compliance.diagnostics açıkken karşılanmayan her threshold.* metriği, onu karşılamayan izleme dosyası üzerinde Sorunlar'da bir hatadır; her yüklemede ve Check Coverage Thresholds ile yenilenir, denetim geçince temizlenir. Sunulan deyim eşiği 100 olduğundan varsayılan olarak kapalıdır.
Değiştirildi
watch.enabled açıklaması artık bir soru vaat etmiyor. Hâlâ ücretsiz katmana yeniden yüklemeden önce sorulduğunu söylüyordu — 0.2026.48'e kadar doğru, sonrasında değil. 18 dilin tamamında yeniden yazıldı.
0.2026.51 · build 2 — Run Tests with Coverage
2025-12-08
Eklendi
- Run Tests with Coverage. Çalışma alanı kökünden vitest, jest, pytest, go, cargo, dotnet, maven, gradle, phpunit veya ctest'i tanır, bir terminal görevinde kapsam açık olarak çalıştırır, testler geçsin geçmesin yazdığını yükler ve bundan sonra yüklemeyi izleyicinin yapması için bu yolu
coverageFile.paths ayarına eklemeyi bir kez önerir. Birden çok çalıştırıcı seçim olarak sunulur; hiçbiri sizi tariflere göndermez.
0.2026.50 — Düzenlenmiş bir arabellekte kapsam metni izler
2025-10-23
Eklendi
- Düzenlenmiş bir arabellekte kapsam metni izler. Çalıştırma yüklendiğinden beri her açık arabellekte yapılan düzenlemeler tutulur ve çalıştırmanın satır numaralarını okuyan her yüzey — üzerine gelince isabet sayısı, MC/DC çubuğu, son-çalıştırmadan-beri üçgeni, CodeLens, Next Uncovered — bunların içinden okur: bir işaret satırıyla birlikte kayar ve yeniden yazılmış bir satırdan çekilir; orada küçük gri bir nokta nedenini söyler.
dirtyMarks.enabled noktaları kapatır.
0.2026.49 — Son çalıştırmadan beri, kenar boşluğunda
2025-09-26
Eklendi
- Son çalıştırmadan beri, kenar boşluğunda. Önceki çalıştırmada yürütülüp bunda yürütülmeyen her satır editör kenar boşluğunda kırmızı bir üçgen, ters yöne giden her satır yeşil bir üçgen taşır; her biri genel bakış cetvelinde bir şerit ve üzerine gelince isabet sayılarıyla. Değişmeyen satırlar hiçbir şey göstermez.
sinceLastRun.enabled bunu kapatır.
Değiştirildi
- „Son çalıştırma” için temel, yeniden başlatmayı atlatır.
history.enabled açıkken bir pencerenin ilk yüklemesinde geçmişteki en yeni çalıştırma bu rolü üstlenir; böylece pencere açılmadan önce biten bir derleme neyi değiştirdiğini yine gösterir — kenar boşluğunda ve Compare with Last Run içinde.
0.2026.48 · build 6 — Her yerde kendiliğinden yeniden yükleme, işaret dosyayı izler, üzerine gelince tam fark
2025-09-19
Eklendi
- Bir dosya hakkındaki karar yüklemeden sonra güncel kalır. Bir dosya kapsamıyla yalnızca bir kez, izleme dosyası yüklenirken karşılaştırılıyor ve bir daha hiç karşılaştırılmıyordu: bütün bir öğleden sonra düzenleyin, kenar boşlukları artık var olmayan bir sürüm hakkında sayılar çizmeye devam ediyordu. Artık editörde bir kaydetme o dosyayı hemen yeniden denetler; editör dışından bir değişiklik — bir
git checkout, bir biçimlendirici, bir üretici — kısa süre sonra diskten yeniden denetler. Çalıştırmasıyla çelişmeye başlayan dosya işareti alır; ölçülen sürümü geri getiren bir checkout işareti kaldırır.
- Tam fark, üzerine gelince. Bir dosya artık kapsamıyla eşleşmiyorsa Kapsam görünümü ve Gezgin ipucu bunu neyin kanıtladığını tam olarak söyler: izleme dosyası metni saklamışsa satırın şimdiki hâli ile raporun kaydettiği, bir özet saklamışsa satır ve başarısız sağlama toplamı, dosya sonunun ötesindeki kapsam, raporun koyduğu yerde artık olmayan bir işlev. Aynı ayrıntı, yükleme sonucundaki Hangilerini göster düğmesinin götürdüğü çıktı kanalına dosya başına bir satır olarak gider.
- Gezgin rozetleri için bir anahtar.
explorerBadges.enabled (varsayılan açık) Gezgin'de kapsanan her dosyanın yanındaki puanı, ✓ ve ⚠ işaretlerini ve onlarla birlikte metrik bazındaki ipucunu gizler. Kenar boşlukları, durum çubuğu ve Kapsam görünümü etkilenmez.
Değiştirildi
- İzleme dosyası değiştiğinde her katman kendiliğinden yeniden yükler. 2026-09-02'den beri ücretsiz katman yeni kapsam algılandı — yüklensin mi? sorusunda duruyor, ücretli lisanslar ise sessizce yeniden yüklüyordu. Bir derleme biter, sayılar yenidir ve izlemeyi açan kişi bu soruyu zaten yanıtlamıştır — bu yüzden soru her katmanda kaldırıldı, onu açıklayan bildirim de.
- Ürünün kendi başına yaptığı yüklemeler artık ücretsiz katmanın günlük sınırına sayılmaz. İzleyicinin yeniden yüklemesi ya da başlangıçtaki keşif, birinin istediği bir yükleme değildir; bunları saymak bir Community kurulumunun hakkını bir sabahlık test çalıştırmasında tüketir ve sonra ekranda eski bir çalıştırmayı hiçbir uyarı olmadan bırakırdı. Sınır artık yalnızca komutu ve seçiciyi ölçer.
- Tek başına değişmiş bir zaman damgası artık bir dosyayı işaretlemez. Bu çalıştırmadan beri N dosya değişti uyarısı her kaynağın mtime değerinden türetiliyordu; bir
git pull ya da biçimlendirici, ölçüleni değiştirmeden her mtime'ı değiştirir. Uyarı, durum çubuğundaki işaretiyle birlikte kaldırıldı. Bir dosya artık yalnızca içeriği çalıştırmayla çeliştiğinde değişmiş sayılır; durum çubuğu, yükleme sonucu ve yeni FUCINI_MISMATCH_001 çıktı satırı hepsi bundan okur. staleWarning.enabled adını korur ve artık tam olarak içerik denetimini tanımlar.
files.watcherExclude altındaki bir klasörü izlemek çıktıda söylenir. Derleme çıktısı, insanların VS Code izleyicisinden ilk dışladığı şeydir; sonrasında yeni bir çalıştırmayı yalnızca 2 sn'lik yoklama fark eder. Çıktı kanalı artık izleyici başlarken klasörü ve glob'u adlandırır.
0.2026.47 · build 2 — Eşleşmeyen yollar ekranda, ilk çalıştırma ipucu, iki tuş daha
2025-08-09
Eklendi
- Yüklenecek hiçbir şeyi olmayan çalışma alanı için bir ilk çalıştırma ipucu. İzleme varsayılan olarak açık ve başlangıç yüklemesi sessiz olduğundan, henüz izleme dosyası olmayan bir projedeki yeni kurulum hiçbir şey söylemiyordu. Boş dönen ilk sessiz yükleme artık bunu söyler — bir kez, kalıcı olarak — ve yapılmaya değer iki şeyi sunar: elle bir kapsam dosyası seçmek ya da araç zincirinizle nasıl üretileceğini gösteren tarifleri açmak. Elle başlatılan bir yükleme kendi iletisini korur.
- Toggle Annotated Source ve Load Coverage için tuşlar.
Alt+A etkin sekmeyi kaynak ile açıklamalı görünüm arasında değiştirir; Alt+Shift+R kapsamı yeniden bulur ve yükler (macOS'ta Ctrl+Alt+A / Ctrl+Alt+R). 0.2026.45'te eklenen ikisi gibi yeniden atanabilir.
Değiştirildi
- Çalışma alanında hiçbir şeyle eşleşmeyen yollar ekranda sayılıyor. Hiçbir çalışma alanı dosyasına çözümlenmeyen bir izleme dosyası yolu yüklenir ama asla ışımaz — var olan en yaygın "çalıştı ama hiçbir şey görünmüyor" — ve şimdiye dek tek iz, çıktı kanalındaki bir
FUCINI_REMAP_001 satırıydı; bunu düzeltecek pathRemap kuralıyla birlikte, okunmamış. Yükleme sonucu artık bunları sayar; adlar ve önerilen kural için Hangileri?, kuralın konulacağı yer için pathRemap Ayarını Aç. - Durum çubuğu menüsündeki dosya seçici okuduğu biçimleri adlandırıyor. Açıklaması hâlâ ilk sürümdeki beş biçimi listeliyordu; artık lcov, Cobertura ve JaCoCo'dan gcov, llvm-cov, TRACE32 ve mutasyon raporlarına kadar yirmi beş biçim diyor.
0.2026.46 — Sürüm çakışmasına bir çıkış ve daha sessiz bir sınır
2025-08-06
Değiştirildi
- Her iki sürüm de yüklü: talimat yerine iki düğme. Pro ve Community birlikte varken ikisi de etkinleşemez — aynı komutları ve görünümleri tanımlarlar — ve bunu söyleyen ileti, Uzantılar görünümüne giden tariflerle bitiyordu. Her iki çare de birer komut olduğundan artık düğme: Bunu Tut diğer sürümü kaldırır ve yeniden yüklemeyi önerir; İkisini de Uzantılarda Göster Uzantılar görünümünü tam olarak bu ikisinde açar. Kaldırma başarısız olursa yeniden yükleme yine önerilir — hangi sürümün etkin olduğunu zaten yeniden yükleme belirler.
- Bir kullanım sınırı bir kez tam olarak duyurulur, sonra yalnızca durum çubuğunda. Bir Community sınırına ilk ulaşıldığında tam yanıtı hak eder — sayılar, plan, telemetri ile kilit açma, katmanın neleri içerdiğinin listesi. On dakika sonra beşinci kez hak etmez. Bir oturum içinde aynı sınıra sonraki vuruşlar durum çubuğuna sekiz saniyelik bir satır koyar ve hiçbir şeyi kesmez. Bir anahtar girmek her şeyi baştan başlatır, çünkü yeni bir lisans yeni bir sınır kümesidir.
0.2026.45 — Next / Previous Uncovered için tuşlar
2025-07-26
Eklendi
- Next / Previous Uncovered artık tuşlara sahip. Bir dosyayı okurken tekrar tekrar basılan iki komut bunlar ve şimdiye dek her basış komut paletini açıp adı yazmak demekti.
Alt+N bir sonraki kapsanmayan aralığa, Alt+P bir öncekine gider (macOS'ta Ctrl+Alt+N / Ctrl+Alt+P, çünkü Option karakter yazar). İkisi de yalnızca odaklanmış bir metin düzenleyicide geçerlidir ve diğer tüm varsayılanlar gibi Keyboard Shortcuts altında yeniden atanabilir.
0.2026.44 · build 3 — Ücretsiz katmanın sınırları, tek bir listede
2025-07-24
Eklendi
- Community neleri içerir, tek bir liste olarak. Ücretsiz katman sekiz eylemi sınırlar ve on iki özelliği tutar; bu kararların her biri kendi kapısında uygulanıyordu — bu yüzden katmanın biçimini öğrenmenin tek yolu, işin ortasında her duvara sırayla toslamaktı. Yeni bir komut, What Community Includes, hepsini bir kerede gösterir: sınırlı her eylemi gününün ya da ayının ne kadarının kullanıldığıyla, tutulan her özelliği adıyla ve bunları kaldırmanın iki yolunu — ücretli bir plan ya da telemetri ile kilit açma.
- Sorunun ortaya çıktığı her yerde sunulur. Durum çubuğu menüsünde bir giriş, Coverage görünümünün lisans başlığında bir düğme ve bir Community kurulumunun duvarda karşılaştığı iki iletide birer düğme — kullanım sınırına ulaşıldı ve bu eylem dahil değil. Satırlar, kapıların uyguladığı aynı yetki kümesinden türetilir; dolayısıyla listenin söylediği, olacak olandır.
Değiştirildi
- İzleme modu ücretsiz katmanda ne yapacağını söylüyor. Durum çubuğu girişi herkese "kapsamı otomatik yeniden yüklemeyi" vaat ediyordu ve Community'de bu, izleyicinin tutmadığı bir vaat — fark eder ve sorar. Giriş artık orada bunu söylüyor ve komutun adı Toggle Tracefile Watch, çünkü "Toggle Watch" neyin izlendiğini hiç söylemiyordu. Davranışın kendisi değişmedi.
0.2026.43 · build 3 — Başarısız bir yükleme nedenini söylüyor ve gizli dosyalar sayılıyor
2025-06-25
Değiştirildi
- Yüklenmeyen bir izleme dosyası artık nedenini ve ne deneneceğini söylüyor. Her başarısızlık aynı bildirimi üretiyordu — "no coverage could be parsed. See output." — nedeni ise bir kanal ötede, bir kod ve ayrıştırıcı iletisi olarak duruyordu. Bildirim artık dosyayla başlıyor ve reddi ne olduğuna göre sınıflandırıyor: bu uzantının okuduğu bir biçimde değil, iyi biçimlendirilmemiş (olağan neden hâlâ yazmakta olan bir derleme), iyi biçimlendirilmiş ama hiçbir şey kaydetmiyor (çalıştırma hiç enstrümante edilmiş kod yürütmedi) ya da okunamadı. Ayrıştırıcının kendi sözleri de eşlik eder, birden çok dosya sayılır ve çıktı kanalı zorla açılmak yerine bir Çıktıyı göster düğmesinin arkasında sunulur.
- Bir izleme dosyasının listelediği ama ölçülecek hiçbir şeyi olmayan dosyalar artık ekranda sayılıyor. Yalnızca bildirim içeren bir başlık, 0/0 üzerinden %100 puanlanmak yerine her zaman Coverage görünümünün dışında tutuldu — ve adı çıktı kanalına yazıldı, başka hiçbir yere değil. Yükleme sonucu artık enstrümante edilecek hiçbir şeyi olmayan N dosya gösterilmiyor diyor ve Hangileri? düğmesi adların bulunduğu kanalı açıyor.
0.2025.42 · build 3 — NCover ve dotCover: Gidecek yeri olmayan .NET kapsamı
2025-06-08
Eklendi
- NCover ve JetBrains dotCover. Coverlet'in Cobertura'sı ve OpenCover burada zaten okunuyordu; bu, yeni .NET çalışmalarının çoğunu kapsar ve eski türden hiçbirini kapsamaz. NCover'ın
Coverage.xml'ini hâlâ yazan bir derleme, ya da dotCover ile ölçen bir ekip, bu eklentinin açamadığı kapsam verisine sahipti diskte. Her iki format da dönüştürücü gerektirmiyor: ikisi de zaten dosya adları ve satır numaraları taşıyor. - Hariç tutulan bir NCover noktası yok sayılır, çalışmamış olarak puanlanmaz.
excluded="true", kasıtlı olarak ölçüm dışı bırakılmış kodu işaretler — [ExcludeFromCodeCoverage] içeren bir üye ya da bir NCoverExplorer filtresi. Bunu kapsanmamış saymak, bir hariç tutmanın düzeltmek için yazıldığı sayıyı düşürmesine yol açardı. - dotCover
/ReportType=DetailedXML gerektirir. Diğer XML raporu, içinde hiçbir satır numarası olmayan bir özet raporudur; bu rapor tanınır ve bilinmeyen format olarak başarısız olmak yerine, sorunu çözen bayrağı belirterek geri çevrilir. dotCover her deyim için yalnızca evet ya da hayır kaydeder, asla ziyaret sayısı tutmaz, bu yüzden kapsanan bir deyim tek bir isabet olarak gelir.
0.2025.41 · build 4 — Mutasyon Testi: PIT ve Stryker
2025-05-28
Eklendi
- Mutasyon testi. Kapsam bir satırın çalıştığını söyler; mutasyon puanı, o satır değiştirildiğinde bir şeyin başarısız olduğunu söyler. Bir test takımı bir dosyanın her satırını çalıştırıp enjekte edilen hataların hiçbirini yakalamayabilir ve hiçbir kapsam sayısı bunu söylemez. PIT Java, Kotlin ve Scala'yı kapsar; Stryker JavaScript, TypeScript, C# ve Scala'yı kapsar.
- Kapsamla asla ortalaması alınmaz. "Bu satır çalıştı mı" ile "onu değiştirdiğimde bir şey fark etti mi" sorularını harmanlamak ikisinden birine de cevap vermez; bu yüzden bileşik puanda hiçbir ağırlığı yoktur ve
fuciniCoverage.threshold.mutation ile ayrıca kapı denetimine tabidir — varsayılan olarak 0, çünkü mutasyon puanı ilk günden aşılması gereken bir çıta değil, yükseltilmesi gereken bir hedeftir. - Hiçbir zaman adil bir çalıştırma almamış bir mutant iki yarıdan hiçbirinde sayılmaz. PIT'in
NON_VIABLE'ı ile Stryker'ın CompileError ve Ignored'u, aracın oluşturamadığı mutasyonlardır; bunları tespit edilmemiş saymak, bir test takımını kendisine hiç sunulmamış bir kusur yüzünden cezalandırmak olurdu.
0.2025.40 — GCC 9'dan Eski Derleyiciler İçin gcov'un Düz Metin Listesi
2025-05-16
Eklendi
- Notlandırılmış
.gcov listesi. gcov --json-format GCC 9 ile geldi ve gömülü çapraz derleyiciler çoğu zaman çok daha eskidir; şimdiye kadarki cevap önce lcov veya gcovr kurmaktı. Yürütme sayacının beş yazımı vardır ve yalnızca ikisi sayıdır, ve branch/call/function notları kendi satırlarına değil komşu satıra aittir — bunların hepsi artık doğru okunuyor. - Çağrı notları, çağrı noktası kapsamına dönüşür.
call N returned X%, tam olarak 0.2025.38'de eklenen işlev çağrısı ölçütüdür ve bu format onu, burada koyacak bir yer olmadan çok önce taşıyordu.
0.2025.39 · build 2 — Nesne Kodu Kapsamı ve Onunla Birlikte Assembly
2025-04-27
Eklendi
- Nesne kodu kapsamı — derlenmiş ikili dosyanın ne kadarının gerçekten çalıştığı. Buradaki, kaynaktan hiç ölçülmeyen tek ölçüt: bir hata ayıklayıcının gerçek hedefte komut akışını izlemesinden gelir, zamanlama üzerinde hiçbir prob etkisi olmadan. Aynı zamanda "bu assembly'yi kapsıyor mu?" sorusunun dürüst cevabıdır — elle yazılmış assembly hiçbir zaman enstrümante edilmez ve buradaki başka hiçbir ölçüt ona erişemez.
- Bu bir gerekliliktir, başka bir ağırlık değil. Nesne kodu kapsamı deyim kapsamını içerir — buradaki %100, oradaki %100 anlamına gelir, ama tersi geçerli değildir — bu yüzden bileşik puanda hiçbir ağırlığı yoktur ve bunun yerine bir eşikle kapı denetimine tabidir, tam olarak DO-178C A seviyesinin MC/DC'ye ek olarak istediği biçimde.
- Teslim edilen şey farkın kendisidir. %100 satır kapsamı ile %100'ün altında nesne kodu kapsamına sahip bir çalıştırma, kaynağınızın karşılığını vermediği derleyici üretimi kodu tam olarak bulmuştur; uygunluk kartı bunu "%94" diye gömmek yerine "312 bayt hiç çalışmadı, %100 satır kapsamıyla" der. Tersi durum — kaynağı çalışmamışken bütün ikili dosyanın çalışmış olarak bildirilmesi — düşük bir puan olarak değil bir çelişki olarak raporlanır.
0.2025.38 · build 2 — İşlev Çağrısı Kapsamı ve VectorCAST ile TRACE32 Tamamlandı
2025-04-01
Eklendi
- İşlev çağrısı kapsamı — her çağrı noktası işletildi mi. İşlev kapsamından farklı bir soru: üç çağrı noktasından birinden bir kez çağrılan bir işlev, İşlevler altında tamamdır ve burada üçte bir tamamdır. VectorCAST, TRACE32 ve Cantata bunu bildiriyordu, ancak bu modelde sayıyı koyacak bir yer yoktu.
- Bu, VectorCAST ve TRACE32'yi tamamlıyor. Önceki sürümler, bir dal yüzdesini şişirmenin bir denetimde sonuçlanan bir sayıyı şişirmesi nedeniyle bu verileri kasıtlı olarak dal kapsamına katmayı reddetti. Her iki format da artık her zaman gönderdiklerini yüklüyor.
Değiştirildi
- Uygunluk kapısı ve ağırlıklı puan artık altı değil, yedi ölçütü tanıyor — 17 dilin tümünde açıklamalarıyla birlikte iki yeni ayar:
fuciniCoverage.whmWeights.functionCalls ve fuciniCoverage.threshold.functionCalls.
0.2025.37 — Sadece Bir Yer Değil, Bir Sayı Olarak İşlev Kapsamı
2025-02-16
Değiştirildi
- Araç işlevlerin nerede olduğunu söylemese bile işlev kapsamı artık sayılıyor. TRACE32'nin
func dışa aktarımı, VectorCAST'ın kendi kendine kapanan <method> öğeleri ve EMMA'nın method, % özeti, üçü de bir CodeLens koyacak hiçbir yer olmadan bir işlev sayısı belirtiyordu — üçü de girişte atılıyordu. Bildirimler var oldukları yerde tercih edilen kaynak olmaya devam ediyor; bunların olmadığı yerde artık aracın bildirdiği sayı yedek olarak kullanılıyor.
0.2025.36 · build 4 — UCIS ve Aldec UCDB, ve Satır Satır Test Edilen Yeni Ayrıştırıcılar
2025-02-03
Eklendi
- UCIS ve UCDB XML — doğrudan simülatörden VHDL ve Verilog. Bu isme iki belge karşılık verir ve bir projede simülatörünün yazdığı hangisiyse o vardır, bu yüzden ikisi de okunur: Accellera'nın standart değişim biçimi
<UCIS> ve Aldec'in kendi ux:ucdb'si, yani Active-HDL ve Riviera-PRO'dan acdb2xml'nin gerçekte ürettiği şey. Deyim ve dal kapsamı aktarılır; toggle, FSM, iddia ve fonksiyonel kapsam okunmaz ve yalnızca bunları içeren bir belge boş yüklenmek yerine bunu bildirir. - Açık kaynak VHDL burada zaten hiçbir şeye ihtiyaç duymuyordu: GHDL'nin GCC arka ucu
-Wc,-ftest-coverage -Wc,-fprofile-arcs ile enstrümante eder ve sonuç gcov, gcovr veya lcov üzerinden geçer. Bu sürüm ticari simülatörler içindir.
0.2025.35 · build 3 — EMMA XML ve Delphi Sonunda Bir Giriş Yolu Buldu
2025-01-22
Eklendi
- EMMA XML. Delphi'nin buraya girecek hiçbir yolu yoktu — ne lcov ne Cobertura — ve DelphiCodeCoverage tam olarak bu şemayı
-xml ile yazıyor. Bu aynı zamanda daha eski Java araçlarının önemli bir kısmının hâlâ ürettiği şey, bu yüzden tek bir ayrıştırıcı hem bir dili açıyor hem de bir mirası temizliyor. -xmllines ekleyin, rapor gerçek satır bazlı isabet sayıları kazanır, böylece göstergeler çalışır; bu olmadan yalnızca bir tahmin yerine dosya özeti alan ve gösterge almayan bir özet yüzde vardır. Noktalı bir paket adı yalnızca dosya bir Java ailesi kaynağı olduğunda bir dizine dönüşür; bir Delphi raporunda aynı alan bir birim adıdır ve ona bir önek eklemek hiç kimsenin diskte sahip olmadığı bir klasör uydurmuş olurdu.
0.2025.34 · build 3 — Lauterbach TRACE32, Dışa Aktarım Başına Bir Ölçüt
2025-01-01
Eklendi
- TRACE32 kapsam dışa aktarımları.
COVerage.EXPORT.ListModule, bir hata ayıklayıcının hedef üzerindeki izden ölçtüğünü yazar — enstrümante edilmiş kaynak değil, işlemcinin gerçek hedefte, zamanlama üzerinde hiçbir prob etkisi olmadan gerçekten yürüttüğü komut akışı. Bir dışa aktarım aynı anda tek bir ölçüt taşır: stmt satır kapsamına dönüşür; dec/cond dal kapsamına dönüşür; mcdc MC/DC'ye dönüşür. Aynı çalıştırmanın iki dışa aktarımını yükleyin, modül adına göre birleşirler. func, call veya object kapsamı taşıyan dışa aktarımlar, boş yüklenmek yerine, dosyanın hangi ölçütü taşıdığını belirterek adlarıyla reddediliyordu — üçü de artık bir yuvaya sahip: sırasıyla 0.2025.37, 0.2025.38 ve 0.2025.39'da.
0.2025.33 · build 4 — Testwell CTC++: Metin Boşlukla Ayrılmadığı İçin Sütuna Göre Okunuyor
2024-12-19
Eklendi
- Testwell CTC++ yürütme profili listeleri.
ctcpost, MON.sym ve MON.dat'ı sabit genişlikli bir metin listesine dönüştürür — Avrupa gömülü ve güvenlik değerlendirmelerinde Bullseye'ın karşısında duran ve çoklu koşul kapsamını ölçen araç. Boşluklara göre bölmek yerine sütun konumuna göre okunur, çünkü bir açıklama kendisi bir rakamla başlayabilir. - Çoklu koşul MC/DC değildir ve MC/DC olarak raporlanmaz. CTC++ koşul kombinasyonlarını sayar; MC/DC her koşulun sonucu bağımsız olarak etkilediğinin gösterilip gösterilmediğini sorar. Bu sayıları MC/DC kapısının arkasına koymak, bir denetçiye anlamadığı bir ad altında bir sayı verirdi, bu yüzden burada bunlar dal kapsamıdır, gerçekte oldukları şey.
0.2025.32 · build 4 — VectorCAST XML ve Sessizce Atılan MC/DC
2024-12-08
Eklendi
- VectorCAST XML. VectorCAST, doctype'a kadar bir Cobertura raporu yazar ve ardından sıradan Cobertura'nın söyleyemediği şeyler için öznitelikler ekler. Bu, bu dosyaların burada zaten yüklendiği ve tam göründüğü anlamına geliyordu —
mcdcpair-coverage ise, onu üretmek için özellikle bir araç satın almış kitleden, sessizce girişte atılıyordu. Bu çift sayıları artık hayatta kalıyor. MC/DC kapısını, yüzdeyi ve bileşik puanı besliyorlar. - İşlev çağrısı kapsamı kasıtlı olarak yaklaşık değere dönüştürülmüyor. Bunu dal kapsamına katlamak, bir denetimde sonuçlanan bir sayıyı şişirirdi; modelde bunun için bir ad olana kadar bekliyor, bu da 0.2025.38'de gerçekleşiyor.
Değiştirildi
- Cobertura okuyucusu artık bir lehçe taşıyor:
<coverage line-rate=…> tek bir format değil bir ailedir ve hangi lehçenin okunduğu, öğe başına tahmin edilmek yerine ayrıştırmayla birlikte taşınır.
0.2025.31 — Ada, Swift ve kendini yeniden yükleyen kapsam
2024-11-07
Eklendi
- GNATcoverage XML — nihayet Ada. DO-178C aviyonik ve EN 50128 demiryolu ekipleri, bu ürünün güvenlik ağırlıklı puanının ve MC/DC desteğinin tam olarak hedeflediği kitledir; bugüne dek
gnatcov sürümleri Cobertura da üretecek kadar yeni değilse buraya hiçbir şey yükleyemiyorlardı — ve Cobertura satırın altındaki her şeyi atar. gnatcov coverage --annotate=xml dosya değil dizin yazar: kaynak başına *.xml dosyalarını yükleyin — index.xml dosyasını açmak, anlaşılmaz bir hata vermek yerine kapsamın gerçekte nerede olduğunu söyler. Kısmen kapsanan bir satır, kapsanmamış bir karar içeren kapsanmış bir satır olarak kalır: eksik, ait olduğu yerde — dal ve MC/DC kapsamında — görünür. Muafiyet bölgeleri hariç tutulan satırlara dönüşür, durumu belirlenemeyen bir yükümlülük kapsanmış değil kapsanmamış sayılır ve --level=stmt+mcdc ile MC/DC koşul başına sayılıp eşiği ve bileşik puanı besler.
- BullseyeCoverage ve Visual Studio
.coveragexml. Bullseye, gömülü ve güvenlik açısından kritik ekiplerin gerçekten sahip olduğu ticari C/C++ aracıdır; kendi covxml aracını çalıştırıp sonucu yükleyin. Öne çıkan ölçüsü satır kapsamı değil koşul/karar kapsamıdır ve ikisi burada ayrı kalır — ayrıca tek sonuçlu bir sonda iki üzerinden değil bir üzerinden puanlanır, böylece tamamen test edilmiş bir switch yarı kapsanmış görünmez. Visual Studio’nun .coveragexml biçimi, Coverlet yerine MSTest ve vstest kullanan ekipler için .NET tarafını tamamlar: ikili .coverage dosyasını önce dotnet-coverage convert ile dönüştürün. Kısmen kapsanan satırlar her iki yolda da korunur.
- SonarQube genel kapsamı — ve Xcode için net bir yanıt. İki öğe üzerinde dört öznitelik; önemi şu: diğer biçimlerden hiçbirini üretemeyen hemen her araç bunu üretebilir, dolayısıyla kapsam aracını bu eklentinin hiç duymadığı bir proje artık içeri girebilir. Aynı zamanda
xcresultparser bunu yazar; Swift ve Objective-C projeleri buraya böyle gelir: .xcresult için ayrıştırıcı yoktur ve belgeler artık tahmine bırakmak yerine nedenini söyler — xccov satır başına veri değil yüzde bildirir ve satır verisi içeren arşiv yalnızca dosya dosya, üstelik betimlediği dosyanın adını hiç anmayan bir belgede okunabilir.
- Gzip ile sıkıştırılmış izleme dosyaları olduğu gibi yüklenir.
gcov --json-format öntanımlı olarak .gcov.json.gz yazar; yani belgelerin duyurduğu biçim, çoğu kişinin aslında yükleyemediği biçimdi. Algılama, ad yerine dosyanın kendi sihirli baytlarıyla yapılır; böylece .gz uzantısını yitirmiş sıkıştırılmış bir rapor yine çalışır — ve artık yalnızca gcov’unki değil, desteklenen her biçim sıkıştırılmış gelebilir.
- Swift ve Objective-C, Xcode'un kendi raporundan.
xcrun xccov view --report --json, bir iOS veya macOS derlemesinin ek araç olmadan ürettiği tek kapsam belgesidir. Dosya yüzdeleri, işlev başına çalıştırma sayıları ve CodeLens elde edersiniz. Satır düzeyinde veri içermez ve Studio da uydurmaz; bu nedenle bu biçimde kenar işaretleri boş kalır — uydurulmuş bir işaret ölçülmüş olandan ayırt edilemez. Satır satır Swift kapsamı için llvm-cov export -format=lcov veya slather kullanın; ikisi de zaten çalışıyordu.
- Coveralls JSON — Elixir, Ruby, Python, Rust, Go ve JavaScript raporlayıcılarının hepsi bunu yazar. Satır düzeyindedir, dolayısıyla kenar işaretleri çalışır.
- Etkin günler, eşik engellemeleri ve bir özetin ait olduğu lisans — telemetriyi açmış kurulumlar için aylık kullanım özetine üç ekleme.
Kaldırıldı
- Bilgisayar adı artık gönderilmiyor.
hostname en baştan beri telemetri temelindeydi — her denetimin dışında, telemetrisi açık olan herkesten gönderiliyordu. Bir bilgisayar adı çoğu zaman bir kişinin adı, bir masa numarası ya da bir müşterinin projesidir ve kullanım hakkında işletim sisteminin daha iyi yanıtlamadığı hiçbir soruyu yanıtlamıyordu. Kurulum artık yalnızca rastgele kurulum kimliğiyle tanınıyor. Bununla birlikte sizi ya da makinenizi adlandıran hiçbir şey makineden çıkmıyor: ne bilgisayar adı, ne işletim sistemi kullanıcı adı, ne ana dizin, ne ağ arayüzleri, ne dosya yollarınız, ne projenizin klasör adı, ne de oturum açılmış bir hesap etiketi. Geriye işletim sistemi, sürümü ve mimarisi kalıyor — hangi tür makine, hangisi değil.
- Telemetri artık en geç 90 gün içinde siliniyor; politika daha önce yalnızca verilerin “yararlı olduğu sürece saklandığını” söylüyordu ki bu hiç de bir süre değil.
Değiştirildi
- Ücretli lisans artık kapsamı kendisi yeniden yükler. Bir izleme dosyasını izlemek, her derlemeden sonra “yeni kapsam algılandı, yüklensin mi?” sorusunu duymak demekti — her katmanda, tek makul yanıtı olan bir soru, saatte birkaç kez. Bu istem artık ücretsiz Community davranışıdır; ücretli lisans sadece yükler. Community izleyiciyi, algılamayı ve hep sahip olduğu istemi korur.
- Uyuşmayan bir dosya, bunu kanıtlayan denetimle birlikte, ücretli lisansta adlandırılır. Algılama kısıtlı değildir ve olmayacaktır: birine kapsamının artık dosyasını anlatmadığını söylemek, ona satılacak bir şey değildir. Community bulguyu yine alır ve satır yine soluklaşır. Ücretli lisans işareti ekler — im, Gezgin rozeti ve arkasındaki satır, işlev veya sağlama toplamı.
- Telemetri daha azını gönderir ve kime ait olduğunu söyler. Aylık özet artık dosya yolları, projenizin klasör adı veya oturum açılmış hesap etiketi taşımaz. Özellik-karşılığı-telemetri takası artık bir e-posta adresi ister; böylece kabul eden kişiye kurulumunun ne gönderdiği anlatılabilir ve istenirse silinebilir.
- Üç ayar açıklaması düzeltildi.
watch.enabled, staleWarning.enabled ve telemetry.enabled kodun yaptığından uzaklaşmıştı — en çok da telemetry.enabled: gönderilenden hayli fazlasını gönderiyormuş gibi anlatıyordu.
Düzeltildi
- Dosya seçici artık okuduğu biçimleri gizlemiyor. Pick Coverage File yalnızca
info, json ve xml ile süzüyordu; böylece Go’nun coverage.out ve gcov’un .gcov.json.gz dosyaları — ikisi de bu eklentinin okuduğu biçimler — tam da sizden birini seçmenizi isteyen iletişim kutusunda soluk görünüyordu.
- Sıradan bir Community kurulumu artık kaynağından bir sayfa göndermiyor. Açıklamalı kaynak örneğini koruyan denetim, her Community kurulumunu telemetri takasını kabul etmiş gibi ele alıyordu; yalnızca gerçekten kabul edenleri değil.
- Yükleme başına iki yerine bir uyarı — kapsamıyla artık uyuşmayan bir dosya neredeyse her zaman çalıştırmadan bu yana düzenlenmiştir de, ve her biri ayrı ayrı bildiriliyordu.
- Kaldırma işlemi artık işletim sistemi kullanıcı adını ve ev dizinini bildirmiyor — lisansı buna izin vermeyen biri için.
0.2025.30 · build 3 — Derlemenizin zaten yazdığı ne varsa
2024-10-18
Eklendi
- Go kapsam profilleri.
go test -coverprofile, standart Go araç zincirinin ürettiği tek kapsam çıktısıdır — Rust, Dart ve Elixir'de olduğu gibi geri düşülecek bir lcov yoktur — dolayısıyla bir Go projesinin bu uzantının okuyabileceği hiçbir şeyi yoktu. Profil satırları değil blokları kaydeder ve bir bloğun kapsadığı her satır, kapanış süslü parantezi dahil, onun sayacını alır; tam olarak go tool cover -html'in vurguladığı biçimde. coverage.out artık arama adları arasında, böylece hiç yapılandırılmamış bir Go projesi profilini, bir C projesinin lcov.info'yu bulduğu gibi bulur.
- Clover XML ve OpenCover XML. PHP projelerinin gerçekte elinde olan Clover'dır:
php-code-coverage Cobertura üretebilir, ama varsayılanı Clover'dır ve hemen her phpunit.xml onu yapılandırır — yani PHP kapsamı burada okunamazken, hemen yanında bir Cobertura ayrıştırıcısı neredeyse kimsenin üretmediği bir çıktıyı bekliyordu. Istanbul'un clover raporlayıcısı aynı belgeyi yazar, dolayısıyla böyle yapılandırılmış bir Jest projesi de kapsanır. OpenCover ise .NET karşılığıdır: C# ve VB.NET zaten Cobertura olarak geliyordu; Cobertura bir kararı condition-coverage="50% (1/2)" dizesine düzleştirir, böylece hangi dalın çalıştığı, ayrıştırıcı görmeden önce kaybolurdu. OpenCover dal başına ziyaret sayısını korur — bir dallanmanın yarısının kapsandığını bilmekle hangi yarısı olduğunu bilmek arasındaki fark.
- coverage.py JSON'u ve gcov/gcovr JSON'u. coverage.py'nin Cobertura ve lcov dışa aktarımları,
# pragma: no cover satırına ya kapsandı ya da eksik demek zorundadır; çünkü "bilerek dışlandı" için bir sözcükleri yoktur — bu uzantının ise vardır: LCOV_EXCL işaretlerinin koyduğu bayrağın aynısı. Böylece bir Python projesinin pragmaları burada, coverage.py'nin kendi raporunda ne anlama geliyorsa onu ifade eder. GCC kapsamı ise ancak lcov ya da gcovr -x üzerinden geliyordu: GCC'nin zaten ürettiği veriyi dönüştürmek için ikinci bir araç. gcov --json-format --stdout ile gcovr --json neredeyse aynı belgeleri üretir ve artık tek bir ayrıştırıcı ikisini de okur.
Düzeltildi
- Yorumlar, dosyanın yazıldığı dilde okunuyor. Kod olmayan satır tarayıcısı C için yazılmış ve her dosyaya uygulanmıştı; bu, uzantının okuduğu her biçim C ailesinden bir dili betimlediği sürece doğruydu. Artık değil:
# don't ile karşılaşan bir C tarayıcısı kesme işaretinin bir dizeyi açtığını görür, kapandığını hiç görmez ve yorum satırını kod olarak sayar — sessizce biraz yanlış bir sayı, üstelik bunu söyleyen hiçbir şey olmadan. Artık Python, Ruby, kabuk, Perl, R, Elixir ve Julia için #; üçünü de kabul eden PHP için üç biçimin tamamı; diğer her şey için ise // ve /* */ geçerli — bu, bilinmeyen bir uzantı için varsayılan olarak kalır: #define koddur ve onu dışlamak ters yönde yanlış olurdu.
0.2025.29 · build 4 — Her ayar, açıklamasıyla
2024-10-15
Eklendi
- Artık yalnızca on üç uyumluluk ayarı değil, her
fuciniCoverage.* ayarı bu panelde yerini alıyor. Elli beşinin tamamı, yayımlanan ayar başvurusuyla aynı bölümlerde ve aynı sırada gruplandı; böylece yapılandırdığınız sayfa ile okuduğunuz sayfa bir ayarın nerede yaşadığı konusunda hemfikir. Bir arama kutusu ada, anahtara veya açıklamaya göre süzer; bir atlama listesi bölümler arasında gezdirir. Form, çalışma zamanında uzantının kendi paketlenmiş bildiriminden türetilir — türler, varsayılanlar, sınırlar, sabit listeleri ve metnin her kelimesi — böylece bir ayara dair hiçbir şey iki kez yazılmaz ve panel, düzenlediği uzantıdan sapamaz.
- Açıklamalar sabitlediğiniz dili izler. VS Code, bir bildirimin yerelleştirmesini uzantı yüklenirken düzenleyicinin görüntüleme dilinden çözer ve bunu uzantı başına geçersiz kılmanın bir yolunu sunmaz — bu yüzden İngilizce bir düzenleyicide
fuciniCoverage.language değerini Almanca yapmak, ayarlar dışında her şeyi çeviriyordu. Panel bu dosyaları kendisi okuyup çözdüğü için, bu tercihe uyabilen tek yer orasıdır.
- Bir JSON şemasının isteyemeyeceği denetimler. Ayar şemasında hiçbir şey bir dizeyi yol olarak işaretlemez, dolayısıyla yerleşik arayüz bunun için bir seçici sunamaz; dizin tutan üç ayar artık bir Gözat… düğmesine sahip.
coverageFile.paths ve pathRemap, ham bir JSON kutusu yerine gerçek liste düzenleyicileri; her colorScale rengi ise onaltılık değerinin yanında bir renk örneği kazandı.
Değiştirildi
- Kaydetme, değiştirdiğinizi yazar; başka bir şeyi değil. On üç ayarda Kaydet'in on üçünü birden yazması pek fark etmiyordu; elli beşte bu, tek bir düzenlemenin iki satırlık bir
settings.json dosyasına tüm ad alanını damgalaması anlamına gelirdi. Yalnızca değeri gerçekten değişen ayarlar yazılır ve varsayılana eşit bir değer, uzantının zaten sağladığını yinelemek yerine geçersiz kılmayı temizler.
- Lisans anahtarınız her zaman kullanıcı ayarlarınıza gider ve satır bunu söyler.
license.key uygulama kapsamlı olarak bildirilmiştir; yani VS Code onu yalnızca oradan okur — çalışma alanına yazmak, işe yaramış gibi görünen ve hiçbir şeyi değiştirmeyen bir kaydetmedir. Sıfırla artık seçilen kapsamdaki on üç değil elli beş anahtarın tümünü temizler, bu yüzden önce sorar. Ayrıca panel dışında yapılan bir düzenleme artık yerinizi kaybettirmiyor: sayfa yeniden çizmeden önce karşılaştırır, böylece Kaydet elli beş satırı en başa geri kaydırmaz.
0.2025.28 · build 3 — On üç satır, tek karar
2024-10-12
Eklenenler
- Uygunluk modu, yedi eşik kriteri ve bileşik puanın altı ağırlığı artık tek bir düzenleyicide. Ayarlar arayüzünde birbiriyle ilgisiz on üç satır, pratikte ise tek bir karardır: yürürlükteki mod ona bakmadıkça bir eşik işlevsizdir, kararı veren ağırlıklı kriter olmadıkça bir ağırlık işlevsizdir. Coverage görünümünün başlık çubuğundaki dişli düğmesindeki Fucini Coverage: Configure Coverage Compliance & Thresholds... üçünü bir araya getirir, her modu tam da modun seçildiği yerde açıklar ve bir kriterin hiçbir şeyi denetlemeyecek biçimde yapılandırılmasının yollarını — metrik başına hiçbir eşiği ayarlanmamış katı mod, eşiği
0 olan ağırlıklı mod, tümü 0 olan ağırlıklar — siz tam onlara bakarken uyarı olarak adlandırır.
- Kararı önceden gösterir ve VS Code üzerinden yazar. Kaydedilmemiş formun yüklü çalıştırmaya karşı üreteceği COMPLIANT / NON-COMPLIANT değerini, kuralların ikinci bir kopyası değil, uzantının kendi uygunluk motoru hesaplar; çünkü kriterle çelişebilen bir önizleme, hiç önizleme olmamasından kötüdür. Değişiklikler olağan yapılandırma API'si üzerinden
settings.json dosyasına gider — kullanıcı ya da çalışma alanı, seçim sizin — böylece dosyayı VS Code biçimlendirir ve içindeki açıklamaları korur; elle ya da başka bir pencerede yapılan bir düzenleme, bir çalıştırma yüklü olsun ya da olmasın, açık forma geri akar. Lisans gerekmez: Community, Pro ile aynı düzenleyiciyi alır.
Düzeltildi
- Güncelleme bildiriminin düğmesinde
Download && Install yazıyordu. İkiye katlanmış ve işareti, anımsatıcı kaçış dizisidir; package.json başlıklarında ve kalıcı iletişim kutularında doğrudur — ama bir bildirimin eylem düğmeleri etiketini düz metin olarak alır, bu yüzden her iki karakter de tam yazıldığı gibi, 17 dilin hepsinde, güncelleme önerilen herkese basılıyordu.
0.2025.27 · build 7 — Kendi seçtiğiniz bir takas
2024-09-30
Değiştirildi
- Telemetri varsayılan olarak kapalı. Değerlendirme süresinin bu verilere ihtiyacı olduğu gerekçesiyle açık olarak dağıtılıyordu. Community seviyesi, telemetriyi açmayı tüm Pro özelliklerini ücretsiz açan şey hâline getirdiğinde bu gerekçe geçerliliğini yitirdi: bir takas ancak kişi onu kendisi yaparsa bir anlam taşır ve kimsenin seçmediği bir takas, takas değildir. Siz açmadıkça hiçbir şey gönderilmez ve Community her hâlükârda standart özellik kümesiyle çalışmayı sürdürür.
- Telemetri ayarı ne işe yaradığını söylüyor, gerisi için bağlantı veriyor. Açıklaması eskiden bir ping'in taşıdığı her alanı sayıyordu; bu, o listenin iki kopyası demekti — biri ayarda, biri gizlilik politikasında — ki sonsuza dek aynı kalmaları gerekirdi ve kalmadılar. Artık açmanın size ne kazandırdığını söylüyor ve alan listesi için gizlilik politikasına bağlanıyor; böylece doğru tutulacak iki liste yerine bir liste var.
- Bu sürümü kurmak değerlendirme pencerenizi bir kez yeniden açar. Denemesi zaten dolmuş olan herkes yeni 14 gün alır, çünkü bu sürüm değerlendirdikleri koşulları değiştiriyor: telemetri varsayılan olarak açıkken geçirilen bir deneme, şimdi sunulan ürünün denemesi değildi. Sürüme değil, bilinçli olarak tek kullanımlık bir belirtece bağlıdır — her sürümde sıfırlamak, güncel kalan hiç kimse için denemenin bitmemesi demek olurdu ki bu deneme değil, birkaç fazladan adımı olan bedelsiz bir lisanstır. Belirteç ilk etkinleştirmede harcanır ve olağan kurallar geri döner. Ücretli lisans etkilenmez, çünkü anahtar doğrulaması deneme hiç dikkate alınmadan önce döner; Community de etkilenmez, çünkü o sürümün yeniden açılacak bir denemesi yoktur.
- Lisans anahtarı artık bir ankete mal olmuyor. Etkinleştirme uyarıları, lisans anahtarı ayarı ve deneme bitiş penceresi anahtarı, sorulara yanıt verilmesi karşılığında verilen bir şey gibi sunuyordu. Öyle değil: anahtar istek üzerine otomatik olarak verilir ve geri bildirim anketi gönüllüdür ve tamamen ayrıdır.
Düzeltildi
- Üç yer hâlâ "2026-12-31 tarihine kadar" bir deneme vaat ediyordu. Üründe böyle bir tarih hiç olmadı — deneme 14 gündür ve her kurulum için ilk kullanımdan itibaren sayılır. Daha önceki iki sürüm bu iddiayı ayar açıklamalarında ve README'de yakalamıştı; bu sayfanın kendi değerlendirme kutusunda, Kullanım Kılavuzu'nda ve lisans araçlarının README'sinde varlığını sürdürdü. Üçünün en kötüsü Kullanım Kılavuzu'ydu: pencerenin "her kurulum için, dünya genelinde, aynı anda (kurulum başına geri sayım değil)" geçerli olduğunu söylüyordu ki tam tersi doğrudur; ayrıca deneme bitince kapsam görüntülemenin duraklatıldığını belirtiyordu, oysa eklenti ücretsiz Community seviyesine geçer.
- Telemetri bildirim e-postaları yanlış alan adından gönderiliyordu.
From: başlığı fucini.consulting üzerinde bir posta kutusuydu; oysa bunları gönderen sunucu fucini.software — ayarın kendi yorumunun uyardığı hizalamanın ta kendisi ve postanın sessizce spam'e düşmesinin ya da doğrudan reddedilmesinin güvenilir bir yolu.
0.2025.26 · build 2 — Grileşti, kaybolmadı
2024-08-27
Değiştirildi
- Raporun adını verdiği ama diskte olmayan bir dosya, ait olduğu yerde gösteriliyor — grileştirilmiş ve nedenini söyleyerek. 0.2025.25, bu tür dosyalar için konum uydurmayı bıraktı ve bu doğruydu; ama onlara hiç de konum olmayan göreli bir yol bırakıyordu — dolayısıyla ağaç yine o yolun ilk parçasından bir proje çıkarıyor, bir alt modülün silinmiş üç kaynağı da geldikleri alt modülün yanında hayalet bir
app içinde oturuyordu. Uyuşmazlık görünüyordu, amaç da buydu, ama yanlış yerde görünüyor ve neyin yanlış olduğu hakkında hiçbir şey söylemiyordu.
- Artık ölçüldüğü projede, raporun onu koyduğu klasörde görünüyor — temanın orta grisinde ve olağan ön plan rengi yerine italik olarak çiziliyor. Üzerine gelindiğinde sahip olacağı yolu verir ve orada hiçbir şey olmadığını — büyük olasılıkla rapor üretildikten sonra yeniden adlandırıldığını ya da silindiğini — ve sayılarının hâlâ sayıldığını açıklar. Hiçbir şey atılmaz ve hiçbir toplam kaymaz: satır, raporun kendi beyanıdır ve grileştirme, onun açılan bir satır gibi okunmasını engelleyen şeydir.
- Tahmin görünümün içinde kalır. Dosyanın kayıtlı yolu hâlâ tam olarak raporun söylediğidir, çünkü geri kalan her şey ona göre anahtarlanır — dış rapor zenginleştirmesi onunla karşılaştırır, telemetri onu göreli hâle getirir, açıklamalı görünüm onu açar — ve onlara varsayılan bir konum vermek, bilineni uydurulmuşla takas etmek olurdu. Yalnızca ağaç ikisini birleştirir ve yalnızca kendine ait bir konum belirtmeyen bir yol için: sadece var olmayan mutlak bir yol, raporun söylediğini korur ve bulunduğu yerde grileşir.
0.2025.25 · build 4 — Nerede ölçüldüğü
2024-08-07
Düzeltildi
- Bir alt modülün kapsamı, alt modülün gerçekten bulunduğu yere iniyor ve satırları açılıyor. Bir git alt modülü kendi ağacının yanında kendi raporunu üretir ve gcovr o rapora
<source>.</source> — "bu dosyanın içinde bulunduğu dizin" — yazar, altında app/Application.cpp gibi adlarla. Bu . hiçbir yere bağlanmıyordu: yollar birleştirmeden sonra yalnızca bir kez çözülüyordu ve o noktada çalıştırma, hangi dosyanın hangi girdiden geldiğini artık bilmiyordu; geriye tek taban olarak çalışma alanı kökü kalıyordu. <workspace>/app/Application.cpp denemesi hiçbir şey bulmuyor, her yol göreli kalıyor ve Kapsam görünümü bunları app adlı bir proje olarak çiziyordu — hiçbir zaman bir konum olmamış bir yolun ilk parçasının adıyla — ve her satırı hiçbir dosyanın bulunmadığı bir yeri kopyalayıp açıyordu.
- Yollar artık birleştirmeden önce, izleme dosyası başına çözülüyor. Göreli bir
sourceRoot, izleme dosyasının bulunduğu dizine bağlanır; böylece bir alt modülün coverage.xml dosyasının yanındaki . o alt modül demektir. Bu kaynakları bulmazsa arama izleme dosyasından yukarı yürür — alışıldık CMake düzeni kapsamı build/ içinde birkaç seviye aşağıya yazar ve bir projenin bu iki biçimden hangisini kullandığı raporun hiçbir yerinde yazmaz; dolayısıyla yanıtı yapılandırma değil dosya sistemi verir. Yürüyüş çalışma alanı kökünde durur: ötesine geçmek, yalın bir src/main.c yolunun aynı düzeni paylaşan komşu bir çalışma kopyasında çözülmesine izin verirdi — doğru görünen yanlış bir yanıt. Zaten mutlak ve var olan bir yol olduğu gibi bırakılır, böylece sıradan lcov çalıştırmaları değişmez.
- Alt modül, Kapsam görünümünde kendi projesi olarak kalır. Artık çalışma alanı içinde çözülen dosyalar aksi hâlde onun ağacına karışırdı — alt modülün klasörleri üst projeninkilerle iç içe geçer, sayıları da tek bir kod tabanı iki kez ölçülmüş gibi üst toplamına eklenirdi. Her dosya hangi kökten ölçüldüğünü kaydeder ve görünüm buna göre gruplar; böylece alt modül, açık klasörün içinde dursa da kendi başlığını ve kendi toplamlarını korur. Yolları zaten mutlak olan bir çalıştırmanın böyle bir kökü yoktur ve tam olarak eskisi gibi gruplanır.
- Raporun adını verdiği ama artık var olmayan bir dosya hâlâ eksik olarak bildirilir. Ona, bulunmadığı makul bir yol verilmez: silinmiş dosyaların adını veren bir rapor eskimiş bir rapordur ve onları uydurma konumlarda çizmek bunu gizlerdi. Her biri çıktı kanalında
FUCINI_REMAP_001 altında, sahip olacağı yolla birlikte adlandırılır.
0.2025.24 · build 3 — Koltuğunuz neden gitti
2024-07-27
Değiştirildi
- Kaybolan bir koltuk artık nedenini söylüyor. Her iptal aynı satırı gösteriyordu — bu plandaki lisans koltuğunuz artık etkin değil — ve bu, yanlış kişiye yöneltilmiş bir suçlama gibi okunuyor. Kullanımdaki koltuk sayısının altına düşürülen bir ekip aboneliği, artık bir ödemesiz süre sonunda fazlalığı serbest bırakıyor; koltuğunu kaybeden kişi, onu en uzun süredir kullanmamış olmaktan başka bir şey yapmadı. Lisans sunucusunun söyleyecek yararlı bir şeyi olduğu yerde eklenti bunu söylüyor: azaltılmış bir aboneliğe sığmak için serbest bırakılan bir koltuk tam olarak bunu açıklıyor ve aboneliği yöneten kişiyi işaret ediyor; Yeni anahtar iste hâlâ sunuluyor — çünkü geri dönüş gerçek: o kişi bir koltuk boşalttığı anda havuzda yer açılıyor.
- Sona ermiş bir abonelik hiçbir düğme sunmaz. Süresi dolmuş bir abonelikten yeni anahtar verilemez; dolayısıyla o bildirimdeki tek eylem yalnızca başarısız olabilirdi — ve bu, sona ermiş bir abonelikten çok bozuk bir eklenti gibi okunur. Artık ne olduğunu söylüyor ve orada duruyor. Bu sürümün tanımadığı her neden genel ifadeyi korur: lisans sunucusu sürekli dağıtılır, kurulu bir eklenti dağıtılmaz; bu yüzden tanımadık bir nedenle karşılaşmak sıra dışı değil, olağan durumdur — hiçbir zaman ham bir tanımlayıcı göstermez ve hiçbir zaman susmaz. Her iki yeni ileti de on yedi dilin tamamına çevrildi.
0.2025.23 · build 5 — Eklentinin dışına
2024-07-17
Eklenenler
- Çalıştırma artık dışarı çıkabiliyor — altı biçim daha. Şimdiye kadar iki çıkış vardı: eklenti dışında hiçbir şeyin okumadığı Fucini JSON ve makinece hiç okunmayan bir HTML raporu. Export Coverage Report... bir biçim seçici açar ve etkin çalıştırmayı şu biçimlerde yazar: dosya başına CSV (satırlar, dallar, işlevler, MC/DC, bölgeler ve örneklemeler için kapsanan/toplam/yüzde, en kötüler önce, bir
TOTAL satırıyla), işlev başına CSV (çalıştırma sayısı, çalışıp çalışmadığı, içindeki kapsanmayan dallar, MC/DC çiftleri), bir pull request'e yapıştırmak için Markdown özeti, LCOV izleme dosyası, Cobertura XML, SARIF ya da bir README için kendi kendine yeten SVG rozeti. Komut paletinde, Covered Files görünümünün başlık çubuğunda Generate Full HTML Report yanında ve quickActions.exportReport açıldığında durum çubuğu hızlı menüsünde yer alır.
- Artık yalnızca bir görüntüleyici değil, bir dönüştürücü. Eklenti lcov, llvm-cov JSON, Cobertura, JaCoCo, Istanbul/nyc ve SimpleCov'u zaten okuyor; LCOV ve Cobertura yazıcılarıyla ters yöne de gidebiliyor. Bir JaCoCo raporunu, ya da tek bir çalıştırmada birleştirilmiş birkaç raporu yükleyin ve genhtml, Codecov, Coveralls ile SonarQube'un hepsinin kabul ettiği o tek izleme dosyasını üretin — ya da Jenkins, GitLab ve Azure DevOps'un doğrudan aldığı XML'i. İkisi de eklentinin kendi ayrıştırıcılarından geri geçer ve satır aralıkları satır satır açılır; böylece yazılan
LF/LH ekrandaki yüzdeye yaklaşmak yerine onunla birebir uyuşur.
- Her yazıcı neyi attığını söyler. CSV'ler dışında hepsi kayıplıdır, üstelik sessizce: MC/DC, kod bölgeleri ve C++ örneklemelerinin LCOV, Cobertura veya SARIF'te karşılığı yoktur; Cobertura bir satırın koşullarından kaçının kapsandığını tutar, hangisinin olduğunu değil. Fucini JSON ve iki CSV, ölçülen her şeyi taşıyan biçimler olarak kalır. CSV'lerde çalıştırmanın sahip olmadığı bir ölçüt hücrelerini sıfır yerine boş bırakır — boş hücre "bu araç dal verisi bildirmedi" der,
0 ise "hiçbir dala girilmedi" derdi ve bir hesap tablosu sonradan bu ikisini ayırt edemez. Bir hesap tablosunun formül olarak çalıştıracağı her şey — =, +, - veya @ ile başlayan bir alan, yani her npm kapsamlı yol — yazılmadan önce tırnaklanır ve etkisizleştirilir.
- SARIF diff'i işaretler; rozet ağa ihtiyaç duymaz. Kapsanmayan aralıklar
warning değil note düzeyinde bildirilir: kapsanmayan kod test paketi hakkında bir bilgidir ve kod tarama bir uyarıyı engellemesi gereken bir şey sayar — engelleyen kapı hâlâ Check Coverage Thresholds. Rozet shields.io'dan çekilmek yerine burada çizilir, dolayısıyla ağdan yalıtılmış ya da şirket içi bir depoda da çalışır ve rengini kenar boşlukları ile durum çubuğuyla aynı colorScale'den alır. Ücretsiz Community sürümünde seçici açılır ve iki CSV de çalışır, Export Fucini JSON gibi günde 20 dışa aktarmayla sınırlı; değişim biçimleri ücretli katmandadır, bu sürümün hep çizdiği çizgide: kendi sayılarınızı okumak ücretsiz, bir CI hattını beslemek değil.
0.2025.22 · build 3 — Ölçülecek bir şey yok
2024-06-24
Düzeltildi
- İçinde araçlanacak hiçbir şey olmayan bir dosya artık %100 kapsanmış olarak bildirilmiyor. Yalnızca bildirim içeren bir başlık dosyası — prototipler, bir makro, include koruyucuları — işlev gövdesi taşımaz; derleyici onun için hiçbir kapsam eşlemesi üretmez ve sıfırı sıfıra bölen her şey %100 yanıtını verir. Ağaçta yeşil görünüyor, gerçekten test edilmiş kodun yanında duruyordu. Her iki okuyucu da artık aracın kendi toplamlarını dosyanın kendisi hakkındaki beyanı olarak alıyor — lcov’da
LF/FNF/BRF, llvm-cov JSON’unda summary bloğu — ve bütün toplamları sıfır olan bir dosya puanlanmak yerine çalıştırmanın dışında bırakılıyor. Bu toplamların altındaki satır kayıtları bilerek yok sayılıyor: bir makronun açılımı onu tanımlayan satıra yazılır, oysa sayım onu kullanan satıra aittir — başka bir dosyada; ödünç alınan o satır, böyle bir başlığın ölçülmüş görünmesinin tek nedeniydi. Çalıştırma toplamları da onu yitiriyor, böylece öne çıkan sayı biraz daha düşük ve çok daha doğru oluyor. Dışarıda bırakılan her yol çıktı kanalında adlandırılıyor; her dosyası yalnızca bildirim olan bir raporda ise hepsi korunuyor.
Değiştirildi
- Kapsam dosyası seçmek, yüklü olanın yerine geçmek yerine ona ekleniyor. Modül başına bir rapor yazan bir derlemede sabitlenecek tek bir dosya yoktur; ikinci modülün raporunu seçmek ilkini sessizce kaldırıyordu. İletişim kutusu artık aynı anda birden çok dosya alıyor, her seçim kümeye ekleniyor ve seçilen her şey tek bir çalıştırmada birleştiriliyor — panelde her projenin kendi adı altında çiziliyor. İzleme hepsini kapsıyor ve yeniden üretilen bir rapor diğerlerini ekrandan kaldırmıyor. Show Loaded Coverage Files, sıradan bulmaya geri dönen Seçtiğiniz dosyaları kaldır ile bitiyor.
- Desteğin artık ürünün kendi alan adında bir adresi var:
support@fucini.software. Etkinleştirme kendi başına tamamlanamadığında, lisans paneli ve istek kodu iletisi size bir fucini.consulting adresi veriyordu — uzantıdaki diğer tüm bağlantılardan farklı, başka bir şirket gibi okunan bir alan adı. license@fucini.software değişmedi: anahtarları o gönderir, yazılacak bir kutu değildir.
0.2025.21 — Bu src kimin
2024-06-21
Eklenenler
- Coverage görünümündeki her ağaç artık hangi projeye ait olduğunu söylüyor. 0.2025.19, birleştirilmiş bir çalıştırmaya proje başına adlandırılmış birer blok veriyordu; ama sıradan bir çalıştırma hâlâ çıplak bir ağaç çiziyordu — kendi klasörüne indirilmiş bir çalışma alanı
src ile açılıyor, üstünde hangi src olduğunu söyleyen hiçbir şey bulunmuyordu. Her ağaç artık kökünü taşıyor: projeye giden klasörler soluk renkte, projenin kendi klasörü ise onların ardında tam renkte. Çalışma alanı klasörüne indirilmiş bir ağaç yine nereye indirildiğini söylüyor ve tek bir çalıştırmada birleştirilen iki kod tabanı asla tek ağaç olarak okunmuyor. Bu bir satır değil, bir başlık — orada genişletilecek bir şey yok ve altındaki klasörler tam eskisi gibi katlanıyor. Dar bir panelde önce baştaki dizinler kısalır, böylece projeyi asıl adlandıran klasör en son gider; üzerine gelindiğinde yolun tamamı görünür.
0.2025.20 · build 7 — Beklediğiniz menü
2024-06-08
Eklenenler
- Coverage görünümündeki satırlar artık Gezgin'in kendi sağ tık menüsüne sahip. Bir dosyaya veya klasöre sağ tıklamak eskiden web görünümünün Kes/Kopyala/Yapıştır'ını açardı; üzerinde işlem yapılacak hiçbir şeyi olmayan üç girdi. Artık VS Code'un gerçek menüsü açılıyor: Aç, Open to the Side, Birlikte aç…, Reveal in Explorer View, Reveal in File Explorer, Open in Integrated Terminal, klasörler için Klasörde bul… ve Copy Path / Copy Relative Path — iki biçimin farklılaştığı Windows'ta yanlarında eğik çizgili sürümleriyle.
⋯ düğmesi ve menüsü değişmedi; yeni menünün son girdisi olarak duruyor.
Değiştirildi
- İzleme dosyanızın veri taşımadığı bir ölçüt artık yargılanmıyor. Derlemede MC/DC yokken konulan bir MC/DC eşiği başarısızlık sayılıyordu; böylece derlemenin gerçekten ürettiği her ölçütte %100 alan bir dosya, o izleme dosyasındaki hiçbir şeyin asla aşamayacağı bir çıtaya karşı «5'te 3 karşılandı» yazan bir kartın altında kalıyordu. Verisi olmayan ölçütler artık bir karara varılan her yerde atlanıyor: dosya başına durum çubuğu, tüm çalıştırmanın kartı, açıklamalı kaynak başlığı ve HTML raporu. Check Coverage Thresholds eksik ölçütü hâlâ açıkça adlandırıyor; yeri de orası.
- Ölçülecek hiçbir şeyi olmayan dosyalar Coverage görünümünün dışında bırakıldı. Bildirimlerden oluşan bir başlık dosyası, yalnızca yeniden dışa aktarımlar içeren bir dosya, yalnızca tiplerden oluşan bir modül: yazacağınız hiçbir test onların sayısını değiştirmez ve açtığınızda hiçbir ölçüt görünmez. 0.2025.19'da tire ile listeleniyorlardı; artık hiç listelenmiyorlar ve bu yüzden boşalan klasörler de onlarla gidiyor. Hiçbir şeyin ölçülebilir olmadığı bir çalıştırma yine her şeyi listeler.
Düzeltildi
- Bir sürücü harfi hâlâ ağacın başında durabiliyordu. Yolları açık çalışma klasörünün altında olmayan kapsam verilerinde — başka bir projeden birleştirilmiş bir izleme dosyası ya da hiç klasör açılmamış bir pencere — ağaç
W: ile, Linux ve macOS'ta ise adı hiç olmayan bir satırla başlıyordu: tek çocuğu olan, genişletmenin bir anlamı bulunmayan tek bir satır. Dosya sistemi kökü artık yollar nasıl görünürse görünsün hiç çizilmiyor ve her satır menü ile düzenleyici için gerçek mutlak yolunu taşımayı sürdürüyor.
0.2025.19 · build 6 — Ön söz değil, yollar
2024-05-16
Eklenenler
- Coverage görünümündeki her dosya ve klasör için bir satır menüsü. Satırın sonundaki düğme, o yolu bir düzenleyicinin, bir kabuğun ya da bir istemin isteyebileceği dört biçimin herhangi birinde kopyalar — mutlak ya da çalışma alanına göreli, sistemin ayırıcılarıyla ya da eğik çizgilerle — ve Reveal in File Explorer ile Open in Integrated Terminal seçeneklerini sunar; bir dosya için terminal kendi dizininde açılır. Eğik çizgili girdiler yalnızca yerel biçimden farklı oldukları yerde listelenir, bu yüzden Linux ve macOS'ta menü iki madde daha kısadır. Bir yolu kopyalamak eskiden aynı dosyayı Gezgin'de ikinci kez bulmak demekti.
- Ağacın üstünde tümünü daralt ve tümünü genişlet düğmeleri. Her şeyi daraltıp yalnızca ilgilendiğiniz klasörü açmak, büyük bir ağaçta en hızlı yoldur; daha önce klasör başına bir tıklamaya mal oluyordu. Bu şekilde daralttıklarınız, elle kapattığınız bir klasörle tam olarak aynı biçimde hatırlanır, dolayısıyla yeniden yükleme bunu geri almaz.
- Birden fazla projeyi kapsayan birleştirilmiş bir çalıştırma artık her projeyi kendi adı altında ayrı ayrı çiziyor. İkinci bir kod tabanından gelen izleme dosyasını birleştirmek, klasörlerini çalışma alanınınkiyle aynı ağaca asıyordu; böylece
src nedeni söylenmeden iki kez görünüyor ve iki projenin dizinleri alfabetik olarak birbirine karışıyordu. Artık her proje, bir çizgiyle ayrılmış kendi adlandırılmış bloğunu alıyor ve çalışma alanınınki başta geliyor. Tek bir projeyi kapsayan bir çalıştırma değişmedi ve başlık taşımıyor — onu ayırt edecek bir şey olmazdı.
Düzeltildi
- İçinde çalıştırılabilir hiçbir şey olmayan bir dosya %0 kapsanmış olarak bildiriliyordu. Yalnızca
export * yeniden dışa aktarımlarından ya da yalnızca tür bildirimlerinden oluşan bir modül, hiçbir kapsam aracının ölçemeyeceği bir şeye derlenir — izleme dosyası onun için tek bir deyim bile kaydetmez. Coverage görünümü bunu %0 sayıyor ve dosyayı gerçekten test edilmemiş kodun yanında kırmızıya alıyordu; oysa test yazılacak hiçbir şey yok. Dosya Gezgini ise aynı dosyaya yeşil bir %100 veriyordu, çünkü boş bir toplam "hiçbir şeyin tamamı kapsanmış" gibi okunur. İki sayı da doğru değildi ve artık ikisi de gösterilmiyor: paneldeki satır bir tire ve kesik çizgili bir çerçeve alıyor, nedenini söyleyen bir ipucuyla; Gezgin rozeti ise hiç konmuyor. Yalnızca bu tür dosyaları içeren bir klasör de puansız kalıyor. Gerçekten ölçülmüş bir şeyin %0'ında olan bir dosya yine %0 gösterir — tire "ölçülecek bir şey yok" demektir, "ölçüldü ve ıskalandı" değil. - Birleştirilmiş bir projeden gelen satırlar yanlış yeri gösteriyordu. Yolları kendi köklerinden değil çalışma alanının kökünden kuruluyordu; dolayısıyla çalışma alanı dışındaki bir dosya için satır menüsü, dosyanın hiç bulunmadığı bir yolu kopyalıyor ve "Reveal in File Explorer" onu açıyordu. Artık gerçekten geldikleri kökü taşıyorlar.
Değiştirildi
- Coverage görünümü artık çalışma alanının kökünü çizmiyor. Ağaç dosya sisteminin kökünden başlıyor ve projenin üstündeki her klasörden geçiyordu — sürücü, sonra projelerinizi tutan dizin, sonra projenin kendisi — gerçekten size ait olan ilk klasöre ulaşmadan önce. Bu, her satırda birkaç düzey girinti demekti ve pencere başlığının zaten söylediğini yineliyordu. Yollar artık çalışma alanı klasöründen başlıyor. Satır menüsünün kopyaladığı ve düzenleyicinin açtığı şey hâlâ tam mutlak yoldur.
0.2025.18 · build 4 — Bıraktığınız yerde kalır
2024-04-30
Düzeltildi
- Coverage görünümünde daralttığınız klasörler her yeniden yüklemede yeniden açılıyordu. İzleme varsayılan olarak açıktır; bu yüzden kapsamı yeniden üreten bir derleme paneli yeniden çizer — ve her klasör açık çizildiği için bir klasörü daraltmak yalnızca bir sonraki derlemeye kadar sürüyordu. Büyük bir ağaçta bu, aynı işi saatte birkaç kez yapmak demekti. Panel artık hangi klasörleri kapattığınızı hatırlıyor ve onları kapalı bırakıyor. Sonraki bir çalıştırmada ilk kez görünen bir dizin, diğerleri gibi yine açık gösterilir: hatırlanan, varsayılan durum değil, bir klasörü bilinçli olarak kapatma eylemidir.
- Telemetriyi kapatmak kaldırma ping'ini durdurmuyordu. Bu ping, VS Code'un uzantıyı kaldırdığınızda çalıştırdığı küçük, bağımsız bir betik tarafından gönderilir. Betiğin VS Code API'sine erişimi yoktur ve ayarlarınızı okuyamaz; dolayısıyla ona hiçbir şey göndermemesini söyleyen tek şey, uzantının telemetri açıkken yazdığı bir dosyanın yokluğudur — ve bu dosya telemetriyi kapattığınızda hiç silinmiyordu. Telemetriyi açıp sonra kapatan herkes, kaldırma sırasında işletim sistemi kullanıcı adını, ana bilgisayar adını ve ev dizinini yine de göndermiş olurdu. Dosya artık telemetri kapatıldığı anda siliniyor.
- Bir Pro yenilemesi, az önce değiştirdiğiniz bir anahtar için başarı bildirebiliyordu. Sessiz yenileme, yapılandırılmış anahtarınızı iki kez okuyordu: bir kez yenileyip yenilemeyeceğine karar vermek için, ardından bir şey söyleyip söylemeyeceğine karar vermek için tekrar. Yenileme sürerken yeni bir anahtar yapıştırmak, ikinci okumanın farklı bir anahtar görmesine yol açıyordu ve “Pro aboneliğiniz yenilendi” iletisi değiştirilmiş olan anahtarı anlatıyordu. Anahtar artık yalnızca bir kez okunuyor.
Değiştirildi
- Uzantıdaki her modül artık kendi testleriyle kapsanıyor. Tüm işi testlerinizin gerçekte nereye ulaştığını size söylemek olan bir araç için bunu doğru dürüst yapmaya değer göründü: 54 kaynak dosyanın 53'ü deyimler, dallar, işlevler ve satırlarda %100'de, kalan tek dosya — VS Code bağlantı katmanı — işlevlerinin %95'inde. Testleri yazmak yukarıdaki hataları ve bunların yanında hiçbir zaman çalışamayacak yirmi küsur korumayı ortaya çıkardı: onları zaten dışarıda bırakmış denetimlerin arkasında duran, güvenlik ağı gibi görünüp hiçbir şey yakalamayan yedek yollar. Bunlar, başarısız olamayacak bir testle örtbas edilmek yerine kaldırıldı.
0.2025.17 — Yanıtlamaya değer bir anda soruldu
2024-04-27
Değiştirildi
- İsteğe bağlı anket artık uzantıyı gerçekten kullanmanızı bekliyor ve daha uygun bir anda soruyor. Kurulumdan bu yana geçen takvim günlerini sayıyordu; bu, uzantıyı ne zaman kurduğunuzu ölçüyordu, onu hiç çalışırken görüp görmediğinizi değil — bir ay dokunulmamış bir kurulumdan, kendisine hiçbir şey göstermemiş bir ürünü değerlendirmesi isteniyordu. Artık geçen sürenin yanı sıra gerçek kapsam yüklemeleri de gerekiyor ve anket düzenleyici açılırken görünmüyor: başarılı bir yüklemeyi bekliyor. Bir yıl sonra üçüncü ve son davet geliyor, çünkü tek bir çeyrek içindeki iki davet, o sırada yalnızca meşgul olan herkesi kalıcı olarak devre dışı bırakıyordu.
- Felemenkçe çeviri artık resmi değil. Her yerde size «u» diye sesleniyordu; bu bir geliştirici aracı için katı duruyor ve ürünün geri kalan sesine uymuyordu. Tüm Felemenkçe metinler artık «je» kullanıyor — cümle cümle yeniden yazıldı, çünkü değişiklik fiil çekimlerini de beraberinde getiriyor.
0.2025.16 — Bir kod, bir şirket değil
2024-04-23
Değişti
- Etkinleştirme formu tek başına çalışan geliştiricilerden „company code“ istiyordu. Pro veya Pro Plus’ı tek kişi olarak alırsanız kod kendi aboneliğinizden gelir — arkasında bir şirket yoktur ve bunun sorulması yanlış formda olduğunuzu düşündürür. Bu alan artık Pro ve Pro Plus için Subscription code, Business ve Enterprise için ise bir ekibin gerçekten paylaştığı Company code olarak kalıyor. Altındaki açıklamalar zaten plana göre yazılmıştı; yalnızca etiket genel kalmıştı.
0.2025.15 · build 3 — Belirlediğiniz ölçüye göre
2024-03-25
Düzeltildi
- Oluşturulan HTML raporu, hangi eşikleri belirlemiş olursanız olun kodunuzu %100'e göre değerlendiriyordu. Durum sütunu her ölçütü gizli bir 100'e karşı sınıyordu; eşiklerini 80'e ayarlayıp bunları karşılayan bir proje, aynı çalıştırma için aynı sayfada, kırmızı çarpılardan oluşan bir sütunun hemen üstünde yeşil bir COMPLIANT şeridi görüyordu. Ölçüt açıklaması da aynısını yapıyordu. Artık ikisi de sizin belirlediğiniz eşikleri kullanıyor ve hiçbir eşiğin geçerli olmadığı yerde uydurma bir karar yerine soluk bir tire gösteriyor.
- Uyumluluk şeridi denetlediğinden fazlasını iddia ediyordu. Yalnızca ağırlıklı puanı sınayan varsayılan mod dahil, her zaman "yapılandırılan tüm eşikler karşılandı" yazıyordu — yani bir çalıştırma, alttaki tabloda bir eşik açıkça başarısızken tüm eşiklerin karşılandığını iddia edebiliyordu. Artık her mod gerçekte hangi kuralı uyguladığını söylüyor.
- README, uzantının "2026-12-31'e kadar ücretsiz çalıştığını" söylüyordu. Üründe böyle bir tarih yok. Daha önceki bir sürüm bu ifadeyi ayar açıklamalarında düzeltmiş ama README'yi atlamıştı — Marketplace'te ilk okunan şeyi. Artık gerçekte olanı yazıyor: ilk kullanımdan itibaren 14 günlük deneme, ardından ücretsiz Community katmanı ve sonrasında hiçbir şeyin durduğu bir tarih yok.
0.2025.14 — Onları ayırt etmek
2024-03-15
Değiştirildi
- İki sürüm Marketplace'te artık birebir aynı görünmüyor. Pro ve Community tek bir kaynak ağacından derleniyor ve şimdiye kadar buna simge de dahildi — yani iki kayıt, aynı arama sonuçlarında yan yana duran, farklı başlıklı aynı resimdi. Artık her sürümün kendi simgesi var: aynı görselin altında renkli bir şerit, Pro için turkuaz ve Community için arduvaz. Simge büyük gösterildiğinde onları ayıran şey kelimedir; bir arama sonucu satırında kelime okunamayacak kadar küçüktür, o zaman bu işi renk üstlenir.
0.2025.13 — Bulunduğunuz yerden erişilebilir
2024-02-26
Düzeltildi
- Açıklamalı görünümü açmak, onu yeniden açmanızı artık engellemiyor. Açıklamalı kaynak paneli bir metin düzenleyici değil bir web görünümüdür; bu yüzden odak ondayken uzantı hiçbir «geçerli dosya» göremiyordu ve Open Annotated Source orada «önce kapsamı yüklenmiş bir dosya açın» yanıtını veriyordu — hem de kapsamı açıkça olan bir dosyanın açıklamalı görünümüne bakan birine. Artık önünüzdeki panelin arkasındaki dosyaya geri düşüyor. Aynı blok, ikinci çalıştırmanın var olma nedeni olan yeniden denetimi de sessizce atlıyordu: bir llvm-cov HTML raporu yapılandırılmışsa, paneli o raporun kendi sayfasına geçiren şey tam da komutu yeniden çalıştırmaktır — yani kapsam derlemeniz paneli açtıktan sonra bittiyse, ona panelin kendisinden ulaşmak mümkün değildi.
0.2025.12 · build 2 — Doğru olanı söylemek
2024-02-15
Eklenenler
- Ücretli bir Pro aboneliği artık kendini yeniliyor. Her etkinleştirme anahtarı yalnızca ödenen dönem kadar geçerlidir. Takım planları yenilenen dönemi bir sonraki bağlantılarında alır, ancak bireysel Pro hiç bağlanmaz — tamamen çevrimdışı çalışır — dolayısıyla yenilemeyi ona hiçbir şey taşımıyordu ve aylık bir abonenin anahtarı, ne kadar düzenli öderse ödesin yaklaşık her ay sona ererdi. Eklenti artık sessizce yeni bir anahtar istiyor; yalnızca kendi sona erme tarihinin çevresindeki günlerde ve yalnızca bir aboneliğin ödendiğini kanıtlayan kod elindeyken. O aralıkta çevrimdışı olmanın bir bedeli yok: anahtar gerçekten dolana kadar çalışmaya devam eder ve sonraki deneme onu geri getirir.
- Satın alma e-postasından etkinleştirme tek tık. Bağlantı, planınızı ve kodunuzu doğrudan eklentiye verir; VS Code'u açıp komutu aramak ve kodu elle yapıştırmak gerekmez. Bir koltuk kullanılmadan önce her zaman onay ister. Kodu kendiniz girmek eskisi gibi çalışıyor — bağlantı bir kısayol, asla tek yol değil — ve Community sürümünde de çalışır.
Düzeltildi
- Bir ayar açıklaması eklentinin "2026-12-31'e kadar ücretsiz" olduğunu söylüyordu. Ürünün hiçbir yerinde böyle bir tarih yok. Gerçekte olan, ilk kullanımdan itibaren 14 günlük bir deneme süresi ve ardından eklentinin ücretsiz Community seviyesine dönmesi. Açıklama artık bunu söylüyor, her dilde.
- Eşik ayarları artık varsayılanlarını değiştiren sürümü anmıyor — cümlenin ortasındaki bir sürüm numarası, ayar açıklaması okuyan hiç kimsenin sormadığı bir soruyu yanıtlıyor.
- Çevrilmiş birkaç açıklama, hiçbir çevrilmiş VS Code'un göstermediği bir komutu adlandırıyordu. Etkinleştirme komutuna İngilizce adıyla atıfta bulunuyorlardı; böylece İngilizce çalışmayan herkes, komut paletinde orada olmayan bir metni aramaya gönderiliyordu.
0.2025.11 · build 3 — Sayılanı Saymak
2023-12-26
Düzeltildi
- MC/DC kararı bulunmayan bir proje %0 genel kapsam gösterebiliyordu. Bazı araçlar, ölçülecek bir şey olmasa bile bir MC/DC bölümü bildirir; bu da «kapsanmadı %0» olarak okunuyordu, «kapsanacak bir şey yok» yerine. Genel puan, herhangi bir ölçüt sıfır olur olmaz sıfıra düştüğü için tamamen kapsanmış bir proje %0 gösterebiliyordu. Ölçülecek bir şeyi olmayan ölçüt artık puana hiç girmiyor ve satırı «0 / 0 koşul kapsandı» olarak görünmek yerine tamamen kaldırılıyor.
- Lisans durumu artık 17 dilin tamamına çevrildi. Her yerde İngilizce kalıyordu ve zaten çevrilmiş cümlelerin içinde göründüğü için durum çubuğunda, bildirimlerde ve Kapsanan Dosyalar panelinde yarı çevrilmiş bir satır oluşuyordu.
- Açıklamalı Kaynak görünümü ve kapsam ipuçları da çevrildi — uygunluk döküm tablosu, gezinme düğmeleri ve ipuçları ile dal ve MC/DC ayrıntıları.
Değiştirildi
- Ücretli bir Pro aboneliği artık kendi koduyla etkinleştirilebiliyor. Anahtar isteğindeki plan listesine bir Pro girişi eklendi; böylece Pro aboneliğiyle gelen kodun sonunda girilebileceği bir yer var. Bireysel Pro anahtarları hâlâ tamamen çevrimdışı çalışır ve etkinleştirmeden sonra sunucuya hiç bağlanmaz.
- Etkinlik çubuğundaki simge daha büyük ve daha görünür — yerleşik simgelerin yanında.
- Community sürümüne geçiş artık onu fucini.software üzerinden kuruyor. Önceden, Community sürümünün yayımlanmadığı Marketplace deneniyordu; bu yüzden geçiş sizi hiç eklenti kurulu olmadan bırakabiliyordu.
0.2025.10 · build 5 — Daha Yumuşak Bir İniş
2023-12-08
Değiştirildi
- Süresi dolan bir abonelik artık ücretsiz katmana yerleşiyor — bireysel bir etkinleştirme anahtarının süresi dolduğunda uzantı sizden sonsuza dek yenilemenizi istemeye devam ediyordu. Yenilememeyi seçmek bir aboneliğin normal sonudur, bir arıza değil; bu nedenle uzantı artık bunun yerine kalıcı ve ücretsiz Community katmanına yerleşiyor. Ekip planları bilinçli olarak etkilenmez: süresi dolmuş bir Pro Plus, Business veya Enterprise anahtarı hâlâ süresi dolmuş olarak bildirilir, çünkü orada anahtarı bir yöneticinin yenilemesi gerekir ve tüm şirketi sessizce ücretsiz katmana düşürmek bunu gizlerdi.
Düzeltildi
- Telemetriyi kapatma tercihine artık her durumda uyuluyor. Uzantının dahili ayrıntılı tanılama modu açıkken bir kod yolu bu denetimi atlayabiliyordu. Bu mod, yayımlanan her derlemede kapalıdır; dolayısıyla hiçbir sürüm hiçbir zaman bu şekilde davranmadı, ancak denetim artık koşulsuz olarak yapılıyor.
- Ayarlar, yeniden yüklemeyi beklemek yerine anında uygulanıyor. Yol yeniden eşlemeyi, yorum hariç tutmayı, git-diff filtrelemeyi veya hariç tutulan dosya toplamlarını düzenlemek artık kapsamı hemen yeniden yüklüyor — özellikle de yol yeniden eşleme, çünkü tam olarak yollar örtüşmediği için başvurduğunuz ayar odur.
- "Unlock Full Features" ve "Switch to Community" yarıda durabiliyordu ve bunu bildirmiyordu. Her ikisi de artık sonuna kadar çalışıyor.
- Etkinleştirme anahtarınız aynı makine kimliğine bağlı kalıyor. Bazı kurulumlarda bu kimlik daha önce oturumlar arasında yeniden üretilebiliyordu ve bu, zaten verilmiş bir anahtarı geçersiz kılıyordu.
0.2025.9 — Eksiksiz Çeviriler
2023-12-02
Eklenenler
- Gönderilen 17 dilin tamamında eksiksiz çeviriler — etkinleştirme ve lisanslama iletişim kutuları, isteğe bağlı geri bildirim anketi, Community kilit açma akışı ve kendi kendine güncelleme bildirimleri dahil olmak üzere daha yeni arayüz metinlerinden yaklaşık yüz tanesi, İngilizce olmayan her pakette hâlâ İngilizceye geri düşüyordu. 17 dilin tamamı artık uzantının çalışma zamanı arayüzünün tamamını kapsıyor.
Değiştirildi
- Kaynak kodu yorumları, derleme betiği belgeleri ve paketleme dosya listesi üzerinde bir bakım geçişi. Uzantıda gönderilen dosya kümesi değişmedi; işlevsel veya davranışsal değişiklik yok.
0.2025.8 — Edisyonlar Artık Çakışamaz
2023-11-20
Düzeltildi
- Pro ve Community edisyonlarını aynı anda kurmak, başlangıçta bunlardan birinin çökmesine yol açabiliyordu — ikisi de aynı komutları ve aynı kapsam dosyaları görünümünü kaydediyor. Artık en baştan algılanıyor: diğer edisyon da kuruluysa, açıklanamayan bir etkinleştirme hatası yerine, birini kaldırmanızı söyleyen bir mesajla etkinleştirme temiz biçimde durur.
0.2025.7 — Bakım Çalışmaları
2023-10-30
Bakım sürümü; işlevsel değişiklik yok.
0.2024.6 — Community Katmanı ve Ekip Planları
2023-10-17
Kalıcı bir ücretsiz katman, koltuk havuzunu paylaşan ekip planları ve uzantının ayrı bir Community edisyonu.
Eklenenler
- Kalıcı, ücretsiz bir Community katmanı — 14 günlük deneme sona erdiğinde sert bir durdurma yerine, uzantı artık Community'ye yerleşiyor: MC/DC dışındaki her özellik, Full HTML Report ve kalıcı Annotated Source görünümlerinden sınırlı aylık bir tadımlık, otomatikleştirilebilir birkaç eylem üzerinde cömert günlük sınırlar ve geri kalan her şey sınırsız.
- Her özelliğin kilidini ücretsiz açın — yeni bir "Unlock Full Features" komutu, ayrıntılı kullanım telemetrisi karşılığında tam ve kısıtlamasız bir hak veriyor; istediğiniz zaman geri alınabilir. Bunun yerine isteğe bağlı bir uygulama içi geri bildirim anketi, hiçbir koşul olmadan 30 günlük tam özellikli bir anahtar kazandırıyor.
- Ekip planları: Pro Plus, Business ve Enterprise — bunlar, makine başına bir anahtar yerine bir koltuk havuzunu (bir şirket kodu ve bir koltuk sayısı) paylaşır; arka planda çalışan bir yoklama, koltuğa verilen hakkı güncel tutar ve iptal edilmiş veya azaltılmış bir koltuğu otomatik olarak işaretler.
- Fucini Coverage Studio Community — aynı kaynaktan derlenen, ayrı ve kendine ait bir liste; ücretli katmana ait deneme/etkinleştirme/ekip planı kodu yalnızca gizlenmiş değil, gerçekten yok. Bkz. indirme sayfası.
Değiştirildi
- Full HTML Report oluşturma ve kalıcı Annotated Source görünümleri (düz ve yan yana), Community temelinde artık ücretli katman özellikleridir — yalnızca yerinde geçiş görünümü kalır ve eskisi gibi aylık olarak sınırlanır. Kilidi açmak yine de bunların tamamını verir.
- Community katmanındaki bir kullanım sınırı uyarısı artık her iki yolu tek bir istemde sunuyor: ücretli planları görüntüleyin ya da telemetri yoluyla kilidi açın.
Düzeltildi
- Ayrıntılı, kimliği belirleyebilecek telemetri (işletim sistemi kullanıcı adı, ana dizin, CPU/RAM özellikleri, ağ arabirimleri ve rapor/kaynak kodun tamamı) artık yalnızca Community tarafından veya telemetriye bağlı ücretsiz bir hak üzerinden gönderilebilir — yerel telemetri ayarları ne olursa olsun, ücretli bir Pro/Pro Plus/Business/Enterprise lisansı tarafından asla gönderilmez.
- Daha eski bir yapıyı çalıştıran bir kurulum, yalnızca yükseltme yaptığı için artık yeni bir deneme süresi almıyor — eski denemesi zaten dolmuşsa artık doğru şekilde Community katmanına iniyor.
- Güncelleme bildirimi, indirme ilerlemesi ve hata mesajları artık dahili build numarasını sızdırmak yerine düz
Major.Year.Minor sürümünü gösteriyor (VS Code'un Extensions görünümünde gösterilenle aynı), örneğin 0.2024.6.2 yerine 0.2024.6.
0.2024.5 — İnce Ayarlı Lisans Anahtarları
2023-09-03
Etkinleştirme anahtarları artık tek tek özellikleri ayrı ayrı sınırlayabiliyor ve lisans yöneticileri panelden ince ayarlı bir anahtarı elle verebiliyor.
Eklenenler
- Özellik başına kullanım sınırları — etkinleştirme anahtarları artık tek bir ortak kapsam yükleme sınırı yerine her özelliği/eylemi bağımsız olarak sınırlayabiliyor (örneğin HTML rapor dışa aktarımları ayda 1). Mevcut anahtarlar değişmeden çalışmaya devam eder.
- Elle anahtar verme — lisans yöneticileri artık editör içi anket dışında alınan bir istek kodu için elle anahtar verebiliyor; hangi özelliklerin verileceğini, bir son kullanma tarihini ve özellik başına sınırları tam olarak seçebiliyor ve bir adres verildiğinde anahtar otomatik olarak e-postayla gönderiliyor.
0.2024.4 — Güncelleme Akışı Güvenilirliği
2023-07-24
Belirli kurumsal proxy'lerin arkasındaki kullanıcılardan yeni sürümleri gizleyebilen bir önbellek hatasını düzeltir.
Düzeltildi
- Kendi kendine güncelleme akışının güvenilirliği — güncelleme bildirimi artık katı bir no-cache başlığıyla sunuluyor, böylece fucini.software ile onu okuyan istemci arasındaki önbellekleyen bir proxy artık yeni sürümleri gizleyen eski bir kopya sunamaz.
0.2024.3 — Küçük Düzeltmeler ve Performans
2023-07-13
Küçük bir bakım sürümü: birkaç küçük hata düzeltmesi ve performans iyileştirmesi.
Düzeltildi
- Hata Düzeltmeleri — küçük hata düzeltmeleri ve kararlılık iyileştirmeleri.
- Performans — kapsam yükleme ve görüntülemede küçük performans iyileştirmeleri.
0.2024.2 — Otomatik Etkinleştirme
2023-06-20
Etkinleştirme anahtarları artık otomatik olarak veriliyor ve uygulanıyor — artık e-posta beklemeye gerek yok.
Değerlendirme sürümü. Her kurulum, ilk kullanımdan itibaren sayılan ve her şeyin açık olduğu ücretsiz 14 günlük deneme alır; ardından durmak yerine ücretsiz Community seviyesine geçer. İstek üzerine lisans anahtarı otomatik olarak verilir. Daha fazla bilgi →
Değiştirildi
- Otomatik etkinleştirme — anahtar talebi artık kısa bir anket gönderir ve alınan anahtarı ayarlarınıza otomatik olarak uygular, e-posta alışverişi olmadan.
- Daha hızlı yenilemeler — bir yenileme talebi yalnızca kullanım ve istek sorularını sorar; önceki bir talepten alınan iletişim bilgileriniz yeniden kullanılır, asla tekrar sorulmaz.
- Sabit değerlendirme penceresi — deneme artık herkes için, kurulumdan itibaren önceki 14 günlük geri sayımın yerine, 31.12.2026 tarihine kadar sürer.
- Yerelleştirilmiş etkinleştirme akışı — yenileme anketi ve etkinleştirme onayları artık uzantının geri kalanıyla aynı şekilde desteklenen tüm 18 dile çevrildi.
0.2024.1 · build 3 — Daha Akıllı Güncelleme Kontrolü
2023-06-02
Uzantı artık güncellemeler için hem fucini.software'i hem de VS Code Marketplace'i kontrol ediyor ve her zaman hangisi daha yeniyse onu sunuyor.
Düzeltildi
- Çift kaynaklı kontrol — artık hem fucini.software'i hem de VS Code Marketplace'i sorguluyor ve daha yeni sürümü sunuyor.
0.2024.0 — İlk Sürüm
2023-04-26
Fucini Coverage Studio'nun ilk genel sürümü — sektör standardı iz dosyalarını alan, tek bir kanonik modele normalleştiren, çalıştırmaları deterministik şekilde birleştiren ve VS Code'un yerleşik Test Coverage API'si üzerinden rapor veren yerleşik VS Code kapsamı.
Eklenenler
- Çok formatlı içe aktarma — LCOV, llvm-cov JSON, Cobertura XML, JaCoCo XML, Istanbul/nyc ve SimpleCov JSON, otomatik olarak algılanır.
- Deterministik birleştirme — birden çok iz dosyası, yükleme sırasından bağımsız olarak kararlı biçimde, kaydedilen köken bilgisiyle tek bir çalıştırmada birleştirilir.
- Yerleşik kapsam arayüzü — satır/dal/fonksiyon göstergeleri, genel bakış cetveli ve yerleşik Test Coverage paneli.
- MC/DC kapsamı — üzerine gelindiğinde karar bazında ayrıntı ve isteğe bağlı renkli kenar boşluğu göstergesi.
- Bileşik puan — satırlar, dallar, fonksiyonlar, bölgeler, MC/DC ve C++ örneklemeleri üzerinde SIL ağırlıklı harmonik ortalama.
- Uyumluluk kararı —
strict, whm, both ve either modlarıyla COMPLIANT / NON-COMPLIANT kontrolü.
- Yol yeniden eşleme, fark kapsamı, Explorer rozetleri ve proje geneli bir durum çubuğu.
- Editör içi analiz — fonksiyon CodeLens, dal üzerine gelme, ölü kod uyarıları, güncelliğini yitirmiş kapsam uyarıları ve Next/Previous Uncovered.
- Kapsanan Dosyalar görünümü, HTML raporları, geçmiş ve eğilimler, izleme modu ve Fucini JSON dışa aktarma.