IntelliJ IDEA hnub no muaj qhov zoo tshaj plaws zoo li Java code analyzer, uas nyob rau hauv nws lub peev xwm tawm mus deb li "cov qub tub rog" xws li Checkstyle ΠΈ Spotbugs. Nws ntau "kev tshuaj xyuas" xyuas cov cai hauv ntau yam, los ntawm coding style mus rau kab laum.
Txawm li cas los xij, tsuav yog cov txiaj ntsig kev soj ntsuam tsuas yog tso tawm hauv lub zos interface ntawm tus tsim tawm IDE, lawv tsis tshua siv rau txoj kev txhim kho. Kev soj ntsuam zoo li qub yuav tsum ua kom tiav Raws li thawj kauj ruam ntawm kev tsim cov kav dej, nws cov txiaj ntsig yuav tsum txhais cov rooj vag zoo, thiab kev tsim yuav tsum ua tsis tiav yog tias cov rooj vag zoo tsis dhau. Nws paub tias TeamCity CI koom nrog IDEA. Tab sis txawm tias koj tsis siv TeamCity, koj tuaj yeem yooj yim sim khiav IDEA kev tshuaj xyuas hauv lwm tus CI server. Kuv xav kom koj pom tias qhov no tuaj yeem ua tiav li cas siv IDEA Community Edition, Jenkins thiab Warnings NG plugin.
Kauj Ruam 1. Khiav qhov kev tshuaj ntsuam hauv lub thawv thiab tau txais daim ntawv qhia
Thaum xub thawj, lub tswv yim ntawm kev khiav ib qho IDE (daim ntawv thov desktop!) hauv CI system uas tsis muaj graphical interface yuav zoo li dubious thiab teeb meem heev. Hmoov zoo, IDEA cov neeg tsim khoom tau muab lub peev xwm los khiav code formatting ΠΈ kev tshuaj xyuas los ntawm kab hais kom ua. Tsis tas li ntawd, txhawm rau khiav IDEA hauv hom no, tsis tas yuav muaj cov duab kos duab thiab cov haujlwm no tuaj yeem ua tiav ntawm cov servers nrog lub plhaub ntawv.
Kev tshuaj xyuas yog pib siv ib tsab ntawv bin/inspect.sh los ntawm IDEA installation directory. Cov parameter yuav tsum yog:
tag nrho txoj kev mus rau qhov project (cov txheeb ze tsis txaus siab),
.idea/modules.xml - txwv tsis pub peb yuav tau txais qhov yuam kev 'Qhov project no tsis muaj modules',
.idea/misc.xml - txwv tsis pub peb yuav tau txais qhov yuam kev 'JDK tsis tau teeb tsa kom raug rau qhov project no',
*.iml-ΡΠ°ΠΉΠ»Ρ - txwv tsis pub peb yuav tau txais qhov yuam kev txog qhov tsis tau teeb tsa JDK hauv qhov module.
Txawm hais tias cov ntaub ntawv no feem ntau suav nrog .gitignore, lawv tsis muaj cov ntaub ntawv tshwj xeeb rau ib puag ncig ntawm ib tus neeg tsim khoom tshwj xeeb - tsis zoo li, piv txwv li, cov ntaub ntawv workspace.xml, qhov twg cov ntaub ntawv no muaj, thiab yog li tsis tas yuav tsum tau ua nws.
Txoj kev daws teeb meem yog txhawm rau ntim JDK nrog rau IDEA Community Edition rau hauv ib lub thawv rau hauv ib daim ntawv npaj "pitted" ntawm cov haujlwm txheeb xyuas. Cia peb xaiv lub thawv tsim nyog, thiab qhov no yog qhov peb Dockerfile yuav yog:
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
Siv qhov kev xaiv idea.config.path peb yuam IDEA mus nrhiav nws lub ntiaj teb configuration nyob rau hauv daim nplaub tshev /etc/idea, vim hais tias tus neeg siv lub tsev nplaub tshev thaum ua haujlwm hauv CI yog qhov tsis paub tseeb thiab feem ntau tsis tuaj.
Nov yog yam ntaub ntawv theej rau lub thawv zoo li: jdk.table.xml, uas muaj cov kev mus rau OpenJDK ntsia hauv lub thawv (cov ntaub ntawv zoo sib xws los ntawm koj tus kheej cov npe nrog IDEA teeb tsa tuaj yeem coj los ua lub hauv paus):
Raws li kuv paub, tsis muaj kev koom ua ke nrog Jenkins lossis maven plugin [β¦] Hauv txoj cai, txhua tus neeg nyiam tuaj yeem ua phooj ywg nrog IDEA Community Edition thiab Jenkins, ntau tus tsuas yog tau txais txiaj ntsig los ntawm qhov no.
Zoo, ob xyoos tom qab ntawd peb muaj Warnings NG Plugin, thiab thaum kawg no kev phooj ywg tau los ua tiav!