IntelliJ IDEA-แก แแฆแแก แแฅแแก แงแแแแแแ แแแฌแแแแแ แกแขแแขแแแฃแ แ Java แแแแแแแก แแแแแแแแขแแ แ, แ แแแแแแช แแแแแกแ แจแแกแแซแแแแแแแแแแ แจแแ แก แขแแแแแก แแกแแ โแแแขแแ แแแแแกโ, แ แแแแ แแชแแ ะธ . แแแกแ แแ แแแแแ แแชแฎแแแแแ โแแแกแแแฅแขแแ แแแโ แแแแฌแแแแก แแแแก แกแฎแแแแแกแฎแแ แแกแแแฅแขแจแ, แแแแแ แแแแก แกแขแแแแแแ แขแแแฃแ แจแแชแแแแแแแแแ.
แแฃแแชแ, แกแแแแ แแแแแแแแก แจแแแแแแแ แแแฉแแแแแแแ แแฎแแแแ แแแแแแแแแ แแก IDE-แแก แแแแแแฃแ แแแขแแ แคแแแกแจแ, แแกแแแ แแแแแแแแ แกแแ แแแแแแแแ แแแแแแแแ แแแแก แแ แแชแแกแจแ. แกแขแแขแแแฃแ แ แแแแแแแ แ แแแแ แช แแแแกแแแแแแก แแจแแแแแแแแแก แแแ แแแแ แแแแแฏแ, แแแกแแ แจแแแแแแแแ แฃแแแ แแแแกแแแฆแแ แแก แฎแแ แแกแฎแแก แแแ แแแญแแแแ แแ แแจแแแแแแแแ แฃแแแ แฉแแแแ แแแก, แแฃ แฎแแ แแกแฎแแแแ แแแ แแแญแแแแ แแ แแแแแแแก. แชแแแแแแแ, แ แแ TeamCity CI แแแขแแแ แแ แแแฃแแแ IDEA-แกแแแ. แแแแ แแ แแแจแแแแช แแ, แแฃ แแ แแงแแแแแ TeamCity-แก, แจแแแแซแแแแ แแแ แขแแแแ แกแชแแแแ IDEA แแแกแแแฅแขแแ แแแแก แแแจแแแแ แแแแแกแแแแ แกแฎแแ CI แกแแ แแแ แแ. แแ แแแ แฉแแแ แแแฎแแ, แแฃ แ แแแแ แจแแแซแแแแ แแแแก แแแแแแแแ IDEA Community Edition, Jenkins แแ Warnings NG แแแแฃแแแก แแแแแงแแแแแแ.
แแแแแฏแ 1. แฉแแแขแแ แแ แแแแแแแ แแแแขแแแแแ แจแ แแ แแแแฆแแ แแแแแ แแจแ
แแแแแแแแ แแแแแ, IDE (แแแกแแขแแ แแแแแแแชแแแก!) แแแจแแแแแก แแแแ CI แกแแกแขแแแแก แจแแแแแ, แ แแแแแกแแช แแ แแฅแแก แแ แแคแแแฃแแ แแแขแแ แคแแแกแ, แจแแแซแแแแ แกแแแญแแ แแ แซแแแแแ แแ แแแแแแฃแ แ แฉแแแแแก. แกแแแแแแแแ แแ, IDEA-แก แแแแแแแแแ แแแแ แฃแแ แฃแแแแแงแ แแแจแแแแแก แจแแกแแซแแแแแแแ ะธ แแ แซแแแแแแก แฎแแแแแแ. แฃแคแ แ แแแขแแช, IDEA-แก แแ แ แแแแแจแ แแแกแแจแแแแแ, แแ แแคแแแฃแแ แฅแแแกแแกแขแแแ แแ แแ แแก แกแแญแแ แ แแ แแก แแแแชแแแแแ แจแแแซแแแแ แจแแกแ แฃแแแแก แกแแ แแแ แแแแ แขแแฅแกแขแฃแ แ แแแ แกแแแ.
แแแกแแแฅแขแแ แแแ แแฌแงแแแ แกแแ แแแขแแก แแแแแงแแแแแแ bin/inspect.sh IDEA แแแกแขแแแแชแแแก แแแ แแฅแขแแ แแแแแ. แกแแญแแ แ แแแ แแแแขแ แแแแ:
- แกแ แฃแแ แแแ แแ แแแฅแขแแกแแแ (แแแแแกแแแ แแ แแ แแก แแฎแแ แแแญแแ แแแ),
- แแแ .xml แคแแแแแก แแแกแแแฅแขแแ แแแแก แแแ แแแแขแ แแแแ (แฉแแแฃแแแแ แแ, แแแแแแ แแแแก แแ แแแฅแขแแก แจแแแแแ .idea/inspectionProfiles/Project_Default.xml)
- แกแ แฃแแ แแแ แกแแฅแแฆแแแแแจแ, แ แแแแแจแแช แจแแแแแฎแแแ .xml แคแแแแแแ แแแแแแแแก แจแแแแแแแแก แจแแกแแฎแแ แแแฎแกแแแแแแแแ.
แแแ แแ แแแแกแ, แแแกแแแแแแแแแ, แ แแ
- แแแ Java SDK-แแแ แแแแคแแแฃแ แแ แแแฃแแ แแฅแแแแ IDE-แจแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแแแแแแ แแ แแแฃแจแแแแแก. แแก แแแ แแแแขแ แแแ แจแแแชแแแก แแแแคแแแฃแ แแชแแแก แคแแแแก
jdk.table.xmlIDEA แแแแแแแฃแ แ แแแแคแแแฃแ แแชแแแก แกแแฅแแฆแแแแแจแ. IDEA แแแแแแแฃแ แ แแแแคแแแฃแ แแชแแ แแแแฃแแแกแฎแแแแแ แแแแแแ แแแแก แแแแฎแแแ แแแแแก แแแแแแ แแแ แแฅแขแแ แแแจแ, แแแแ แแ แแก แแแแแแ แแแแ แคแแแแจแidea.properties. - แแแแแแแแแแแฃแแ แแ แแแฅแขแ แฃแแแ แแงแแก IDEA-แก แแแฅแแแแ แแ แแแฅแขแ, แ แแกแแแแกแแช แแแแแฌแแแ แ แแแแแแแแ แคแแแแแก แฉแแแแ แแแ, แ แแแแแแแช แฉแแแฃแแแแ แแ แแแแแ แแ แแแฃแแแ แแแ แกแแแก แแแแขแ แแแแกแแแแก, แแแ แซแแ:
.idea/inspectionProfiles/Project_Default.xml- แแแแแแแแขแแ แแก แแแ แแแแขแ แแแ, แแกแแแ แแจแแแ แแ แแแแแงแแแแแฃแแ แแฅแแแแ แแแแขแแแแแ แจแ แแแกแแแฅแขแแ แแแแก แแ แแก,.idea/modules.xml- แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแแแแฆแแแ แจแแชแแแแแก "แแก แแ แแแฅแขแ แแ แจแแแชแแแก แแแแฃแแแแก",.idea/misc.xml- แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แฉแแแ แแแแแฆแแแ แจแแชแแแแแก "JDK แแ แแ แแก แกแฌแแ แแ แแแแคแแแฃแ แแ แแแฃแแ แแ แแ แแแฅแขแแกแแแแก",*.iml-ัะฐะนะปัโ แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แฉแแแ แแแแแฆแแแ แจแแชแแแแแก แแแแฃแแจแ แแ แแแแแคแแแฃแ แแ แแแฃแแ JDK-แแก แจแแกแแฎแแ.
แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แคแแแแแแ แฉแแแฃแแแแ แแ แจแแแแก .gitignore, แแกแแแ แแ แจแแแชแแแก แ แแแแ แกแแแชแแคแแแฃแ แแแคแแ แแแชแแแก แแแแแ แแขแฃแแ แแแแแแแแแ แแก แแแ แแแแกแแแแก - แแแแกแฎแแแแแแแ, แแแแแแแแแ, แคแแแแแกแแแ workspace.xml, แกแแแแช แแกแแแ แแแคแแ แแแชแแแ แแ, แจแแกแแแแแแกแแ, แแ แแ แแก แกแแญแแ แ แแแกแ แฉแแแแแ.
แแจแแแ แ แแแแแกแแแแแแ JDK-แแก แจแแคแฃแแแ IDEA Community Edition-แแแ แแ แแแ แแแแขแแแแแ แจแ แแ แคแแ แแแ, แ แแแแแแช แแแแ แแฅแแแแ แแแแแแแฃแ แแ แแแฅแขแแแแ โแแแแแกแแขแแแแโ. แแแแแ แแแแ แฉแแแ แจแแกแแคแแ แแกแ แแแแแก แแแแขแแแแแ แ แแ แแก แแฅแแแแ แฉแแแแ Dockerfile:
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แแแ แแแแขแแก แแแแแงแแแแแ idea.config.path แฉแแแ แแแแซแฃแแแ IDEA-แก แกแแฅแแฆแแแแแจแ แแแแซแแแแ แแแกแ แแแแแแแฃแ แ แแแแคแแแฃแ แแชแแ /etc/idea, แ แแแแแ แแแแฎแแแ แแแแแก แกแแฎแแแก แกแแฅแแฆแแแแ CI-แจแ แแฃแจแแแแแกแแก แแแฃแ แแแแแแแแ แแ แฎแจแแ แแ แกแ แฃแแแแ แแ แแ แกแแแแแก.
แแกแ แแแแแแงแฃแ แแแ แแแแขแแแแแ แจแ แแแแแแแ แแแฃแแ แคแแแแ: jdk.table.xml, แ แแแแแแช แจแแแชแแแก แแแแขแแแแแ แจแ แแแแแกแขแแแแ แแแฃแ OpenJDK-แแก แแแแแแแแก (แแกแแแแกแ แคแแแแ แแฅแแแแแแ แแแ แแฅแขแแ แแแจแ IDEA แแแ แแแแขแ แแแแ แจแแแซแแแแ แแฅแแแก แแแฆแแแฃแแ, แ แแแแ แช แกแแคแฃแซแแแแ):
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>แแแกแ แฃแแแแฃแแ แกแฃแ แแแ .
แกแแแแ แแแแแแแแแ, แแแแแ แจแแแแแแฌแแแ, แ แแ IDEA แแแแแแแแขแแ แ แแฃแจแแแแก แแแแขแแแแแ แจแ:
docker run --rm -v <ะฟััั/ะบ/ะฒะฐัะตะผั/ะฟัะพะตะบัั>:/var/project inponomarev/intellij-idea-analyzerแแแแแแแ แฌแแ แแแขแแแแ แฃแแแ แฉแแขแแ แแแก แแ แแ แแแแแ .xml แคแแแแ แแแแแแแแขแแ แแก แแแแแ แแจแแแแ แฃแแแ แแแแแฉแแแแก target/idea_inspections แฅแแแกแแฅแแฆแแแแแจแ.
แแฎแแ แฃแแแ แแฆแแ แแ แแก แแญแแ, แ แแ IDEA แแแแแแแแขแแ แแก แแแแแฃแแแแแแแแ แแแจแแแแ แจแแกแแซแแแแแแแ แแแแแกแแแแ CI แแแ แแแแจแ แแ แฉแแแ แแแแแแแแแแ แ แแแแ แ แกแแคแแฎแฃแ แแ.
แแแแแฏแ 2. แแแแแ แแจแแก แฉแแแแแแ แแ แแแแแแแ
แแแแแ แแจแแก .xml แคแแแแแแแก แกแแฎแแ แแแฆแแแ แกแแฅแแแก แแแฎแแแแ แแ; แแฎแแ แแฅแแแ แฃแแแ แแแฎแแแแ แแก แแแแแแแแแกแแแแแก แฌแแกแแแแแฎแแ. แแ แแกแแแ, แแแกแ แจแแแแแแแ แฃแแแ แแฅแแแก แแแแแงแแแแแฃแแ แฎแแ แแกแฎแแก แแแ แแแญแแแแจแ - แแแแแแ แแแแก แแแกแแแแแแแ, แแแฆแแแฃแแ แชแแแแแแแ แแแแแก แแฃ แแ แ แฎแแ แแกแฎแแก แแ แแขแแ แแฃแแแแแก แแแฎแแแแแ.
แแก แแแแแแฎแแแ แแแ , แ แแแแแแช แแแแแแแแ 2019 แฌแแแก แแแแแแ แจแ. แแแกแ แแแกแแแแกแแแ แแ แแแ, Jenkins-แจแ แกแขแแขแแแฃแ แ แแแแแแแแก แจแแแแแแแแแ แแฃแจแแแแแก แแ แแแแแ แแแแแแแแฃแแแฃแ แ แแแแแแแขแ (CheckStyle, FindBugs, PMD แแ แ.แจ.) แแฎแแ แแแแแจแแฃแแแ, แ แแแแ แช แแแซแแแแแแฃแแ.
แแแแฃแแ แจแแแแแแ แแ แ แแแฌแแแแกแแแ:
- แแ แแแแแ แแแแแแแแขแแ แแก แจแแขแงแแแแแแแแแแก แจแแแแ แแแแแแแ ( แแแแชแแแก แแแชแแแแ แแแแกแแแแก แชแแแแแ แงแแแแ แแแแแแแแขแแ แก AcuCobol-แแแ ZPT Lint-แแแ),
- แแ แแ แแแแแ แแจแแก แแแงแฃแ แแแแแ แงแแแแ แแแแแแแแกแแแแก.
แแ แแแแแแแแก แกแแ, แ แแแแแแ แแแแแแแแแแแแช Warnings NG-แก แจแแฃแซแแแ, แแแแชแแแก แแแคแ แแฎแแแแแแแก Java แจแแแแแแแแแกแแแ แแ แแแคแ แแฎแแแแแแแก Maven-แแก แจแแกแ แฃแแแแแก แแฃแ แแแแแแแแแ: แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแกแแแ แแฃแแแแแแ แฉแแแก, แแกแแแ แแจแแแแแแ แแแแแแแแแแแ แกแแแชแแแแฃแ แแ. IntelliJ IDEA แแแแแ แแจแแแ แแกแแแ แจแแแแก แแฆแแแ แแแฃแแ แคแแ แแแขแแแแก แกแแแจแ.
แแแแแแแแ แแแแฃแแ แแฎแแแแ, แแก แแแแแแแแ แแแแแ แแแ แแแ แฃแ แแแแ แแแแก Jenkins Pipeline-แแแ. แแแกแ แแแแแฌแแแแแแแ แแจแแแแแแแแแก แแขแแแ แแกแ แแแแแแงแฃแ แแแ (แฉแแแ แฃแแ แแแแ แแแฃแแแแแแ แแแแแแแขแก, แแฃ แ แ แแแฎแกแแแแแแก แคแแ แแแขแก แแชแแแแ แแ แ แ แคแแแแแแ แฃแแแ แแแแกแแแแแ แแแก):
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')]
)
}แแแฎแกแแแแแแก แแแขแแ แคแแแกแ แแกแ แแแแแแงแฃแ แแแ:

แแแฎแแ แฎแแแฃแแแ, แแก แแแขแแ แคแแแกแ แฃแแแแแ แกแแแฃแ แแ แงแแแแ แแฆแแแ แแแฃแแ แแแแแแแแขแแ แแกแแแแก. แแแ แจแแแชแแแก แแแแแแก แแแขแแแแ แแแแแก แแแฎแแแแแ แแแแแฌแแแแแแก แแแขแแ แแฅแขแแฃแ แแแแแ แแแแก แแ แแฆแแแฉแแแแแแก แ แแแแแแแแแก แชแแแแแแแแแแก แแแแแแแแแก แแ แแคแแแก. แแฅแแแ แจแแแแซแแแแ แแแแแฎแแ แชแแแแแ แกแฌแ แแคแ แซแแแแ แแแแ แแแก แแแแแจแ แแ แกแแแฃแ แแแแแจแ. แแ แแแแแ แแ, แ แแช แแ แแฃแจแแแแแ แกแฌแแ แแ IDEA แแแกแแแฅแขแแ แแแแกแแแแก, แแงแ แแแแแก แแแ แแแแแ แฏแแแแแแกแจแ แแแแแแแแแ แแแแก แจแแกแแซแแแแแแแ (แแฃแแชแ แกแฎแแ แแแฎแกแแแแแแแแกแแแแก, แแแแแแแแแ Checkstyle, แแ แแแแแแแขแก แจแแฃแซแแแ แแแแก แแแแแแแแ แแแแแแแ). แ แแแแ แช แฉแแแก, แแก แแ แแก IDEA แแแแแ แแจแแก แแแ แกแแ แแก แจแแชแแแแ, แ แแแแแแช แฃแแแ แแแแแกแฌแแ แแแก.
Warnings NG-แแก แแแฎแแกแแแแแแแแแก แจแแ แแก แแ แแก แกแฎแแแแแกแฎแแ แฌแงแแ แแแแ แแแฆแแแฃแแ แแแกแแแแแแแก แแแแ แแแแแแแแก แจแแกแแซแแแแแแแ แแ แ แแแแแ แแจแจแ แแ Quality Gates-แแก แแ แแแ แแแแจแ, แแแ แจแแ แแก, แกแแชแแแแแ แ แแกแแแแแแแก โแ แแขแฉแโ. แแแแแแ แแ Quality Gates แแ แแแ แแแแ แแแแก แแแแฃแแแแขแแชแแ แฎแแแแแกแแฌแแแแแแ - แแฃแแชแ, แแก แแ แแ แแก แแแกแ แฃแแแแฃแแ แแ แแฅแแแ แฃแแแ แแแแแฎแแแแ แฌแงแแ แแก แแแแก. แแแแ แแก แแฎแ แแ, แกแ แฃแแ แแแแขแ แแแแกแแแแก แแแแแ, แ แแช แฎแแแแ, "แ แแฉแแขแ" แจแแแซแแแแ แแแแแฃแแแแแแแแ แแแแฎแแ แชแแแแแแก (แแฎ. แแ แแแแแก แจแแกแแฎแแ).
แแแกแแแแ
แกแแแแ แแ แแแกแแแแก แแแแแแแแแแก แแแแแฌแงแแแแ, แแแแแแฌแงแแแขแ แแแซแแแแ: แฐแแแ แแแ แฃแแแ แแแแแแ แแแฌแแ แ แแ แแแแแแ? แแฎแแแแ แแแแแแ ั แกแแแแช แแก แแแแแแก:
แ แแแแแแแแแช แแ แแแชแ, แแ แแ แแก แแแขแแแ แแชแแ แฏแแแแแแกแแแ แแ maven แแแแแแแขแแแ [...] แแ แแแชแแแจแ, แแแแแกแแแแ แแแแฃแแแแกแขแก แจแแฃแซแแแ แแแฃแแแแแแ แแแก IDEA Community Edition-แกแ แแ Jenkins-แก, แแแแ แ แแแแ แแฎแแแแ แแกแแ แแแแแแแก.
แแ แ แฌแแแก แจแแแแแ แฉแแแ แแแแฅแแก Warnings NG Plugin แแ แกแแแแแแแ แแก แแแแแแ แแแ แจแแกแ แฃแแแ!
แฌแงแแ แ: www.habr.com
