เชœเซ‡เชจเช•เชฟเชจเซเชธ เชชเชฐ IntelliJ IDEA เช‡เชจเซเชธเซเชชเซ‡เช•เซเชถเชจ เชšเชฒเชพเชตเซ‹

IntelliJ IDEA เช†เชœเซ‡ เชธเซŒเชฅเซ€ เช…เชฆเซเชฏเชคเชจ เชธเซเชŸเซ‡เชŸเชฟเช• เชœเชพเชตเชพ เช•เซ‹เชก เชตเชฟเชถเซเชฒเซ‡เชทเช• เชงเชฐเชพเชตเซ‡ เช›เซ‡, เชœเซ‡ เชคเซ‡เชจเซ€ เช•เซเชทเชฎเชคเชพเช“เชฎเชพเช‚ เช†เชตเชพ "เชจเชฟเชตเซƒเชคเซเชค เชธเซˆเชจเชฟเช•เซ‹"เชจเซ‡ เชชเชพเช›เชณ เช›เซ‹เชกเซ€ เชฆเซ‡ เช›เซ‡. เชšเซ‡เช•เชธเซเชŸเชพเช‡เชฒ ะธ เชธเซเชชเซ‹เชŸเชฌเช—เซเชธ. เชคเซ‡เชจเชพ เช…เชธเช‚เช–เซเชฏ "เชจเชฟเชฐเซ€เช•เซเชทเชฃเซ‹" เช•เซ‹เชกเชฟเช‚เช— เชถเซˆเชฒเซ€เชฅเซ€ เชฒเชพเช•เซเชทเชฃเชฟเช• เชฌเช—เซเชธ เชธเซเชงเซ€เชจเชพ เชตเชฟเชตเชฟเชง เชชเชพเชธเชพเช“เชฎเชพเช‚ เช•เซ‹เชกเชจเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡.

เชœเซ‹ เช•เซ‡, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเชพเชคเซเชฐ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเชจเชพ IDE เชจเชพ เชธเซเชฅเชพเชจเชฟเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชฎเชพเช‚ เชœ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡เชจเซ‹ เชตเชฟเช•เชพเชธ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชฌเชนเซ เช“เช›เซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชคเซ‹ เชจเชฅเซ€. เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฅเชตเซเช‚ เชœเซ‹เชˆเช เชฌเชฟเชฒเซเชก เชชเชพเช‡เชชเชฒเชพเช‡เชจเชจเชพ เชชเซเชฐเชฅเชฎ เชชเช—เชฒเชพ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช—เซเชฃเชตเชคเซเชคเชพเชตเชพเชณเชพ เชฆเชฐเชตเชพเชœเชพเช“เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ เชœเซ‹เชˆเช, เช…เชจเซ‡ เชœเซ‹ เช—เซเชฃเชตเชคเซเชคเชพเชตเชพเชณเชพ เชฆเชฐเชตเชพเชœเชพ เชชเชธเชพเชฐ เชจ เชฅเชพเชฏ เชคเซ‹ เชฌเชฟเชฒเซเชก เชจเชฟเชทเซเชซเชณ เชฅเชตเซ‹ เชœเซ‹เชˆเช. เชคเซ‡ เชœเชพเชฃเซ€เชคเซเช‚ เช›เซ‡ เช•เซ‡ TeamCity CI IDEA เชธเชพเชฅเซ‡ เชธเช‚เช•เชฒเชฟเชค เช›เซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ TeamCity เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจ เช•เชฐเซ‹ เชคเซ‹ เชชเชฃ, เชคเชฎเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช•เซ‹เชˆเชชเชฃ เช…เชจเซเชฏ CI เชธเชฐเซเชตเชฐเชฎเชพเช‚ IDEA เชจเชฟเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชนเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเซ‡ IDEA เช•เซ‹เชฎเซเชฏเซเชจเชฟเชŸเซ€ เชเชกเชฟเชถเชจ, เชœเซ‡เชจเช•เชฟเชจเซเชธ เช…เชจเซ‡ เชตเซ‹เชฐเซเชจเชฟเช‚เช—เซเชธ เชเชจเชœเซ€ เชชเซเชฒเช—เช‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡ เชœเซเช“.

เชชเช—เชฒเซเช‚ 1. เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชšเชฒเชพเชตเซ‹ เช…เชจเซ‡ เชฐเชฟเชชเซ‹เชฐเซเชŸ เชฎเซ‡เชณเชตเซ‹

เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เช—เซเชฐเชพเชซเชฟเช•เชฒ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ CI เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช…เช‚เชฆเชฐ IDE (เชกเซ‡เชธเซเช•เชŸเซ‹เชช เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ!) เชšเชฒเชพเชตเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เชถเช‚เช•เชพเชธเซเชชเชฆ เช…เชจเซ‡ เช–เซ‚เชฌ เชœ เชฎเซเชถเซเช•เซ‡เชฒเซ€เชญเชฐเซเชฏเซ‹ เชฒเชพเช—เซ‡ เช›เซ‡. เชธเชฆเชจเชธเซ€เชฌเซ‡, IDEA เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เชšเชฒเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€ เช›เซ‡ เช•เซ‹เชก เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฟเช‚เช— ะธ เชคเชชเชพเชธ เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏเชฎเชพเช‚เชฅเซ€. เชตเชงเซเชฎเชพเช‚, เช† เชฎเซ‹เชกเชฎเชพเช‚ 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 เช•เซ‹เชฎเซเชฏเซเชจเชฟเชŸเซ€ เชเชกเชฟเชถเชจ เชธเชพเชฅเซ‡ เชเช• เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชเช• เชซเซ‹เชฐเซเชฎเชฎเชพเช‚ เชชเซ‡เช•เซ‡เชœ เช•เชฐเชตเซเช‚ เชœเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡เชฒ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชชเชฐ "เชชเซ‡เชŸ" เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‡. เชšเชพเชฒเซ‹ เชฏเซ‹เช—เซเชฏ เช†เชงเชพเชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชชเชธเช‚เชฆ เช•เชฐเซ€เช, เช…เชจเซ‡ เช† เช…เชฎเชพเชฐเซ€ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒ เชนเชถเซ‡:

เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ

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 เชซเชพเชˆเชฒเซ‹ เชฒเช•เซเชทเซเชฏ/เชตเชฟเชšเชพเชฐ_เชจเชฟเชฐเซ€เช•เซเชทเชฃ เชธเชฌเชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชฆเซ‡เช–เชพเชตเซ€ เชœเซ‹เชˆเช.

เชนเชตเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เซ‹เชˆ เชถเช‚เช•เชพ เชจเชฅเซ€ เช•เซ‡ IDEA เชตเชฟเชถเซเชฒเซ‡เชทเช• เช•เซ‹เชˆเชชเชฃ CI เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชเช•เชฒ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เชฌเซ€เชœเชพ เชชเช—เชฒเชพ เชชเชฐ เช†เช—เชณ เชตเชงเซ€เช เช›เซ€เช.

เชชเช—เชฒเซเช‚ 2. เชฐเชฟเชชเซ‹เชฐเซเชŸ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‹

.xml เชซเชพเช‡เชฒเซ‹เชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชฐเชฟเชชเซ‹เชฐเซเชŸ เชฎเซ‡เชณเชตเชตเซ‹ เช เช…เชกเชงเซ€ เชฏเซเชฆเซเชง เช›เซ‡; เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชฎเชพเชจเชต-เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซ‹ เช—เซเชฃเชตเชคเซเชคเชพเชจเชพ เชฆเชฐเชตเชพเชœเซ‹เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เชฅเชตเซ‹ เชœเซ‹เชˆเช - เชธเซเชตเซ€เช•เซƒเชค เชซเซ‡เชฐเชซเชพเชฐ เช—เซเชฃเชตเชคเซเชคเชพ เชฎเชพเชชเชฆเช‚เชกเซ‹ เช…เชจเซเชธเชพเชฐ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เช›เซ‡ เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชคเชฐเซเช•.

เช† เช…เชฎเชจเซ‡ เชฎเชฆเชฆ เช•เชฐเชถเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชšเซ‡เชคเชตเชฃเซ€เช“ เชเชจเชœเซ€ เชชเซเชฒเช—เช‡เชจ, เชœเซ‡ เชœเชพเชจเซเชฏเซเช†เชฐเซ€ 2019 เชฎเชพเช‚ เชฐเชฟเชฒเซ€เช เชฅเชˆ เชนเชคเซ€. เชคเซ‡เชจเชพ เช†เช—เชฎเชจ เชธเชพเชฅเซ‡, เชœเซ‡เชจเช•เชฟเชจเซเชธ (เชšเซ‡เช•เชธเซเชŸเชพเช‡เชฒ, เชซเชพเช‡เชจเซเชกเชฌเช—เซเชธ, เชชเซ€เชเชฎเชกเซ€, เชตเช—เซ‡เชฐเซ‡) เชฎเชพเช‚ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เช˜เชฃเชพ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชชเซเชฒเช—เช‡เชจเซเชธ เชนเชตเซ‡ เช…เชชเซเชฐเชšเชฒเชฟเชค เชคเชฐเซ€เช•เซ‡ เชšเชฟเชนเซเชจเชฟเชค เชฅเชฏเชพ เช›เซ‡.

เชชเซเชฒเช—เช‡เชจ เชฌเซ‡ เชญเชพเช—เซ‹ เชธเชฎเชพเชตเซ‡ เช›เซ‡:

  • เช…เชธเช‚เช–เซเชฏ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชธเช‚เชฆเซ‡เชถ เช•เชฒเซ‡เช•เซเชŸเชฐเซเชธ (เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟ AcuCobol เชฅเซ€ ZPT Lint เชธเซเชงเซ€ เชตเชฟเชœเซเชžเชพเชจ เชฎเชพเชŸเซ‡ เชœเชพเชฃเซ€เชคเชพ เชคเชฎเชพเชฎ เชตเชฟเชถเซเชฒเซ‡เชทเช•เซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡),
  • เชคเซ‡ เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชเช• เชœ เชฐเชฟเชชเซ‹เชฐเซเชŸ เชฆเชฐเซเชถเช•.

เชšเซ‡เชคเชตเชฃเซ€เช“ เชเชจเชœเซ€ เชœเซ‡ เชตเชธเซเชคเซเช“เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เชฏเชพเชฆเซ€เชฎเชพเช‚ เชœเชพเชตเชพ เช•เชฎเซเชชเชพเชˆเชฒเชฐเชจเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“ เช…เชจเซ‡ เชฎเซ‡เชตเซ‡เชจ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฒเซ‹เช—เชจเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡: เชœเซ‹ เช•เซ‡ เชคเซ‡ เชธเชคเชค เชฆเซƒเชถเซเชฏเชฎเชพเชจ เชนเซ‹เชฏ เช›เซ‡, เชคเซ‡เชฎ เช›เชคเชพเช‚ เชคเซ‡เชจเซเช‚ เชญเชพเช—เซเชฏเซ‡ เชœ เชตเชฟเชถเชฟเชทเซเชŸ เชฐเซ€เชคเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. IntelliJ IDEA เชฐเชฟเชชเซ‹เชฐเซเชŸเซเชธ เชชเชฃ เชฎเชพเชจเซเชฏ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ€ เชฏเชพเชฆเซ€เชฎเชพเช‚ เชธเชพเชฎเซ‡เชฒ เช›เซ‡.

เชชเซเชฒเช—เช‡เชจ เชจเชตเซเช‚ เชนเซ‹เชตเชพเชฅเซ€, เชคเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชธเชพเชฅเซ‡ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เชชเชฐเซเช• เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชจเซ€ เชญเชพเช—เซ€เชฆเชพเชฐเซ€ เชธเชพเชฅเซ‡เชจเซเช‚ เชฌเชฟเชฒเซเชก เชธเซเชŸเซ‡เชช เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชถเซ‡ (เช…เชฎเซ‡ เชซเช•เซเชค เชชเซเชฒเช—เช‡เชจเชจเซ‡ เช•เชนเซ€เช เช›เซ€เช เช•เซ‡ เช…เชฎเซ‡ เช•เชฏเชพ เชฐเชฟเชชเซ‹เชฐเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‡ เช“เชณเช–เซ€เช เช›เซ€เช เช…เชจเซ‡ เช•เชˆ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเซเช•เซ‡เชจ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช):

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')]
    )
}

เชฐเชฟเชชเซ‹เชฐเซเชŸ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

เชœเซ‡เชจเช•เชฟเชจเซเชธ เชชเชฐ IntelliJ IDEA เช‡เชจเซเชธเซเชชเซ‡เช•เซเชถเชจ เชšเชฒเชพเชตเซ‹

เช…เชจเซเช•เซ‚เชณ เชฐเซ€เชคเซ‡, เช† เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชฌเชงเชพ เชฎเชพเชจเซเชฏ เชตเชฟเชถเซเชฒเซ‡เชทเช•เซ‹ เชฎเชพเชŸเซ‡ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เช›เซ‡. เชคเซ‡เชฎเชพเช‚ เช•เซ‡เชŸเซ‡เช—เชฐเซ€ เชฆเซเชตเชพเชฐเชพ เชถเซ‹เชงเชจเชพ เชตเชฟเชคเชฐเชฃเชจเซ‹ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ เช…เชจเซ‡ เชถเซ‹เชงเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เช—เชคเชฟเชถเซ€เชฒเชคเชพเชจเซ‹ เช†เชฒเซ‡เช– เช›เซ‡. เชคเชฎเซ‡ เชชเซƒเชทเซเช เชจเชพ เชคเชณเชฟเชฏเซ‡ เช—เซเชฐเซ€เชกเชฎเชพเช‚ เชเชกเชชเซ€ เชถเซ‹เชง เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชเช•เชฎเชพเชคเซเชฐ เชตเชธเซเชคเซ เชœเซ‡ IDEA เชจเชฟเชฐเซ€เช•เซเชทเชฃเซ‹ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชจ เชนเชคเซ€ เชคเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธเชฎเชพเช‚ เชธเซ€เชงเชพ เชœ เช•เซ‹เชก เชฌเซเชฐเชพเช‰เช เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชนเชคเซ€ (เชœเซ‹เช•เซ‡ เช…เชจเซเชฏ เช…เชนเซ‡เชตเชพเชฒเซ‹ เชฎเชพเชŸเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชšเซ‡เช•เชธเซเชŸเชพเช‡เชฒ, เช† เชชเซเชฒเช—เช‡เชจ เช† เชธเซเช‚เชฆเชฐ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡). เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ IDEA เชฐเชฟเชชเซ‹เชฐเซเชŸ เชชเชพเชฐเซเชธเชฐเชฎเชพเช‚ เช† เชเช• เชฌเช— เช›เซ‡ เชœเซ‡เชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชšเซ‡เชคเชตเชฃเซ€เช“ NG เชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเช“เชฎเชพเช‚ เชเช• เชฐเชฟเชชเซ‹เชฐเซเชŸ เช…เชจเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซเชตเซ‹เชฒเชฟเชŸเซ€ เช—เซ‡เชŸเซเชธเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€ เชคเชพเชฐเชฃเซ‹ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชธเช‚เชฆเชฐเซเชญ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฎเชพเชŸเซ‡ "เชฐเซ…เชšเซ‡เชŸ" เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เช•เซ‡เชŸเชฒเชพเช• เช—เซเชฃเชตเชคเซเชคเชพ เช—เซ‡เชŸเซเชธ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ เช…เชนเซ€เช‚ - เชœเซ‹ เช•เซ‡, เชคเซ‡ เชชเซ‚เชฐเซเชฃ เชจเชฅเซ€, เช…เชจเซ‡ เชคเชฎเชพเชฐเซ‡ เชธเซเชฐเซ‹เชค เช•เซ‹เชก เชœเซ‹เชตเซ‹ เชชเชกเชถเซ‡. เชฌเซ€เชœเซ€ เชฌเชพเชœเซ, เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชฎเชพเชŸเซ‡, "เชฐเซ…เชšเซ‡เชŸ" เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ (เชœเซเช“ เชฎเชพเชฐเชพ เช…เช—เชพเช‰เชจเซ€ เชชเซ‹เชธเซเชŸ เช† เชฅเซ€เชฎ เชตเชฟเชถเซ‡).

เชจเชฟเชทเซเช•เชฐเซเชท

เช† เชธเชพเชฎเช—เซเชฐเซ€ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เชฎเซ‡เช‚ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚: เชถเซเช‚ เช•เซ‹เชˆเช เช† เชตเชฟเชทเชฏ เชชเชฐ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ Habrรฉ เชชเชฐ เชฒเช–เซเชฏเซเช‚ เช›เซ‡? เชฎเชจเซ‡ เชœ เชฎเชณเซ€ เช‡เชจเซเชŸเชฐเชตเซเชฏเซ 2017 ั เช—เชฒเซ€เชœเซเชฏเชพเช‚ เชคเซ‡ เช•เชนเซ‡ เช›เซ‡:

เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚, เชœเซ‡เชจเช•เชฟเชจเซเชธ เช…เชฅเชตเชพ เชฎเซ‡เชตเซ‡เชจ เชชเซเชฒเช—เช‡เชจ เชธเชพเชฅเซ‡ เช•เซ‹เชˆ เชเช•เซ€เช•เชฐเชฃ เชจเชฅเซ€ [โ€ฆ] เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เช•เซ‹เชˆเชชเชฃ เช‰เชคเซเชธเชพเชนเซ€ IDEA เช•เซ‹เชฎเซเชฏเซเชจเชฟเชŸเซ€ เชเชกเชฟเชถเชจ เช…เชจเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชธเชพเชฅเซ‡ เชฎเชฟเชคเซเชฐเชคเชพ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช˜เชฃเชพเชจเซ‡ เชซเช•เซเชค เช†เชจเซ‹ เชซเชพเชฏเชฆเซ‹ เชฅเชถเซ‡.

เช เซ€เช• เช›เซ‡, เชฌเซ‡ เชตเชฐเซเชท เชชเช›เซ€ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชšเซ‡เชคเชตเชฃเซ€เช“ เชเชจเชœเซ€ เชชเซเชฒเช—เช‡เชจ เช›เซ‡, เช…เชจเซ‡ เช†เช–เชฐเซ‡ เช† เชฎเชฟเชคเซเชฐเชคเชพ เชซเชณเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹