เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบเบฒ IntelliJ IDEA เปƒเบ™ Jenkins

IntelliJ IDEA เปƒเบ™เบกเบทเป‰เบ™เบตเป‰เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ” Java เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบธเบ”, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰ "เบ™เบฑเบเบฎเบปเบšเป€เบเบปเปˆเบฒ" เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบขเบนเปˆเป„เบเบเบงเปˆเบฒ. เป€เบŠเบฑเบเปเบšเบš ะธ Spotbugs. "เบเบฒเบ™เบเบงเบ”เบเบฒ" เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†, เบˆเบฒเบเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เป„เบ›เบซเบฒเปเบกเบ‡เป„เบกเป‰เบ—เบปเปˆเบงเป„เบ›.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ•เบฒเบšเปƒเบ”เบ—เบตเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบžเบฝเบ‡เปเบ•เปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡ IDE เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบžเบงเบเบกเบฑเบ™เบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบ™เป‰เบญเบเบ•เปเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ‡เบ—เบตเปˆ เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เปเปˆ, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบเปเบฒเบ™เบปเบ”เบ›เบฐเบ•เบนเบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ™เบฐเบžเบฒเบš, เปเบฅเบฐเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบงเบ™เบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ–เป‰เบฒเบ›เบฐเบ•เบนเบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบšเปเปˆเป„เบ”เป‰เบœเปˆเบฒเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบงเปˆเบฒ TeamCity CI เปเบกเปˆเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš IDEA. เปเบ•เปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ TeamCity, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบฐเบเบฒเบเบฒเบกเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš IDEA เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ CI เบญเบทเปˆเบ™เป†. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ IDEA Community Edition, Jenkins เปเบฅเบฐ Warnings NG plugin.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 1. เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปƒเบ™เบ–เบฑเบ‡เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™

เปƒเบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”, เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ IDE (เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ desktop!) เบžเบฒเบเปƒเบ™เบฅเบฐเบšเบปเบš CI เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบเบฒเบŸเบดเบเบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบซเบ™เป‰เบฒเบชเบปเบ‡เป„เบชเปเบฅเบฐเบกเบตเบšเบฑเบ™เบซเบฒเบซเบผเบฒเบ. เป‚เบŠเบเบ”เบต, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ 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 Community Edition เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ–เบทเบ "pitted" เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ. เปƒเบซเป‰เป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆ 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>

เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เบฎเบนเบšโ€‹ เบกเบตเบขเบนเปˆเปƒเบ™ Docker Hub.

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบงเบ•เปเปˆเป„เบ›, เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐ IDEA เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ:

docker run --rm -v <ะฟัƒั‚ัŒ/ะบ/ะฒะฐัˆะตะผัƒ/ะฟั€ะพะตะบั‚ัƒ>:/var/project inponomarev/intellij-idea-analyzer

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบ™เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเปˆเบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบœเบปเบ™, เปเบฅเบฐเป„เบŸเบฅเปŒ .xml เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ—เบตเปˆเบกเบตเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบ™เบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป‚เบŸเป€เบ”เบตเบเปˆเบญเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ /idea_inspections.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเบปเบ‡เปƒเบชเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐ IDEA เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ”เปˆเบฝเบงเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก CI เปƒเบ”เบเปเปˆเบ•เบฒเบก, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเบชเบญเบ‡.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 2. เบชเบฐเปเบ”เบ‡เปเบฅเบฐเบงเบดเป€เบ„เบฒเบฐเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™

เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เป„เบŸเบฅเปŒ .xml เปเบกเปˆเบ™เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบนเป‰เบฎเบปเบš; เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เป‚เบ”เบเบกเบฐเบ™เบธเบ”. เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบ›เบฐเบ•เบนเบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ™เบฐเบžเบฒเบš - เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เบœเปˆเบฒเบ™เบซเบผเบทเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ™เบฐเบžเบฒเบš.

เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ Jenkins Warnings NG Plugin, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปƒเบ™เป€เบ”เบทเบญเบ™เบกเบฑเบ‡เบเบญเบ™ 2019. เบเบฑเบšเบเบฒเบ™เบกเบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡เบกเบฑเบ™, plugins เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ static เปƒเบ™ Jenkins (CheckStyle, FindBugs, PMD, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบ›เบฐเบˆเบธเบšเบฑเบ™เบ–เบทเบเบซเบกเบฒเบเบงเปˆเบฒเบฅเป‰เบฒเบชเบฐเป„เบซเบก.

plugin เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบชเบญเบ‡โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹:

  • เบ•เบปเบงเป€เบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ (เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ„เบปเบšเบ–เป‰เบงเบ™ เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เบฎเบนเป‰โ€‹เบˆเบฑเบโ€‹เบงเบดโ€‹เบ—เบฐโ€‹เบเบฒโ€‹เบชเบฒเบ”โ€‹เบˆเบฒเบ AcuCobol เบเบฑเบš ZPT Lintโ€‹)โ€‹,
  • viewer เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ”เบฝเบงเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆ Warnings NG เบชเบฒเบกเบฒเบ”เบงเบดเป€เบ„เบฒเบฐเบ›เบฐเบเบญเบšเบกเบตเบ„เปเบฒเป€เบ•เบทเบญเบ™เบˆเบฒเบ Java compiler เปเบฅเบฐเบเบฒเบ™เป€เบ•เบทเบญเบ™เบˆเบฒเบเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Maven: เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบˆเบฐเป€เบซเบฑเบ™เป„เบ”เป‰เป€เบฅเบทเป‰เบญเบเป†, เบšเปเปˆเบ„เปˆเบญเบเบกเบตเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ‚เบญเบ‡ IntelliJ IDEA เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบš.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ plugin เปเบกเปˆเบ™เปƒเบซเบกเปˆ, เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบกเบฑเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบš Jenkins Pipeline เป„เบ”เป‰เบ”เบต. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰ (เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบšเบญเบ plugin เบงเปˆเบฒเบฎเบนเบšเปเบšเบšเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบšเบฎเบนเป‰เปเบฅเบฐเป„เบŸเบฅเปŒเปƒเบ”เบ„เบงเบ™เบ–เบทเบเบชเบฐเปเบเบ™):

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 เปƒเบ™ Jenkins

เบชเบฐเบ”เบงเบ, เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ™เบตเป‰เปเบกเปˆเบ™เบ—เบปเปˆเบงเป„เบ›เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเปเบœเบ™เบงเบฒเบ”เปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบเบฒเบ™เปเบˆเบเบขเบฒเบเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเป‚เบ”เบเบ›เบฐเป€เบžเบ”เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบš. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ„เบปเป‰เบ™โ€‹เบซเบฒโ€‹เป„เบงโ€‹เปƒเบ™โ€‹เบ•เบฒโ€‹เบ‚เปˆเบฒเบโ€‹เป„เบŸโ€‹เบŸเป‰เบฒโ€‹เบขเบนเปˆโ€‹เบ—เบฒเบ‡โ€‹เบฅเบธเปˆเบกโ€‹เบ‚เบญเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹. เบชเบดเปˆเบ‡เบ”เบฝเบงเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบเบฒ IDEA เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ”เบเบเบปเบ‡เปƒเบ™ Jenkins (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป†, เบ•เบปเบงเบขเปˆเบฒเบ‡ Checkstyle, plugin เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เป„เบ”เป‰เบขเปˆเบฒเบ‡เบชเบงเบเบ‡เบฒเบก). เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบฅเบฒเบเบ‡เบฒเบ™ IDEA เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡ Warnings NG เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบˆเบฒเบเปเบซเบผเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เปƒเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบซเบ™เบถเปˆเบ‡เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™ Quality Gates, เบฅเบงเบกเบ—เบฑเบ‡ "ratchet" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡. เบšเบฒเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก Quality Gates เปเบกเปˆเบ™เบกเบตเปƒเบซเป‰ เบ—เบตเปˆเบ™เบตเป‰ - เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เบšเปเปˆเบ„เบปเบšเบ–เป‰เบงเบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡. เปƒเบ™เบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™, "ratchet" เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ” (เป€เบšเบดเปˆเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ•เบญเบšเบœเปˆเบฒเบ™เบกเบฒ เบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰).

เบชเบฐเบซเบฅเบธเบš

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบเบฐเบเบฝเบกเป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ„เบปเป‰เบ™เบซเบฒ: เบกเบตเปƒเบœเบ‚เบฝเบ™เบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบšHabre? เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบžเบปเบšเป€เบซเบฑเบ™ เบเบฒเบ™เบชเปเบฒเบžเบฒเบ” 2017 ั เบฅเบฒเบ™เบตเบšเปˆเบญเบ™เบ—เบตเปˆเบฅเบฒเบงเป€เบงเบปเป‰เบฒเบงเปˆเบฒ:

เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบฎเบนเป‰, เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบš Jenkins เบซเบผเบท plugin maven [โ€ฆ] เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบœเบนเป‰เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบฐเบ•เบทเบฅเบทเบฅเบปเป‰เบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป€เบžเบทเปˆเบญเบ™เบเบฑเบš IDEA Community Edition เปเบฅเบฐ Jenkins, เบซเบผเบฒเบเบ„เบปเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เปเบฅเป‰เบง, เบชเบญเบ‡เบ›เบตเบ•เปเปˆเบกเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต Warnings NG Plugin, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบกเบดเบ”เบ•เบฐเบžเบฒเบšเบ™เบตเป‰เป„เบ”เป‰เบšเบฑเบ™เบฅเบธเบœเบปเบ™!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™