Koodianalüüs
bee code analyze kontrollib lähtekoodi ilma MongoDB või bee init käsuta.
Vali C#, TypeScripti, Vue, Darti, Swift/iOS-i või Kotlin/Androidi mootor allpool
kirjeldatud toetatud kontekstiga. Vaikemootor säilitab kuus C# nime- ja
hooldatavusreeglit. Kompilaatorid ja sõltuvused peavad juba olema paigaldatud;
analüüs ei laadi neid alla.
C# kompilaatori diagnostika
Jaotis „C# kompilaatori diagnostika”Käivita hoidla kaustas:
bee code analyze --engine roslyn --jsonPaigalda esmalt .NET SDK ja projekti sihtraamistiku jaoks vajalikud reference pack’id. Bee ei laadi neid alla; puuduvad viited tähendavad osalist analüüsi.
Mootor tagastab päris C# kompilaatori diagnostika, näiteks CS0029, kui string
omistatakse täisarvule. Leiud säilitavad algse reegli tunnuse ja lähtekoha.
Versiooni 2 aruanne sisaldab ka mootorit, analüüsiprofiili, lähtekoodi hetktõmmist
ja lõpetamise olekut. Analüüsi ulatus ja testikate on eraldi; käsk ei käivita
teste ega mõõda testikatet.
Bee loeb projekti sisendeid ja analüüsib neid oma protsessis. See ei käivita MSBuildi sihtülesandeid, paketitaastet, generaatoreid ega hoidla analüsaatori pluginaid. Puuduvad sõltuvused ja täpselt taastamata projektifunktsioonid annavad osalise tulemuse. Puhas tulemus kehtib aruandes toodud ulatusele, mitte kõikide sihtraamistike ehitamisele.
Esimene versioon toetab vaikimisi Debug-konteksti. Selgesõnalised
DefineConstants, DisableImplicitConfigurationDefines või
DisableImplicitFrameworkDefines sätted annavad osalise analüüsi.
Hetktõmmise identiteet sõltub lähtekoodi sisust, mitte ainult haru nimest või
faili muutmisajast. Git on olemasolul päritoluteave; commit’imata lähtekood kuulub
samuti sisuidentiteeti. Samad tegelikud sisendid, mootor ja profiil annavad sama
normaliseeritud analüüsiidentiteedi.
snapshot.dirty jääb väärtusele null (teadmata); lähtesisendite võrdlemiseks
kasutage sisuidentiteeti.
Vaikekäsk ja bee lint --native säilitavad versiooni 1 aruande ning senised
väljumiskoodid. Selgesõnaliselt valitud kompilaatorimootorid kasutavad versiooni 2.
Testikatte import, duplikatsioonid ning uue koodi kvaliteediväravad on edasine töö.
TypeScript, Vue ja Dart
Jaotis „TypeScript, Vue ja Dart”Vali mootor ja määra olemasolevad tööriistad selgesõnaliselt. Bee ei paigalda analüüsi ajal tööriistu, taasta pakette ega käivita projekti skripte. Käivita käsud projekti kaustas ning asenda absoluutsed tööriistarajad oma paigaldusega.
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| Mootor | Kontekst ja väljund |
|---|---|
typescript |
TypeScript Compiler API, valitud tsconfig, lähtekood ja kopeeritud deklaratsioonid; algsed TSxxxx teated |
vue |
Vue language tools kontrollib skripti ja malli; leiud viitavad algsele .vue lähtekoodile |
dart |
Dart SDK analüsaator, deklareeritud paketikontekst ja toetatud analüüsivalikud; algsed reeglikoodid |
Node’i tööriistakaust sisaldab TypeScripti ning Vue jaoks vue-tsc paketti koos
sõltuvustega. Kasuta usaldusväärset paigaldatud tööriistakomplekti. Projekti
sõltuvused peavad juba olemas olema. Darti paketiviited kasutavad olemasolevat
.dart_tool/package_config.json faili. Toetatud valikud võivad sisaldada
kopeeritud suhtelisi faile või package:lints reegleid. See Darti mootor ei toeta
Flutteri projekte.
Mootor analüüsib lähtekoodi ja sõltuvuste koopiat privaatses ajutises kaustas.
Aruanne sisaldab tegeliku kompilaatori/SDK identiteeti, lähtekohti, sõrmejälgi ja
lõpetamise olekut. Failivalik piirab leide, kuid vajalik kompileerimiskontekst
säilib. Mitte-.NET mootorid loendavad analüüsitud kontekste; compiled-projects
ei ole nende jaoks kohaldatav.
Toetamata pluginad, käivitatavad hook’id, puuduvad sõltuvused ja kaardistamata
teated annavad osalise tulemuse. Vue eeltöötlus, välised SFC-skriptid ning
kohandatud plokid jäävad sellest versioonist välja. Välised mootorid väljastavad
versiooni 2 JSON-i või teksti; SARIF ja natiivsed reeglistikud pole toetatud.
Suurema tööriistakoopia jaoks suurenda aega valikuga --timeout-seconds.
Pärast ajalimiidi ületamist või tühistamist on igal mootoril eraldi koristusaken:
vaikimisi 500 ms, väliseid kompilaatoriprotsesse haldavatel adapteritel 3 sekundit.
Kui koristamine selle ajaga ei lõpe, sisaldab mittetäielik aruanne põhjust cleanup-timeout.
Tööriistaversioonid
Jaotis „Tööriistaversioonid”See väljalase aktsepteerib TypeScript 6.0.3, Vue language-core 3.3.6 koos
Volar TypeScript 2.4.28-ga (testitud vue-tsc 3.3.6 paigaldusest) ning
Dart SDK 3.11.4. Muud kompilaatoriversioonid annavad osalise analüüsi.
Paketikontroll kasutab Node 26.4.0. Kui rakenduse sõltuvusversioonid erinevad,
hoia analüüsitööriistad eraldi kaustas.
Swift iOS-i ja Kotlin Androidi jaoks
Jaotis „Swift iOS-i ja Kotlin Androidi jaoks”Mobiilianalüüs kasutab selgesõnalist JSON-kompileerimiskonteksti. Deklareeri valitud mooduli vajalikud lähtefailid ja SDK-sõltuvused. Lähtefailide rajad on käsu käivitamise kausta suhtes; tööriistade ja SDK rajad on absoluutsed. Tundmatud väljad ja toetamata sätted lükatakse tagasi. Bee ei hinda Xcode’i projekti, Swift-paketi manifesti ega Gradle’i ehitust.
Salvesta Swifti kontekst failina bee-ios.json, asenda SDK rada ning vali SDK
poolt toetatud siht. Mootor vajab macOS-i koos Xcode’iga.
{ "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 --jsonMahuka iOS SDK kopeerimine ja UIKitiga lähtekoodi tüübikontroll võivad võtta mitu minutit, eriti Inteli Macides. See näide lubab kümme minutit; vaikimisi ajalimiit on endiselt 60 sekundit.
Swifti dependencies sisaldab sama mooduli täiendavaid tavalisi .swift
lähtefaile, mitte eelkompileeritud kohandatud mooduleid või paketimanifeste.
Mootor kopeerib valitud iOS SDK ja vajalikud kompilaatori ressursid ning kontrollib
deklareeritud failide tüüpe. Leiud kasutavad reeglit swift.compiler, tegelikku
kompilaatoriversiooni ja füüsilisi lähtekohti. Simulaatori ja macOS-i rakenduste
kontekstid jäävad sellest iOS-i versioonist välja. Kohandatud makrod, toetamata
atribuudid, #sourceLocation, segatud Objective-C ja bridging header’id pole
toetatud.
Salvesta Kotlini kontekst failina bee-android.json ning määra tegelik Androidi
SDK jar ja paigaldatud kompilaatori/Java rajad:
{ "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 sisaldab olemasolevaid projekti JAR-e, mida loetakse
kompileerimismetaandmetena. Java käivitab usaldusväärse Kotlini kompilaatori;
Androidi API tüübid tulevad android.jar failist. Töölaua JDK klassid ei muutu
Androidi API-deks. Teated kasutavad kotlin.compiler reeglit ja kompilaatori
struktureeritud asukohti. Kotlini skriptid, KAPT/KSP, Compose/kompilaatoripluginad,
segatud Java ja Kotlin Multiplatform pole toetatud. Vajalikud genereeritud tüübid
peavad juba olemas olema deklareeritud toetatud lähtekoodi või sõltuvusena.
Mõlemad kontekstid kirjeldavad sinu määratud ulatust. Lõpetatud analüüs ei tõenda rakenduse pakendamist, allkirjastamist, ressursse, minSdk/desugaring’ut, emulaatoreid, seadmeid ega käitusaegset toimimist. Puuduv SDK/sõltuvus või toetamata kontekst annab väljumiskoodi 5. Swift iOS Linuxis või Windowsis annab samuti 5. Suure SDK kopeerimine võib võtta tavalisest lähtekoodikontrollist kauem aega.
Swift vajab 6.x kompilaatorit koos sobiva diagnostikateegiga; kohalik kontroll
kasutas Swift 6.4. Toortekstid ja toored regex-literaalid ning testitud lubatud
loendist väljas olevad atribuudid ja direktiivid pole toetatud. Kotlin vajab
versiooni 2.1.21, Java 17 JDK-d ja jvmTarget väärtust 17.
Kontrollpakett kasutab Android API 36; vali oma deklareeritud konteksti SDK.
Natiivsed kvaliteedireeglid
Jaotis „Natiivsed kvaliteedireeglid”bee code analyze src --scope source --jsonbee code analyze --format sarifbee lint src --native --scope source --jsonbee lint --native kontrollib nelja nimereeglit. bee code analyze lisab meetodi
pikkuse ja keerukuse. Projekti enda linteri käivitamine jääb alles.
| Reegel | Kontroll |
|---|---|
| BEE1001 | Privaatväljad: _camelCase |
| BEE1002 | Privaatkonstandid: PascalCase |
| BEE1003 | Asünkroonse meetodi lõpp Async, override/interface eranditega |
| BEE1004 | Tavalise ülemise taseme public-klassi nimi vastab failinimele |
| BEE2001 | Meetodi keha pikkus vaikimisi kuni 200 füüsilist rida |
| BEE2002 | Tsüklomaatiline keerukus vaikimisi kuni 10 |
BEE1004 ei hõlma pesastatud, partial- ja file-local klasse, automaatset Program
klassi ega rühmitatud record/interface/enum deklaratsioone. Pikkus sisaldab keha
sisse jäävat pesastatud lähtekoodi. Keerukus mõõdab plokiga kohalikke funktsioone eraldi. Expression-bodied
meetodeid/kohalikke funktsioone ja lambda/anonymous kehi eraldi ei mõõdeta;
aruandes on see meetrikakate puudulik. Kommentaarid ja stringid pole harud.
Ulatus ja aruanded
Jaotis „Ulatus ja aruanded”Vaikimisi compiled taastab valitud C# sisendid ja eelprotsessori sümbolid
projektifailidest, käivitamata MSBuildi, sihtülesandeid või generaatoreid. Kasutatakse
olemasolevat graafilaadurit, üht valitud sihtraamistikku ja Roslyn Preview’d.
Lahendamata kontekst ja piirangud on aruandes nähtavad; kõigi sihtraamistike
kompileerimist ei väideta. --scope source skannib C# faile otse.
Kumbki režiim ei käivita hoidla koodi.
Natiivsed JSON ja SARIF 2.1.0 näitavad reegleid, asukohti, leiu sõrmejälgi, ulatust ja puuduliku analüüsi põhjusi. Muutumatu sümboli ette lisatud read ei muuda sõrmejälge; sümboli identiteedi muutus võib seda muuta. Toetamata keel, puuduv fail ja lugemis-/parsimisviga ei anna puhast tulemust. Sisseehitatud BEE reeglid toetavad C#-i; kompilaatori diagnostikaks kasuta eespool kirjeldatud keelemootoreid.
| Väljumiskood | Tähendus |
|---|---|
| 0 | Reeglid käivitati, lähtekoodi kontrolliti, leide pole |
| 1 | Leiti probleeme |
| 4 | Vigane käsk või reeglistik |
| 5 | Analüüs ei käivitunud või jäi osaliseks |
Osaline analüüs koos leidudega väljub ikka koodiga 5.
Reeglistikud
Jaotis „Reeglistikud”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"}Tundmatud reeglid, korduvad väljad, valed valikunimed, toetamata versioonid ja tühi
reeglivalik lükatakse tagasi. Enesetest käivitab valitud päris reeglid positiivsete
ja negatiivsete näidetega. bee hook rule loomuliku keele juhiseid ei muudeta
automaatselt käivitatavaks analüsaatoriks. Vt bee lint.
Analüüsi salvestamine ja uuesti lugemine
Jaotis „Analüüsi salvestamine ja uuesti lugemine”Salvesta kompilaatorianalüüs selgesõnaliselt ning loe hiljem lühikokkuvõtet ilma kompilaatorit uuesti käivitamata:
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 toetab kompilaatorimootoreid roslyn, typescript, vue, dart, swift ja kotlin. Native/schema-1 ja SARIF-väljundit see ei toeta. Ilma selle liputa jäävad senine analüüsiväljund ja salvestuskäitumine samaks.
--save-run --json annab ühe analysis-save ümbrise koos analüüsi ja salvestustulemusega. Edukas salvestamine säilitab analüüsi väljumiskoodi: puhas tulemus 0, leiud 1, mittetäielik analüüs 5. Olemasolev run ID annab 8 ilma kirjet üle kirjutamata. Muud salvestusvead annavad 5, algne analüüsitulemus jääb eraldi. Vigaseid päringuid ei salvestata. Liiga suure aruande puhul tagastatakse selge väljajätmise kokkuvõte, mitte edukas salvestus.
Igal käivitusel on muutumatu kohalik kirje. list kontrollib metaandmeid ja annab integrity: report-not-checked. show kontrollib ka aruande baite, räsi ja identiteediväljade vastavust ning annab integrity: verified. Terve mittetäieliku või leidudega aruande lugemine lõpeb koodiga 0; analysisStatus ja analysisExitCode näitavad algset tulemust. Puuduv kirje annab 3, vigased argumendid 4, loetamatu või rikutud kirje 5.
Mõlemad lugemiskäsud näitavad vaikimisi kuni 20 tulemust 16 000 märgi piires. --limit lubab 0–200 ja --budget 2048–65 536 UTF-16 märki koos lõpureavahetusega. Välja jäetakse terved kirjed ja nende arv näidatakse. Osalist skanni ei esitata täieliku uusimate tulemuste loendina.
Ajalugu kuulub analüüsi töökataloogile. Teise kataloogi ajaloo lugemiseks kasuta --root DIR; eraldi checkout’id ei ühine automaatselt. Failid asuvad Bee kohalikus analysis/runs/v1 kataloogis. Salvestamine on valikuline ega kustuta vanu kirjeid automaatselt; ühe aruande piirang ei ole kogu ketta kvoot.
Aruanded säilitavad olemasolevad lähtekoodi ja tööriistade identiteedid. Varajastel vigadel võib puududa lähtekoodi või profiili räsi; analysis key üksi ei tõesta samu lähteandmeid. Ajalugu ei kinnita seadistuste ühilduvust, baasjoone võrdlust, testikatvust ega kvaliteedivärava tulemust. Vana aruande lugemine väldib uut analüüsi, kuid ei tuvasta praeguse lähtekoodi muutusi.