Liigu sisu juurde

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:

Terminal window
bee code analyze --engine roslyn --json

Paigalda 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öö.

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.

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

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

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

classpath 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”
Terminal window
bee code analyze src --scope source --json
bee code analyze --format sarif
bee lint src --native --scope source --json

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

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.

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"
}

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:

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