IntelliJ IDEA-แก แแฆแแก แแฅแแก แงแแแแแแ แแแฌแแแแแ แกแขแแขแแแฃแ แ Java แแแแแแแก แแแแแแแแขแแ แ, แ แแแแแแช แแแแแกแ แจแแกแแซแแแแแแแแแแ แจแแ แก แขแแแแแก แแกแแ โแแแขแแ แแแแแกโ, แ แแแแ แแชแแ
แแฃแแชแ, แกแแแแ แแแแแแแแก แจแแแแแแแ แแแฉแแแแแแแ แแฎแแแแ แแแแแแแแแ แแก IDE-แแก แแแแแแฃแ แแแขแแ แคแแแกแจแ, แแกแแแ แแแแแแแแ แกแแ แแแแแแแแ แแแแแแแแ แแแแก แแ แแชแแกแจแ. แกแขแแขแแแฃแ แ แแแแแแแ
แแแแแฏแ 1. แฉแแแขแแ แแ แแแแแแแ แแแแขแแแแแ แจแ แแ แแแแฆแแ แแแแแ แแจแ
แแแแแแแแ แแแแแ, IDE (แแแกแแขแแ แแแแแแแชแแแก!) แแแจแแแแแก แแแแ CI แกแแกแขแแแแก แจแแแแแ, แ แแแแแกแแช แแ แแฅแแก แแ แแคแแแฃแแ แแแขแแ แคแแแกแ, แจแแแซแแแแ แกแแแญแแ แแ แซแแแแแ แแ แแแแแแฃแ แ แฉแแแแแก. แกแแแแแแแแ แแ, IDEA-แก แแแแแแแแแ แแแแ แฃแแ แฃแแแแแงแ แแแจแแแแแก แจแแกแแซแแแแแแแ
แแแกแแแฅแขแแ แแแ แแฌแงแแแ แกแแ แแแขแแก แแแแแงแแแแแแ bin/inspect.sh
IDEA แแแกแขแแแแชแแแก แแแ แแฅแขแแ แแแแแ. แกแแญแแ แ แแแ แแแแขแ แแแแ:
- แกแ แฃแแ แแแ แแ แแแฅแขแแกแแแ (แแแแแกแแแ แแ แแ แแก แแฎแแ แแแญแแ แแแ),
- แแแ .xml แคแแแแแก แแแกแแแฅแขแแ แแแแก แแแ แแแแขแ แแแแ (แฉแแแฃแแแแ แแ, แแแแแแ แแแแก แแ แแแฅแขแแก แจแแแแแ .idea/inspectionProfiles/Project_Default.xml)
- แกแ แฃแแ แแแ แกแแฅแแฆแแแแแจแ, แ แแแแแจแแช แจแแแแแฎแแแ .xml แคแแแแแแ แแแแแแแแก แจแแแแแแแแก แจแแกแแฎแแ แแแฎแกแแแแแแแแ.
แแแ แแ แแแแกแ, แแแกแแแแแแแแแ, แ แแ
- แแแ Java SDK-แแแ แแแแคแแแฃแ แแ แแแฃแแ แแฅแแแแ IDE-แจแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแแแแแแ แแ แแแฃแจแแแแแก. แแก แแแ แแแแขแ แแแ แจแแแชแแแก แแแแคแแแฃแ แแชแแแก แคแแแแก
jdk.table.xml
IDEA แแแแแแแฃแ แ แแแแคแแแฃแ แแชแแแก แกแแฅแแฆแแแแแจแ. 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 แคแแแแแแแก แกแแฎแแ แแแฆแแแ แกแแฅแแแก แแแฎแแแแ แแ; แแฎแแ แแฅแแแ แฃแแแ แแแฎแแแแ แแก แแแแแแแแแกแแแแแก แฌแแกแแแแแฎแแ. แแ แแกแแแ, แแแกแ แจแแแแแแแ แฃแแแ แแฅแแแก แแแแแงแแแแแฃแแ แฎแแ แแกแฎแแก แแแ แแแญแแแแจแ - แแแแแแ แแแแก แแแกแแแแแแแ, แแแฆแแแฃแแ แชแแแแแแแ แแแแแก แแฃ แแ แ แฎแแ แแกแฎแแก แแ แแขแแ แแฃแแแแแก แแแฎแแแแแ.
แแก แแแแแแฎแแแ แแแ
แแแแฃแแ แจแแแแแแ แแ แ แแแฌแแแแกแแแ:
- แแ แแแแแ แแแแแแแแขแแ แแก แจแแขแงแแแแแแแแแแก แจแแแแ แแแแแแแ (
แกแ แฃแแ แกแแ แแแแชแแแก แแแชแแแแ แแแแกแแแแก แชแแแแแ แงแแแแ แแแแแแแแขแแ แก 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