Kelionė
1) “OpenEdge” projekto pavyzdžio generavimas naudojant AI
Norėdami pradėti, paprašiau AI sugeneruoti mažą “OpenEdge” Projektas, kuriame yra apie dešimt failų. Projektas apėmė paprastą meniu UI, kai failų įvestį ir išvestį bei pagrindinius skaičiavimus.
AI uždavė keletą paaiškinančių klausimų ir tada grąžino ZIP failą su instrukcijomis.
Pirmoji versija nebuvo sudaryta. Aš nukopijavau kompiliatoriaus klaidas atgal į AI ir iteravau, kol projektas pagaliau suveikė. AI taip pat įterpė komentarus, kur sąmoningai pristatė blogą kodavimo praktiką. Tai palengvino vėliau išbandyti pasirinktines taisykles.
2) “SonarQube” paleidimas “Docker”
Toliau įdiegiau “Docker Desktop for Windows” ir paleidau oficialų “SonarQube” vaizdą iš “Docker Hub”.
Iš pradžių palikau prievadą nustatytą 0, kad “Docker” automatiškai priskirtų vieną. Tai pasirodė esanti klaida. Kiekvienas konteinerio paleidimas iš naujo pakeitė pagrindinio kompiuterio prievadą, o tai reiškė, kad nuolat turėjau atnaujinti URL ir konfigūraciją.
Sprendimas buvo paprastas: prijunkite “SonarQube” prie statinio prievado.
3) Projekto struktūra ir sonarinio projekto savybės
Aš sukūriau minimalų savybių failą projekto root sonar-project.properties ('rnd2' buvo mano “OpenEdge” projekto pavadinimas):
.avif)
Štai mano projekto failų struktūra (src įtraukta į PROPATH):

4) Pirmasis prisijungimas, papildiniai ir ankstyvos klaidos
Paleidęs “SonarQube”, prisijungiau ir sukūriau naują projektą.
Iš pradžių laikiausi AI sukurtų instrukcijų, kad galėčiau įdiegti “OpenEdge” susiję papildiniai. Toks požiūris pasirodė klaidinantis.
Praleidau du svarbius kūrinius:
- ANT/PCT sąranka
- CABL licencija
Trūkstama CABL licencija buvo pagrindinis blokatorius. Kartą sekiau oficialią “Riverside” dokumentaciją ir sumontavau jų “OpenEdge” papildiniai JAR failai iš Riverside “SonarQube OpenEdge” papildinio išleidimai, viskas pradėjo veikti taip, kaip tikėtasi.
Įdomu tai, kad nuskaitymai veikė be ANT ir PCT. Mano prielaida yra ta, kad AI sukurtas projektas naudojo paprastus kelius ir standartinę struktūrą.
5) Įskiepių JAR diegimas “Docker” talpykloje
Iš pradžių nebuvau nustatęs rišimo laikiklio. Aš naudojau Docker Desktop → Files skirtuką, kad įkelčiau aplanką į /tmp, tada atidarė šaknies apvalkalą ir perkėlė JARs:
“Sonarqube” yra konteinerio pavadinimas. “Root” vartotojui geriausia kopijuoti failus į įprastą vietą.
Iš “Windows” terminalo:
docker exec -it --user root sonarqube /bin/bash
mv /tmp/plugins/ * /opt/sonarqube/plėtiniai/atsisiuntimai/
Tada aš iš naujo paleidau konteinerį, kad “SonarQube” įdiegtų papildinius paleidžiant. (Geriau naudoti surišimo laikiklį, bet tai veikė, kol eksperimentavau.)
6) “SonarScanner” paleidimas sistemoje “Windows”
Tada atsisiunčiau “Windows x64 SonarScanner”, ištraukiau jį ir sugeneravau vartotojo žetoną “SonarQube”. Dėl mano ankstesnės uosto 0 klaidos turėjau atnaujinti URL tarp restartų. Tai buvo dar viena priežastis nuo pat pradžių laikytis 9000. Štai kaip atrodė mano savybių failas:

Įdiegus papildinius, aš paleidau komandą iš savo “OpenEdge” projekto aplankas:
<.. >\ sonar-skaitytuvas-8.0.1.6346-windows-x64\ bin\ sonar-scanner.bat
Po to, kai nuskaitymas baigtas, atnaujinau projekto puslapį SonarQube, kad galėtumėte peržiūrėti rezultatus.
Iš pradžių turėjau tam tikrų problemų su:
- Kokybiški vartai
- Taisyklių profiliai
- Įgalinimo taisyklės
Pagrindinė priežastis vėl buvo trūkstama CABL licencija. Nustačius tai, “OpenEdge” Taisyklės elgėsi normaliai.
Pirmasis sėkmingas nuskaitymas jau aptiko keletą problemų kodo bazėje. Tai reiškė, kad aplinka pagaliau buvo paruošta pasirinktinėms taisyklėms. Skaitytuvą galite atsisiųsti iš SonarScanner CLI dokumentacija.
7) Pasirinktinės taisyklės kūrimas (šablonas+AI)
Kai nuskaitymo vamzdynas veikė, aš perėjau prie pasirinktinių taisyklių kūrimo. Aš atsisiunčiau Riverside taisykles-plugin-template ir peržiūrėjau jų skaidrių kaladę, paaiškinančią architektūrą.
Tada aš paprašiau AI sugeneruoti Java taisyklę ir įmečiau ją į šabloną. Užregistravau jį AcmeRulesDefinition.java (dvi vietos), sekdamas NooPrule ir TooManyParameters pavyzdžiais.
Pažvelkite į tai, kur įdėjau “Java” taisyklę:

Sukurtas taisyklių šaltinis:

Registracija į AcmeRulesDefinition.java:

Svarbu pažymėti, kad atsisiunčiau “Riverside” taisyklių papildinio šablonas ir peržiūrėjo “SonaQube” pasirinktinių taisyklių kūrimo dokumentacija Prieš kurdamas savo pirmąją taisyklę.
8) Įskiepio kūrimas ir taisyklės suaktyvinimas
Norėdamas sukompiliuoti taisyklių įskiepį, aš įdiegė Maven ir pastatė šablono projektą.
Iš projekto šaknies:
<.. >/apache-maven-3.9.12/bin/mvn švarus paketas
“Maven” sėkmingai sugeneravo papildinį JAR. Tada nukopijavau JAR į “SonaQube” konteinerį naudodamas tą patį rankinį metodą, kaip ir anksčiau, ir iš naujo paleidau konteinerį. Po paleidimo iš naujo naujoji taisyklė pasirodė “SonarQube” sąsajoje. Jis buvo išjungtas pagal numatytuosius nustatymus, todėl įgalinau jį taisyklių profilyje.
Vėl paleidus skaitytuvą, gautas pirmasis rezultatas. Ataskaitoje buvo pažymėtos kodo vietos, kuriose buvo naudojami MESSAGE teiginiai. Pirmoji pasirinktinė taisyklė veikė.
9) Taisyklių išplėtimas
Po pirmosios sėkmės eksperimentavau su papildomomis taisyklėmis. Vienas iš pavyzdžių buvo “StreamsMustBecloseDrule”. Šis etapas pristatė keletą naujų iššūkių:
- “Maven” kompiliavimo klaidos, kurias sukelia neteisingas importas.
- Taisyklės įkeliamos, bet nerodomos vartotojo sąsajoje.
- Taisyklės rodomos, bet problemų neaptinka.
To buvo tikimasi. AI yra naudingas generuojant pradinius taškus, tačiau produkcijai vis dar reikia žmogaus patvirtinimo ir teisingos integracijos. 2026 m. Būtų neįprasta nenaudoti AI. Tačiau sukurtas turinys yra tik atspirties taškas. Tai vis dar reikalauja žmogiško sprendimo ir tinkamos integracijos.
Išvada: ko mane išmokė ši sąranka
Šis eksperimentas padėjo man suprasti, kaip praktiškai veikia visa SonarQube sąranka. “SonarQube” paleidimas “Docker”, “SonarScanner” konfigūravimas, diegimas “OpenEdge” papildinys, o CABL licencijos tvarkymas buvo svarbūs žingsniai. Maži konfigūracijos pasirinkimai, pvz., Naudojant dinaminį Docker prievadą, gali greitai sukelti nereikalingų problemų.
Dirbtinis intelektas buvo naudingas kuriant pavyzdį “OpenEdge” projektą ir rengiant taisyklių idėjas, tačiau tai tik atspirties taškas. Sukurtam kodui vis dar reikia žmogaus sprendimo, patikrinimo ir tinkamos integracijos. Teisingai nustačius aplinką, kurti ir išbandyti pasirinktines taisykles tampa daug lengviau. Tokie įrankiai kaip “SonarQube” gali atlikti svarbų vaidmenį išlaikant kodo kokybę ilgai veikiančiose ar senesnės sistemos.

