İçeriğe geç

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.

Repo dizininde çalıştırın:

Terminal window
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.

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.

Terminal window
bee code analyze --engine typescript --project tsconfig.json --runtime /tools/node --toolchain /tools/node_modules --json
bee code analyze --engine vue --project tsconfig.json --runtime /tools/node --toolchain /tools/node_modules --json
bee 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.

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.

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": []
}
Terminal window
bee code analyze --engine swift --project bee-ios.json --toolchain /absolute/XcodeDefault.xctoolchain --timeout-seconds 600 --json

Bü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"
}
Terminal window
bee code analyze --engine kotlin --project bee-android.json --toolchain /absolute/kotlinc --runtime /absolute/jdk/bin/java --timeout-seconds 180 --json

classpath, 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.

Terminal window
bee code analyze src --scope source --json
bee code analyze --format sarif
bee lint src --native --scope source --json

bee 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.

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.

Terminal window
bee lint --catalog --json
bee lint --validate-ruleset ruleset.json --json
bee lint --self-test --ruleset ruleset.json --json
bee 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.

Derleyici analizini açıkça kaydedin; ardından derleyiciyi yeniden çalıştırmadan küçük bir sonuç özeti okuyun:

Terminal window
bee code analyze --engine roslyn --save-run --json
bee code runs list --json --limit 10 --budget 4096
bee 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.