Kod analizi
bee code analyze, MongoDB veya bee init gerektirmeden kaynak kodu denetler.
Aşağıdaki desteklenen bağlamlarla C#, TypeScript, Vue, Dart, Swift/iOS veya
Kotlin/Android derleyici motorunu seçebilirsiniz. Varsayılan motor altı C#
adlandırma ve bakım kolaylığı kuralını korur. Derleyici araçları ve bağımlılıklar
önceden kurulmalıdır; analiz bunları indirmez.
C# derleyici tanıları
Bölüm başlığı “C# derleyici tanıları”Repo dizininde çalıştırın:
bee code analyze --engine roslyn --jsonÖnce .NET SDK’yı ve projenin hedef framework’ü için gereken reference pack’leri kurun. Bee bunları indirmez; bulunamayan referansları eksik analiz olarak raporlar.
Bu motor, metnin tamsayıya atanmasındaki CS0029 gibi gerçek C# derleyici
tanılarını raporlar. Bulgular özgün kural kimliği ve kaynak konumunu korur.
Sürüm 2 raporu motoru, analiz profilini, kaynak snapshot’ını ve tamamlanma
durumunu da içerir. Analiz kapsamı ile test kapsamı ayrıdır; bu komut test
çalıştırmaz ve test kapsamını ölçmez.
Bee proje girdilerini okuyup analizi kendi sürecinde yapar. MSBuild target’ı, paket restore işlemi, generator veya repodaki analyzer eklentisi çalıştırmaz. Eksik bağımlılık ve tam çözümlenemeyen proje özellikleri eksik analiz sonucu üretir. Temiz sonuç raporlanan kapsam için geçerlidir; her hedef framework’ün derlendiğini kanıtlamaz.
Bu ilk dilim varsayılan Debug bağlamını destekler. Açıkça belirtilen
DefineConstants, DisableImplicitConfigurationDefines veya
DisableImplicitFrameworkDefines ayarları eksik analiz sonucu üretir.
Snapshot kaynak içeriğine bağlıdır; yalnız dal adı veya dosyanın değiştirilme
zamanına dayanmaz. Varsa Git bilgisi kaynak geçmişini belirtir; commit edilmemiş
kaynak değişiklikleri de içerik kimliğine girer. Aynı etkin girdiler, motor ve
profil aynı normalize analiz kimliğini üretir.
snapshot.dirty değeri null (bilinmiyor) kalır; kaynak girdilerini karşılaştırmak
için içerik kimliğini kullanın.
Varsayılan komut ve bee lint --native, sürüm 1 raporunu ve mevcut çıkış kodlarını
korur. Açıkça seçilen derleyici motorları sürüm 2 kullanır. Test kapsamı içe aktarma,
duplication ve yeni kod kalite kapıları sonraki geliştirmelerdir.
TypeScript, Vue ve Dart
Bölüm başlığı “TypeScript, Vue ve Dart”Motoru seçip kurulu araç yollarını açıkça belirtin. Bee analiz sırasında araç kurmaz, paket restore etmez ve proje scriptlerini çalıştırmaz. Komutları proje dizininde çalıştırın; mutlak araç yollarını kendi kurulumunuza göre değiştirin.
bee code analyze --engine typescript --project tsconfig.json --runtime /tools/node --toolchain /tools/node_modules --jsonbee code analyze --engine vue --project tsconfig.json --runtime /tools/node --toolchain /tools/node_modules --jsonbee code analyze --engine dart --project pubspec.yaml --toolchain /tools/dart-sdk --json| Motor | Bağlam ve çıktı |
|---|---|
typescript |
Seçilen tsconfig, kaynaklar ve yakalanan declaration girdileriyle gerçek Compiler API; özgün TSxxxx tanıları |
vue |
Script ve template denetimi için Vue language tools; bulgular özgün .vue kaynağına eşlenir |
dart |
Dart SDK analyzer, tanımlı package config ve desteklenen analiz seçenekleri; özgün analyzer kural kodları |
Node araç dizininde TypeScript, Vue için ayrıca bağımlılıklarıyla vue-tsc
bulunmalıdır. Güvenilir bir kurulu araç dizini kullanın. Proje bağımlılıklarının
önceden mevcut olması gerekir. Dart paket import’ları mevcut
.dart_tool/package_config.json üzerinden çözülür; desteklenen seçenekler
snapshot’a alınan relatif dosyaları veya package:lints kurallarını içerebilir.
Bu Dart motoru Flutter projelerini desteklemez.
Her motor kaynak ve bağımlılıkları yalnız kullanıcıya açık geçici dizine alır.
Raporda çalışan derleyici/SDK kimliği, kaynak konumu, bulgu parmak izi ve tamamlanma
durumu bulunur. Kaynak yolu seçimi raporlanan bulguları daraltır; gerekli derleme
bağlamı korunur. .NET dışı motorlar analiz edilen bağlamı sayar;
compiled-projects bu motorlarda uygulanamaz durumundadır.
Desteklenmeyen config eklentileri, çalıştırılabilir hook’lar, eksik bağımlılıklar
ve eşlenemeyen tanılar eksik analiz üretir. Vue preprocessor’ları, dış SFC script’leri
ve özel bloklar bu dilimin dışındadır. Harici motorlar sürüm 2 JSON veya metin
üretir; SARIF ve yerel ruleset desteklemez. Büyük araç snapshot’ları için
--timeout-seconds ile süreyi artırabilirsiniz.
Süre aşımı veya iptal sonrasında her motorun ayrı bir temizlik süresi vardır:
varsayılan 500 ms, dış derleyici süreçlerini yöneten adapter’larda 3 saniye.
Temizlik bu aralıkta bitmezse eksik analiz raporunda cleanup-timeout belirtilir.
Araç sürümleri
Bölüm başlığı “Araç sürümleri”Bu sürüm TypeScript 6.0.3, Vue language-core 3.3.6 ve Volar TypeScript
2.4.28 (test edilen vue-tsc 3.3.6 kurulumuyla gelir) ile Dart SDK 3.11.4
kabul eder. Diğer derleyici sürümleri eksik analiz üretir. Paket doğrulamalarında
Node 26.4.0 kullanılır. Uygulamanızın bağımlılık sürümleri farklıysa analiz
araçlarını ayrı bir dizinde tutabilirsiniz.
iOS için Swift, Android için Kotlin
Bölüm başlığı “iOS için Swift, Android için Kotlin”Native mobil analiz, açıkça tanımlanmış bir JSON derleme bağlamı kullanır. Seçilen modülün gerektirdiği kaynak dosyaları ve SDK bağımlılıklarını belirtin. Kaynak yolları komutun çalıştığı dizine göre relatif, araç ve SDK yolları mutlaktır. Bilinmeyen alanlar ve desteklenmeyen ayarlar reddedilir. Bee Xcode projesini, Swift paket manifestini veya Gradle build’ini değerlendirmez.
Swift için bu bağlamı bee-ios.json olarak kaydedin; SDK yolunu değiştirip o
SDK’nın desteklediği hedefi seçin. Bu motor Xcode bulunan bir macOS gerektirir.
{ "schemaVersion": 1, "language": "swift", "platform": "ios", "moduleName": "MobileApp", "sources": ["Types.swift", "Main.swift"], "sdkRoot": "/absolute/iPhoneOS.sdk", "targetTriple": "arm64-apple-ios18.0", "defines": ["DEBUG"], "dependencies": []}bee code analyze --engine swift --project bee-ios.json --toolchain /absolute/XcodeDefault.xctoolchain --timeout-seconds 600 --jsonBüyük bir iOS SDK’sını kopyalamak ve UIKit kullanan kaynaklarda tip kontrolü yapmak, özellikle Intel Mac’lerde birkaç dakika sürebilir. Bu örnek on dakika tanır; varsayılan süre sınırı 60 saniyedir.
Swift dependencies alanı aynı modüle ait ek normal .swift kaynaklarını alır;
önceden derlenmiş özel modül veya paket manifesti almaz. Motor seçilen iOS SDK’sını
ve gerekli derleyici kaynaklarını snapshot’a alıp belirtilen kaynaklarda tip
kontrolü yapar. Bulgular gerçek derleyici sürümü ve fiziksel kaynak konumlarıyla
swift.compiler kuralını kullanır. Simulator ve macOS uygulama bağlamları bu iOS
diliminin dışındadır. Özel macro’lar, desteklenmeyen attribute’lar,
#sourceLocation, karma Objective-C ve bridging header desteklenmez.
Kotlin için bağlamı bee-android.json olarak kaydedin; gerçek Android SDK jar’ını
ve kurulu derleyici/Java yollarını belirtin:
{ "schemaVersion": 1, "language": "kotlin", "platform": "android", "moduleName": "MobileApp", "sources": ["Types.kt", "Main.kt"], "androidJar": "/absolute/android-sdk/platforms/android-36/android.jar", "classpath": [], "jvmTarget": "17"}bee code analyze --engine kotlin --project bee-android.json --toolchain /absolute/kotlinc --runtime /absolute/jdk/bin/java --timeout-seconds 180 --jsonclasspath, derleme metadatası olarak okunan mevcut proje JAR’larını içerir.
Java çalışma ortamı güvenilir Kotlin derleyicisini çalıştırır; Android API tipleri
android.jar üzerinden çözülür. Masaüstü JDK sınıfları Android API’si sayılmaz.
Tanılar kotlin.compiler kuralını ve derleyicinin yapılandırılmış konumlarını
kullanır. Kotlin scripting, KAPT/KSP, Compose/derleyici eklentileri, karma Java ve
Kotlin Multiplatform desteklenmez. Gereken üretilmiş tipler, açıkça tanımlanmış ve
desteklenen kaynak veya bağımlılık metadatası olarak önceden mevcut olmalıdır.
İki bağlam da sizin belirttiğiniz kapsamı anlatır. Tamamlanan analiz; uygulama paketleme, imzalama, kaynaklar, minSdk/desugaring, emülatör, cihaz veya çalışma zamanı davranışını doğrulamaz. Eksik SDK/bağımlılık ve desteklenmeyen bağlam çıkış 5 üretir. Linux veya Windows üzerinde Swift iOS da 5 döndürür. Büyük SDK snapshot’ları normal kaynak denetiminden daha uzun sürebilir.
Swift, eşleşen tanı kütüphanesiyle 6.x derleyici gerektirir; yerel referans
kontrolünde Swift 6.4 kullanıldı. Raw string ve raw regex literal’ları ile test
edilmiş izin listesinin dışındaki attribute ve direktifler desteklenmez.
Kotlin 2.1.21, Java 17 JDK ve 17 değerinde jvmTarget gerektirir.
Doğrulama paketi Android API 36 kullanır; tanımladığınız bağlama uygun SDK’yı seçin.
Yerel kalite kuralları
Bölüm başlığı “Yerel kalite kuralları”bee code analyze src --scope source --jsonbee code analyze --format sarifbee lint src --native --scope source --jsonbee lint --native dört adlandırma kuralını çalıştırır. bee code analyze bunlara
metot uzunluğu ve karmaşıklığı ekler. Projenin kendi linter’ını çalıştıran mevcut
mod da kullanılabilir.
| Kural | Denetim |
|---|---|
| BEE1001 | Private alanlarda _camelCase |
| BEE1002 | Private sabitlerde PascalCase |
| BEE1003 | Async metotlarda Async son eki; override/interface istisnalarıyla |
| BEE1004 | Normal üst düzey public sınıf adı ile dosya adının eşleşmesi |
| BEE2001 | Metot gövdesinde varsayılan en fazla 200 fiziksel satır |
| BEE2002 | Varsayılan en fazla 10 dallanma karmaşıklığı |
BEE1004; nested, partial, file-local sınıfları, otomatik Program sınıfını ve
bir arada duran record/interface/enum tanımlarını kapsamaz. Uzunluk, metot
gövdesindeki iç kaynak satırlarını da sayar. Karmaşıklık, blok gövdeli yerel fonksiyonları ayrı ölçer. Expression-bodied
metot/yerel fonksiyonlar ve lambda/anonymous gövdeler bu sürümde ayrı ölçülmez;
rapor bu metrik kapsamını eksik gösterir. Yorumlar ve metinler dal sayılmaz.
Kapsam ve raporlar
Bölüm başlığı “Kapsam ve raporlar”Varsayılan compiled kapsamı, proje dosyalarından seçilen C# girdilerini ve
önişlemci sembollerini çıkarır; MSBuild, build target veya generator çalıştırmaz.
Mevcut graph yükleyicisi, seçilen bir hedef framework ve Roslyn Preview kullanılır.
Çözümlenemeyen bağlam ve sınırlamalar raporda görünür; bütün hedef framework’lerin
derlendiği iddia edilmez. --scope source doğrudan C# dosyalarını tarar.
İki mod da repo kodunu çalıştırmaz.
Yerel JSON ve SARIF 2.1.0 raporlarında kural kimliği, konum, bulgu parmak izi, kapsam ve eksik inceleme nedenleri bulunur. Değişmeyen sembolün üstüne satır eklemek parmak izini değiştirmez; sembolün kimliğini değiştirmek değiştirebilir. Desteklenmeyen dil, eksik dosya ve okuma/ayrıştırma hatası temiz sonuç sayılmaz. Yerleşik BEE kuralları C# içindir; derleyici tanıları için yukarıdaki açık dil motorlarını kullanın.
| Çıkış | Anlam |
|---|---|
| 0 | Kurallar çalıştı, kaynak incelendi, bulgu yok |
| 1 | Bulgu var |
| 4 | Komut veya ruleset geçersiz |
| 5 | Analiz çalışamadı veya eksik kaldı |
Eksik analizde bulgu da varsa çıkış yine 5 olur. CI, incelemenin yapılamaması ile temiz sonucu ayırmalıdır.
Ruleset
Bölüm başlığı “Ruleset”bee lint --catalog --jsonbee lint --validate-ruleset ruleset.json --jsonbee lint --self-test --ruleset ruleset.json --jsonbee code analyze --ruleset ruleset.json --format sarif{ "version": 1, "rules": [ { "id": "BEE1001", "severity": "error" }, { "id": "BEE2001", "options": { "max-lines": 120 } } ], "scope": "source"}Bilinmeyen kural, yinelenen alan, hatalı seçenek adı, desteklenmeyen sürüm ve boş
kural seçimi reddedilir. Self-test, seçilen gerçek kuralları olumlu ve olumsuz
örneklerle çalıştırır. bee hook rule ile yazılan doğal dil yönergeleri otomatik
olarak çalıştırılabilir analiz kuralına dönüşmez. Bkz. bee lint.
Analizi kaydetme ve yeniden okuma
Bölüm başlığı “Analizi kaydetme ve yeniden okuma”Derleyici analizini açıkça kaydedin; ardından derleyiciyi yeniden çalıştırmadan küçük bir sonuç özeti okuyun:
bee code analyze --engine roslyn --save-run --jsonbee code runs list --json --limit 10 --budget 4096bee code runs show <run-id> --json --limit 20 --budget 8192--save-run, roslyn, typescript, vue, dart, swift ve kotlin derleyici motorlarını destekler. Native/schema-1 ve SARIF çıktısını desteklemez. Bu seçenek olmadan mevcut analiz çıktısı ve saklama davranışı korunur.
--save-run --json, analiz ve saklama sonucunu tek analysis-save zarfında döndürür. Başarılı kayıt analiz çıkış kodunu korur: temiz sonuçta 0, bulguda 1, eksik analizde 5. Mevcut bir run ID üzerine yazılmadan 8 döndürülür. Diğer saklama hataları 5 döndürür; asıl analiz sonucu ayrı tutulur. Geçersiz istekler kaydedilmez. Aşırı büyük raporda başarılı kayıt yerine raporun atlandığını belirten açık bir özet döner.
Her koşu değiştirilmeyen ayrı bir yerel kayıttır. list metadata’yı kontrol eder ve integrity: report-not-checked bildirir. show, raporun baytlarını, hashlerini ve kimlik alanlarının tutarlılığını da doğrulayıp integrity: verified verir. Sağlam bir eksik veya bulgulu raporu okumak 0 ile çıkar; analysisStatus ve analysisExitCode asıl sonucu göstermeye devam eder. Bulunmayan koşu 3, geçersiz argüman 4, okunamayan veya bozuk kayıt 5 döndürür.
İki okuma komutunda varsayılan sınır 20 sonuç ve 16.000 karakterdir. --limit 0–200, --budget son satır sonu dahil 2.048–65.536 UTF-16 karakter kabul eder. Sığmayan kayıtlar bütün olarak çıkarılır ve sayıları belirtilir. Eksik tarama, tam bir son-sonuç listesi gibi gösterilmez.
Geçmiş, analizin çalışma dizinine aittir. Başka dizinin geçmişini okumak için --root DIR kullanın; ayrı checkout’lar kendiliğinden birleşmez. Dosyalar Bee’nin yerel analysis/runs/v1 dizininde tutulur. Kayıt isteğe bağlıdır ve eski kayıtları otomatik silmez; rapor başına sınırlar toplam disk kotası değildir.
Rapor mevcut kaynak ve araç kimliklerini korur. Erken hatalarda kaynak veya profil hash’i bulunmayabilir; analysis key tek başına aynı kaynak girdilerini kanıtlamaz. Bu geçmiş ayar uyumluluğu, baseline karşılaştırması, test coverage veya kalite kapısı sonucu üretmez. Eski raporu yeniden okumak analiz tekrarını önler; güncel kaynağın değişip değişmediğini göstermez.