рдЬреЗрдирдХреАрдВрд╕ рдкрд░ IntelliJ IDEA рдирд┐рд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ

IntelliJ IDEA рдХреЗ рдкрд╛рд╕ рдЖрдЬ рд╕рдмрд╕реЗ рдЙрдиреНрдирдд рд╕реНрдЯреЗрдЯрд┐рдХ рдЬрд╛рд╡рд╛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИ, рдЬреЛ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рдРрд╕реЗ "рджрд┐рдЧреНрдЧрдЬреЛрдВ" рдХреЛ рдмрд╣реБрдд рдкреАрдЫреЗ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдЪреЗрдХрд╕реНрдЯрд╛рдЗрд▓ ╨╕ рд╕реНрдкреЙрдЯрдмрдЧреНрд╕. рдЗрд╕рдХреЗ рдХрдИ "рдирд┐рд░реАрдХреНрд╖рдг" рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рд╕реЗ рд▓реЗрдХрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдЧ рддрдХ рд╡рд┐рднрд┐рдиреНрди рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рддрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЖрдИрдбреАрдИ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЙрдирдХрд╛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреВрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЧреБрдгрд╡рддреНрддрд╛ рдЧреЗрдЯреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрджрд┐ рдЧреБрдгрд╡рддреНрддрд╛ рдЧреЗрдЯреНрд╕ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдмрд┐рд▓реНрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ TeamCity CI IDEA рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИред рд▓реЗрдХрд┐рди рднрд▓реЗ рд╣реА рдЖрдк TeamCity рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп CI рд╕рд░реНрд╡рд░ рдореЗрдВ IDEA рдирд┐рд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рджреЗрдЦреЗрдВ рдХрд┐ IDEA рдХрдореНрдпреБрдирд┐рдЯреА рдПрдбрд┐рд╢рди, рдЬреЗрдирдХрд┐рдВрд╕ рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдПрдирдЬреА рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЪрд░рдг 1. рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдПрдБ рдФрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЖрдИрдбреАрдИ (рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди!) рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реИ, рд╕рдВрджрд┐рдЧреНрдз рдФрд░ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, IDEA рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХреА рд╣реИ рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг ╨╕ рдирд┐рд░реАрдХреНрд╖рдг рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдореЛрдб рдореЗрдВ IDEA рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рдлрд╝рд┐рдХреНрд╕ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдпреЗ рдХрд╛рд░реНрдп рдЯреЗрдХреНрд╕реНрдЯ рд╢реЗрд▓ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд░реАрдХреНрд╖рдг рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ bin/inspect.sh IDEA рд╕рдВрд╕реНрдерд╛рдкрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ. рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:

  • рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкреВрд░рд╛ рдкрде (рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ),
  • рдирд┐рд░реАрдХреНрд╖рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде .xml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде (рдЖрдорддреМрд░ рдкрд░ .idea/inspectionProfiles/Project_Default.xml рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ),
  • рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкреВрд░рд╛ рдкрде рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рд╡рд╛рд▓реА .xml рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдВрдЧреАред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ

  • рдЬрд╛рд╡рд╛ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдкрде рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИрдВ jdk.table.xml IDEA рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ. рдЖрдИрдбреАрдИрдП рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрд╡рдпрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╣реЛрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдерд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдлрд╛рдЗрд▓ рдореИрдВ idea.properties.
  • рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ рд╡реИрдз IDEA рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреА рд╣реЛрдВрдЧреА рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
    • .idea/inspectionProfiles/Project_Default.xml - рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдЙрдирдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛,
    • .idea/modules.xml - рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА 'рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИ',
    • .idea/misc.xml - рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА 'рдЬреЗрдбреАрдХреЗ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ',
    • *.iml-╤Д╨░╨╣╨╗╤Л - рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдЕрдкреБрд╖реНрдЯ JDK рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдорддреМрд░ рдкрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ .gitignore, рдЙрдирдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрддреА - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд workspace.xml, рдЬрд╣рд╛рдВ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рд╣рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрдбреАрдХреЗ рдХреЛ рдЖрдИрдбреАрдИрдП рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ "рдЦрдбрд╝рд╛" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛред рдЖрдЗрдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдмреЗрд╕ рдХрдВрдЯреЗрдирд░ рдЪреБрдиреЗрдВ, рдФрд░ рдпрд╣реА рд╣рдорд╛рд░реА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╣реЛрдЧреА:

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, рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдЖрдИ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╣реЛрдо рдлрд╝реЛрд▓реНрдбрд░ рдПрдХ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдЪреАрдЬ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЙрдкреА рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддреА рд╣реИ: jdk.table.xml, рдЬрд┐рд╕рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдкрд┐рдд рдУрдкрдирдЬреЗрдбреАрдХреЗ рдХреЗ рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдЖрдИрдбреАрдИрдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдкрдХреА рдЕрдкрдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдПрдХ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ):

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 рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдИ рдереАред рдЗрд╕рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдЬреЗрдирдХреАрдВрд╕ (рдЪреЗрдХрд╕реНрдЯрд╛рдЗрд▓, рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕, рдкреАрдПрдордбреА, рдЖрджрд┐) рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЕрдм рдЕрдкреНрд░рдЪрд▓рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдкреНрд▓рдЧрдЗрди рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:

  • рдЕрд╕рдВрдЦреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рдВрджреЗрд╢ рд╕рдВрдЧреНрд░рд╛рд╣рдХ (рдкреВрд░реА рд╕реВрдЪреА рдЗрд╕рдореЗрдВ рдПрдХреНрдпреВрдХреЛрдмреЛрд▓ рд╕реЗ рд▓реЗрдХрд░ рдЬреЗрдбрдкреАрдЯреА рд▓рд┐рдВрдЯ рддрдХ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдЬреНрдЮрд╛рдд рд╕рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ),
  • рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рд░рд┐рдкреЛрд░реНрдЯ рджрд░реНрд╢рдХред

рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдПрдирдЬреА рдЬрд┐рди рдЪреАрдЬрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреА рд╣реИ рдЙрдирдХреА рд╕реВрдЪреА рдореЗрдВ рдЬрд╛рд╡рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдФрд░ рдорд╛рд╡реЗрди рдирд┐рд╖реНрдкрд╛рджрди рд▓реЙрдЧ рд╕реЗ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╡реЗ рд▓рдЧрд╛рддрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 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 рд░рд┐рдкреЛрд░реНрдЯ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдПрдирдЬреА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд╡рд╛рд▓рд┐рдЯреА рдЧреЗрдЯреНрд╕ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджрд░реНрдн рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП "рд░реИрдЪреЗрдЯ" рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдХреБрдЫ рдХреНрд╡рд╛рд▓рд┐рдЯреА рдЧреЗрдЯреНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдпрд╣рд╛рдВ - рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП, "рд╢рд╛рдлрд╝реНрдЯ" рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдореЗрд░рд╛ рджреЗрдЦреЗрдВ)ред рдкреВрд░реНрд╡ рдкреЛрд╕реНрдЯ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ)

рдирд┐рд╖реНрдХрд░реНрд╖

рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдпрд╣ рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛: рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╣реИрдмреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рд╣реИ? рдореИрдВрдиреЗ рд╣реА рдкрд╛рдпрд╛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ 2017 ╤Б рд▓рд╛рдиреАрдЬрд╣рд╛рдБ рд╡рд╣ рдХрд╣рддрд╛ рд╣реИ:

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЬреЗрдирдХрд┐рдВрд╕ рдпрд╛ рдорд╛рд╡реЗрди рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХреЛрдИ рдПрдХреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ [тАж] рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдИ рднреА рдЙрддреНрд╕рд╛рд╣реА рдЖрдИрдбрд┐рдпрд╛ рдХрдореНрдпреБрдирд┐рдЯреА рдПрдбрд┐рд╢рди рдФрд░ рдЬреЗрдирдХрд┐рдВрд╕ рд╕реЗ рджреЛрд╕реНрддреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рд╕реЗ рдХреЗрд╡рд▓ рдлрд╛рдпрджрд╛ рд╣реЛрдЧрд╛ред

рдЦреИрд░, рджреЛ рд╕рд╛рд▓ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдПрдирдЬреА рдкреНрд▓рдЧрдЗрди рд╣реИ, рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣ рджреЛрд╕реНрддреА рд╕рдлрд▓ рд╣реЛ рдЧрдИ рд╣реИ!

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ