Π’ΠΎΠ΄Π΅ΡšΠ΅ Π½Π° IntelliJ IDEA инспСкции Π½Π° ЏСнкинс

IntelliJ IDEA дСнСс Π³ΠΎ ΠΈΠΌΠ° Π½Π°Ρ˜Π½Π°ΠΏΡ€Π΅Π΄Π½ΠΈΠΎΡ‚ статичСн Java Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄, кој Π²ΠΎ своитС моТности остава Π΄Π°Π»Π΅ΠΊΡƒ Π·Π°Π΄ сСбС Ρ‚Π°ΠΊΠ²ΠΈ β€žΠ²Π΅Ρ‚Π΅Ρ€Π°Π½ΠΈβ€œ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС Π‘Ρ‚ΠΈΠ» Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ Spotbugs. ΠΠ΅Ρ˜Π·ΠΈΠ½ΠΈΡ‚Π΅ Π±Ρ€ΠΎΡ˜Π½ΠΈ β€žΠΈΠ½ΡΠΏΠ΅ΠΊΡ†ΠΈΠΈβ€œ Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Π°Ρ‚ ΠΊΠΎΠ΄ΠΎΡ‚ Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ аспСкти, ΠΎΠ΄ стил Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π΄ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ.

ΠœΠ΅Ρ“ΡƒΡ‚ΠΎΠ°, сè Π΄ΠΎΠ΄Π΅ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚Π° сС ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ само Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π½Π° 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.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>

Π—Π°Π²Ρ€ΡˆΠ΅Π½Π°Ρ‚Π° слика достапно Π½Π° Docker Hub.

ΠŸΡ€Π΅Π΄ Π΄Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅, Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠ΅ Π΄Π°Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ IDEA Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚:

docker run --rm -v <ΠΏΡƒΡ‚ΡŒ/ΠΊ/Π²Π°ΡˆΠ΅ΠΌΡƒ/ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ>:/var/project inponomarev/intellij-idea-analyzer

Анализата Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π° Π±Ρ€ΠΎΡ˜Π½ΠΈΡ‚Π΅ .xml Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ со ΠΈΠ·Π²Π΅ΡˆΡ‚Π°ΠΈ ΠΎΠ΄ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΠΎΡ˜Π°Π²Π°Ρ‚ Π²ΠΎ ΠΏΠΎΡ‚ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° target/idea_inspections.

Π‘Π΅Π³Π° вСќС Π½Π΅ΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ сомнСвањС Π΄Π΅ΠΊΠ° IDEA Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π±ΠΎΡ‚ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡ˜Π½ΠΎ Π²ΠΎ која Π±ΠΈΠ»ΠΎ CI срСдина, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π°ΠΌΠ΅ Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‡Π΅ΠΊΠΎΡ€.

Π§Π΅ΠΊΠΎΡ€ 2. ΠŸΡ€ΠΈΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ΠΎΡ‚

Π”ΠΎΠ±ΠΈΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ΠΎΡ‚ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ .xml Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΎΠ΄ Π±ΠΈΡ‚ΠΊΠ°Ρ‚Π° сСга Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‡ΠΈΡ‚Π»ΠΈΠ² Π·Π° Π»ΡƒΡ“Π΅. И, исто Ρ‚Π°ΠΊΠ°, Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС користат Π²ΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ‚Π΅ Π·Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚ - Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΡƒΡ‚Π²Ρ€Π΄ΡƒΠ²Π°ΡšΠ΅ Π΄Π°Π»ΠΈ ΠΏΡ€ΠΈΡ„Π°Ρ‚Π΅Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π° ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π° ΠΈΠ»ΠΈ Π½Π΅ успСва спорСд ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡƒΠΌΠΈΡ‚Π΅ Π·Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚.

Ова ќС Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ЏСнкинс ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ° НГ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ, кој бСшС објавСн Π²ΠΎ Ρ˜Π°Π½ΡƒΠ°Ρ€ΠΈ 2019 Π³ΠΎΠ΄ΠΈΠ½Π°. Π‘ΠΎ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΏΠΎΡ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅, ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΠ΄ статичка Π°Π½Π°Π»ΠΈΠ·Π° Π²ΠΎ ЏСнкинс (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')]
    )
}

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ Π½Π° ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ΠΎΡ‚ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

Π’ΠΎΠ΄Π΅ΡšΠ΅ Π½Π° IntelliJ IDEA инспСкции Π½Π° ЏСнкинс

Погодно, овој ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·Π°Π»Π΅Π½ Π·Π° ситС ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ. Π‘ΠΎΠ΄Ρ€ΠΆΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ Π·Π° распрСдСлба Π½Π° Π½Π°ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π½Π°ΠΎΠ΄ΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ Π±Ρ€Π·ΠΎ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° Π΄Π½ΠΎΡ‚ΠΎ Π½Π° страницата. ЕдинствСното Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°ΡˆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π·Π° инспСкциитС Π½Π° IDEA бСшС моТноста Π·Π° ΠΏΡ€Π΅Π»ΠΈΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΎ ЏСнкинс (ΠΈΠ°ΠΊΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Checkstyle, овој ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ° прСкрасно). ИзглСда ΠΎΠ²Π° Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° Π²ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΡˆΡ‚Π°ΠΈ IDEA ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΠΎΠΏΡ€Π°Π²ΠΈ.

ΠœΠ΅Ρ“Ρƒ карактСристикитС Π½Π° Warnings NG Π΅ способноста Π΄Π° сС Π·Π±ΠΈΡ€Π°Ρ‚ Π½Π°ΠΎΠ΄ΠΈ ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Π²ΠΎΡ€ΠΈ Π²ΠΎ Π΅Π΄Π΅Π½ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ ΠΈ Π΄Π° сС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π° Quality Gates, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ β€žΡ€Π°ΡΡ‚Π΅Π»ΠΊΠ°β€œ Π·Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΎΡ‚ΠΎ собраниС. Достапна Π΅ програмска Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° Quality Gates Ρ‚ΡƒΠΊΠ° - сСпак, Π½Π΅ Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π΅Π½, ΠΈ ΠΌΠΎΡ€Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄. Од Π΄Ρ€ΡƒΠ³Π° страна, Π·Π° цСлосна ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π²Ρ€Π· ΠΎΠ½Π° ΡˆΡ‚ΠΎ сС случува, β€žΡΡ‚Π°ΠΊΠ»Π°Ρ‚Π°β€œ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° нСзависно (Π²ΠΈΠ΄ΠΈ ΠΌΠΎΠ΅ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π΅Π½ пост Π·Π° ΠΎΠ²Π°Π° Ρ‚Π΅ΠΌΠ°).

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

ΠŸΡ€Π΅Π΄ Π΄Π° ΠΏΠΎΡ‡Π½Π°ΠΌ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΡƒΠ²Π°ΠΌ овој ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π», Ρ€Π΅ΡˆΠΈΠ² Π΄Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΠΌ: Π΄Π°Π»ΠΈ нСкој вСќС ΠΏΠΈΡˆΡƒΠ²Π°Π» Π½Π° ΠΎΠ²Π°Π° Ρ‚Π΅ΠΌΠ° Π½Π° Π₯Π°Π±Ρ€Π΅? Најдов само ΠΈΠ½Ρ‚Π΅Ρ€Π²Ρ˜Ρƒ 2017 Π³ΠΎΠ΄ΠΈΠ½Π° с Π»Π°Π½ΠΈΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π²Π΅Π»ΠΈ:

ΠšΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ Π·Π½Π°ΠΌ, Π½Π΅ΠΌΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° со ЏСнкинс ΠΈΠ»ΠΈ ΠΌΠ°Π²Π΅Π½ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ […] Π’ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, сСкој Π΅Π½Ρ‚ΡƒΠ·ΠΈΡ˜Π°ΡΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π΄Ρ€ΡƒΠΆΠΈ со IDEA Community Edition ΠΈ Jenkins, ΠΌΠ½ΠΎΠ³ΡƒΠΌΠΈΠ½Π° Π±ΠΈ ΠΈΠΌΠ°Π»Π΅ само корист ΠΎΠ΄ ΠΎΠ²Π°.

Па, Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎΠ΄ΠΎΡ†Π½Π° Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Warnings NG Plugin, ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΎΠ²Π° ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π΅Π»ΡΡ‚Π²ΠΎ сС оствари!

Π˜Π·Π²ΠΎΡ€: www.habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π΄ΠΎΠ²Π΅Ρ€Π»ΠΈΠ² хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²ΠΈ со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ сигурСн Π²Π΅Π±-хостинг со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри | ProHoster