Eklenti:F5 tuşuna basın. Run Extension yapılandırması npm: build görevini çalıştırır, ardından bu eklenti yüklü bir Extension Development Host açar. O pencerede herhangi bir Git deposunu açın ve komutları çalıştırın.
CLI:npm run build:cli && node dist/cli.js /path/to/repo veya derlemeden npx tsx src/cli/index.ts /path/to/repo.
Testler Node'un yerleşik node:test çalıştırıcısını ve tsx kullanır. VS Code örneği gerekmez: test edilen kod vscode içe aktarmaz.
Dosya
Kapsadığı
test/jsAnalyzer.test.ts
JS kuralları (hata ayıklama, boş catch, parametreler, gizli bilgiler, hata yönetimi, isimler, karmaşıklık), Python temelleri, dosyalar arası tekrarlar
test/config.test.ts
Ön ayar geçerliliği, doğrulayıcı hataları, ön ayar tespiti
test/contributors.test.ts
Aktif günler, kimlik birleştirme (tüm anahtar türleri ve korumaları), etiketler, açık kimlikler
test/glob.test.ts
Glob → RegExp, köke bağlı ve bağlı olmayan kalıplar, dosya adı eşleştirme
test/scoring.test.ts
Puan formülünün özellikleri, güven seviyeleri, sıralama eşiği, parmak izi kararlılığı
test/cliFormat.test.ts
Metin ve Markdown çıktısı, sıralanmayanlar bölümü, --fail-on mantığı
test/attribution.test.ts
Eski blame ayrıştırma ve sahiplik yardımcıları
test/integration.test.ts
Gerçek geçici Git depolarında uçtan uca: adil atama, düzeltmeler, boşluk yeniden biçimlendirme, hariç tutmalar, kök commit, küçük katkıcılar
Entegrasyon testleri geçici bir dizinde git init ile depolar oluşturur ve yalıtılmış, boş bir git yapılandırması kullanır; bu yüzden genel Git ayarlarınıza bağlı değildir. Tek bir dosyayı çalıştırmak için:
.github/workflows/ci.yml, main dalına yapılan push'larda ve pull request'lerde, Ubuntu, Windows ve macOS × Node 22 ve 24 üzerinde çalışır:
npm ci → typecheck → lint → test → build → vsce package.
Ubuntu / Node 24 işi .vsix dosyasını bir artifact olarak yükler. Windows bilerek dahil edilmiştir: yol ayıraçları, CRLF çıktısı ve git.exe çözümlemesi daha önce gerçek hatalara yol açtı (değişiklik günlüğüne bakın).
package.json içindeki version değerini artırın; CHANGELOG.md dosyasına bir girdi ekleyin.
CI'ın yeşil olduğundan emin olun.
npm run build && npx vsce package --no-dependencies → cleanlens-<version>.vsix.
npx vsce publish ile yayınlayın (cleanlens yayıncısı için bir PAT gerekir) veya .vsix dosyasını Marketplace yayıncı portalına yükleyin.
İsteğe bağlı olarak CLI için npm publish (aynı sürüm).
website/lib/constants.ts içindeki EXTENSION_VERSION değerini güncelleyin.
package.json içindeki files listesi neyin paketleneceğini belirler (hem .vsix hem de npm paketinde): iki paket, simgeler, README.md, CHANGELOG.md, docs/PRIVACY.md, docs/RULES.md, LICENSE.txt. Bu klasördeki diğer dokümanlar paketlenmez; pakette olmalarını istiyorsanız files listesine ekleyin.
Mevcut yapılandırma dosyaları yeni kuralı listelemez; bu yüzden kullanıcılar ekleyene kadar onlar için kapalıdır (bulunmayan kural kapalıdır). Doğrulayıcı, kural RULE_IDS içine eklendiği anda onu kabul eder.
analyze<Lang>(filePath, text, config): RawFinding[] fonksiyonunu ve uzantı listesini dışa aktaran src/analyzers/<lang>Analyzer.ts dosyasını oluşturun. model.ts içindeki ruleEnabled, ruleLimit, ruleOption fonksiyonlarını kullanın ve secrets.ts / names.ts dosyalarını yeniden kullanın.
runAnalyzers.ts içinde kaydedin: uzantıları ALL_EXTENSIONS listesine ve analyzerFor() içine bir dal ekleyin. HEAD taraması, commit yürüyüşü ve canlı tanıların tümü analyzerFor() kullanır; başka bir şeyi bağlamaya gerek yoktur.
fingerprint.ts dosyasının o dilin satır yorumu sözdizimini temizlediğini kontrol edin (bugün // ve #).
presets.ts içinde bir ön ayar ve detectPreset() içinde tespitini düşünün.
docs/*.md English — the source of truthdocs/ar/*.md Arabicdocs/tr/*.md Turkish
İngilizce asıl kaynaktır. Bir İngilizce dokümanı değiştirdiğinizde iki çeviriyi aynı değişiklikte güncelleyin. Web sitesindeki doküman sayfalarının (bkz. 16) çalışmaya devam etmesini sağlayan kurallar:
Başlık yapısını aynı tutun (aynı sayıda başlık, aynı düzeyler, aynı sıra). Site, çevrilmiş başlıklara konumlarına göre İngilizce bağlantı kimliklerini verir; böylece bağlantılar ve URL'ler her dilde aynıdır.
Bölüm bağlantıları her dilde İngilizce kimlikleri kullanır (örn. 08-scoring.md#severity-weights).
docs/ dışındaki dosyalara giden bağlantılar çevirilerde bir düzey daha yukarı çıkar (../src/… yerine ../../src/…).
Kod blokları, tanımlayıcılar, kural kimlikleri, yapılandırma anahtarları ve CLI çıktısı İngilizce kalır.
Bir çeviri dosyası yoksa site İngilizce olanı gösterir.
package.json içinde contributes.configuration.properties altında tanımlayın.
src/extension.ts içindeki readSettings() fonksiyonunda okuyun.
Bir yapılandırma anahtarına karşılık geliyorsa src/core/analyzeRepository.ts içindeki ExtensionSettings ve applySettings() yapılarına ekleyin. Kullanıcı ayarlamadıysa undefined tercih edin; böylece yapılandırma dosyası bir varsayılan tarafından geçersiz kılınmaz.