I-IntelliJ IDEA namuhla inesihlaziyi sekhodi ye-Java esithuthuke kakhulu, esishiya ngemuva kakhulu “omakadebona” abanjengabo.
Kodwa-ke, inqobo nje uma imiphumela yokuhlaziya iboniswa kuphela kusixhumi esibonakalayo sendawo se-IDE yonjiniyela, ayisebenzisi kangako inqubo yokuthuthukisa. Ukuhlaziya okumile
Isinyathelo 1. Qalisa ukuhlaziya esitsheni bese uthola umbiko
Ekuqaleni, umqondo wokusebenzisa i-IDE (uhlelo lokusebenza lwedeskithophu!) ngaphakathi kwesistimu ye-CI engenakho ukuboniswa kwesithombe ungase ubonakale ungabaza futhi unzima kakhulu. Ngenhlanhla, abathuthukisi be-IDEA banikeze amandla okuqalisa
Ukuhlola kwethulwa kusetshenziswa iskripthi bin/inspect.sh
kusukela kunkomba yokufaka ye-IDEA. Amapharamitha adingekayo yilawa:
- indlela ephelele yephrojekthi (izihlobo azisekelwa),
- indlela eya kufayela elithi .xml elinezilungiselelo zokuhlola (ngokuvamile elitholakala ngaphakathi kwephrojekthi kokuthi .idea/inspectionProfiles/Project_Default.xml),
- indlela egcwele eya kufolda lapho amafayela e-.xml anemibiko yemiphumela yokuhlaziya azogcinwa khona.
Ngaphezu kwalokho, kulindeleke ukuthi
- indlela eya ku-Java SDK izolungiswa ku-IDE, ngaphandle kwalokho ukuhlaziya ngeke kusebenze. Lezi zilungiselelo ziqukethwe kufayela lokumisa
jdk.table.xml
kufolda yokucushwa kwe-IDEA global. I-IDEA global configuration ngokwayo itholakala kuhla lwemibhalo lwasekhaya lomsebenzisi ngokuzenzakalelayo, kodwa le ndawoingacaciswa ngokucacile kufayelaidea.properties
. - Iphrojekthi ehlaziywe kufanele ibe iphrojekthi ye-IDEA evumelekile, okuzodingeka ukuthi uhambise kuyo amanye amafayela ngokuvamile awanakwa ekulawuleni inguqulo, okungukuthi:
.idea/inspectionProfiles/Project_Default.xml
- izilungiselelo zokuhlaziya, ngokusobala zizosetshenziswa lapho kuhlolwa esitsheni,.idea/modules.xml
- uma kungenjalo sizothola iphutha 'Le phrojekthi ayinawo amamojula',.idea/misc.xml
- uma kungenjalo sizothola iphutha 'I-JDK ayilungiselelwe kahle le phrojekthi',*.iml-файлы
- uma kungenjalo sizothola iphutha mayelana ne-JDK engalungiselelwe kumojula.
Nakuba lawa mafayela ngokuvamile afakwa ku .gitignore
, aziqukethe noma yiluphi ulwazi oluqondene nendawo yonjiniyela othile - ngokungafani, ngokwesibonelo, ifayela workspace.xml
, lapho ulwazi olunjalo luqukethwe khona, ngakho-ke asikho isidingo sokulwenza.
Isixazululo esisobala ukupakisha i-JDK kanye ne-IDEA Community Edition kusiqukathi esisesimweni esilungele “ukufakwa” kumaphrojekthi ahlaziyiweyo. Ake sikhethe isitsha esiyisisekelo esifanele, futhi lokhu kuzoba yi-Dockerfile yethu:
I-Dockerfile
FROM openkbs/ubuntu-bionic-jdk-mvn-py3
ARG INTELLIJ_VERSION="ideaIC-2019.1.1"
ARG INTELLIJ_IDE_TAR=${INTELLIJ_VERSION}.tar.gz
ENV IDEA_PROJECT_DIR="/var/project"
WORKDIR /opt
COPY jdk.table.xml /etc/idea/config/options/
RUN wget https://download-cf.jetbrains.com/idea/${INTELLIJ_IDE_TAR} &&
tar xzf ${INTELLIJ_IDE_TAR} &&
tar tzf ${INTELLIJ_IDE_TAR} | head -1 | sed -e 's//.*//' | xargs -I{} ln -s {} idea &&
rm ${INTELLIJ_IDE_TAR} &&
echo idea.config.path=/etc/idea/config >> idea/bin/idea.properties &&
chmod -R 777 /etc/idea
CMD idea/bin/inspect.sh ${IDEA_PROJECT_DIR} ${IDEA_PROJECT_DIR}/.idea/inspectionProfiles/Project_Default.xml ${IDEA_PROJECT_DIR}/target/idea_inspections -v2
Ukusebenzisa inketho idea.config.path
siphoqe i-IDEA ukuthi ibheke ukucushwa kwayo komhlaba wonke kufolda /etc/idea
, ngoba ifolda yasekhaya yomsebenzisi uma isebenza ku-CI iyinto engaqinisekile futhi ngokuvamile ingekho ngokuphelele.
Yile ndlela ifayela elikopishelwe esitsheni elibukeka ngayo: jdk.table.xml
, equkethe izindlela eziya ku-OpenJDK efakwe ngaphakathi kwesiqukathi (ifayela elifanayo elisuka kunkomba yakho enezilungiselelo ze-IDEA lingathathwa njengesisekelo):
jdk.table.xml
<application>
<component name="ProjectJdkTable">
<jdk version="2">
<name value="1.8" />
<type value="JavaSDK" />
<version value="1.8" />
<homePath value="/usr/java" />
<roots>
<annotationsPath>
<root type="composite">
<root url="jar://$APPLICATION_HOME_DIR$/lib/jdkAnnotations.jar!/" type="simple" />
</root>
</annotationsPath>
<classPath>
<root type="composite">
<root url="jar:///usr/java/jre/lib/charsets.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/deploy.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/access-bridge-64.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/cldrdata.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/dnsns.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/jaccess.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/jfxrt.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/localedata.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/nashorn.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/sunec.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/sunjce_provider.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/sunmscapi.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/sunpkcs11.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/ext/zipfs.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/javaws.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/jce.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/jfr.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/jfxswt.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/jsse.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/management-agent.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/plugin.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/resources.jar!/" type="simple" />
<root url="jar:///usr/java/jre/lib/rt.jar!/" type="simple" />
</root>
</classPath>
</roots>
<additional />
</jdk>
</component>
</application>
Isithombe esiqediwe
Ngaphambi kokuqhubekela phambili, ake sihlole ukuthi isihlaziyi se-IDEA siyasebenza esitsheni:
docker run --rm -v <путь/к/вашему/проекту>:/var/project inponomarev/intellij-idea-analyzer
Ukuhlaziya kufanele kusebenze ngempumelelo, futhi amafayela amaningi we-.xml anemibiko yokuhlaziya kufanele avele kufolda engaphansi yethagethi/umbono_wokuhlola.
Manje akusekho ukungabaza ukuthi i-IDEA analyzer ingaqhutshwa izimele kunoma iyiphi indawo ye-CI, futhi siqhubekela esinyathelweni sesibili.
Isinyathelo sesi-2. Bonisa futhi uhlaziye umbiko
Ukuthola umbiko ngendlela yamafayela e-.xml kuyingxenye yempi; manje udinga ukuwenza ufundeke ngabantu. Futhi futhi imiphumela yayo kufanele isetshenziswe emasangweni ekhwalithi - i-logic yokunquma ukuthi uguquko olwamukelekile luyadlula noma lwehluleki ngokuya ngezinqubo zekhwalithi.
Lokhu kuzosisiza
I-plugin iqukethe izingxenye ezimbili:
- abaqoqi abaningi bemiyalezo yokuhlaziya (
uhlu olugcwele ihlanganisa bonke abahlaziyi abaziwa isayensi kusukela ku-AcuCobol kuya ku-ZPT Lint), - isibukeli esisodwa sombiko wabo bonke.
Uhlu lwezinto I-Warnings NG engakwazi ukuzihlaziya luhlanganisa izexwayiso ezivela kumdidiyeli we-Java kanye nezixwayiso ezisuka kumalogi okubulala e-Maven: nakuba ehlala ebonakala, awavami ukuba ahlaziywe ngokuqondile. Imibiko ye-IntelliJ IDEA iphinde ifakwe ohlwini lwamafomethi aziwayo.
Njengoba i-plugin iyintsha, iqale isebenzisana kahle ne-Jenkins Pipeline. Isinyathelo sokwakha ngokubamba iqhaza kwayo sizobukeka kanje (simane sitshele i-plugin ukuthi iyiphi ifomethi yombiko esiyibonayo nokuthi yimaphi amafayela okufanele askeniwe):
stage ('Static analysis'){
sh 'rm -rf target/idea_inspections'
docker.image('inponomarev/intellij-idea-analyzer').inside {
sh '/opt/idea/bin/inspect.sh $WORKSPACE $WORKSPACE/.idea/inspectionProfiles/Project_Default.xml $WORKSPACE/target/idea_inspections -v2'
}
recordIssues(
tools: [ideaInspection(pattern: 'target/idea_inspections/*.xml')]
)
}
I-interface yombiko ibonakala kanje:
Kalula, lesi sikhombimsebenzisi sisebenza kubo bonke abahlaziyi abaziwayo. Iqukethe umdwebo osebenzisanayo wokusatshalaliswa kokutholwe ngokwesigaba kanye negrafu yokuguquguquka kwezinguquko enanini lokutholiwe. Ungenza ukusesha okusheshayo kugridi ngaphansi kwekhasi. Okuwukuphela kwento engazange isebenze kahle ekuhlolweni kwe-IDEA kwaba ikhono lokuphequlula ikhodi ngokuqondile ku-Jenkins (nakuba kweminye imibiko, isibonelo i-Checkstyle, le plugin ingenza lokhu kahle). Kubonakala sengathi lesi isiphazamisi kumhlahleli wombiko we-IDEA esidinga ukulungiswa.
Phakathi kwezici Zezixwayiso NG yikhono lokuhlanganisa okutholwe emithonjeni ehlukene embikweni owodwa nohlelo lwe-Quality Gates, okuhlanganisa “i-ratchet” yomhlangano wereferensi. Amanye amadokhumenti ezinhlelo ze-Quality Gates ayatholakala
isiphetho
Ngaphambi kokuqala ukulungisa lesi sihloko, nganquma ukucinga: ingabe ukhona oseke wabhala ngalesi sihloko ku-Habré? Ngithole kuphela
Ngokwazi kwami, akukho ukuhlanganiswa noJenkins noma i-plugin ye-maven […] Empeleni, noma yimuphi umuntu oshisekayo angenza ubungane ne-IDEA Community Edition kanye noJenkins, abaningi bangazuza kulokhu kuphela.
Nokho, eminyakeni emibili kamuva sinezixwayiso ze-NG Plugin, futhi ekugcineni lobu bungane bufezekile!
Source: www.habr.com