ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅Π²ΡΡ ΠΊΠΎΠ΄Π° β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π§ΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°. ΠΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ
ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΠ΅Π³ΠΎΠ΄Π½Ρ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΡΠΎΡΠ½ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ. Π£ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Java-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ΄, ΡΠ°ΠΊ Π² ΡΠ΅ΠΌ ΠΆΠ΅ Π΅Π³ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°?
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java (ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .class) Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Java Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΡΠΈΠ±ΠΎΠΊ.
Π’Π°ΠΊΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΏΠ»ΠΎΡ
ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄, Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ Ρ.Π΄.
ΠΠ½ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΠΆΠΈΠ·Π½Ρ ΡΠ΅Π²ΡΡΠ΅ΡΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΈΠ»ΠΈ Π½Π΅ ΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅.
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ²ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΈΡΠΎΠΊ ΠΈ Π΅ΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²Π°ΠΌ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡ
ΠΏΠΎΠ΄ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ, ΡΡΠΎΠ±Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ°. ΠΡ Π° Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ Π²Ρ ΡΠ°ΠΌΠΈ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°ΡΡ ΠΊΡΡΡΡΠΌ ΡΠ΅Π²ΡΡΠ΅ΡΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΡ Π²ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠΎΠ΄Π°.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±Π·ΠΎΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° SpotBugs.
SpotBugs β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΈΠ·ΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ).
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΡΠΏΠ°ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΎΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡ
ΡΠ΄ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π½Π΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ
, Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ·Π΄Π½ΠΎ, Π²Π΅Π΄Ρ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΡΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.
| ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ SpotBugs Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Java Π²Π΅ΡΡΠΈΠΈ 8 ΠΈ Π²ΡΡΠ΅. |
- Ant
- Maven
- Gradle
- Eclipse
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.2.2</version>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>4.2.0</version>
</dependency>
</dependencies>
</plugin>
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ:
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.8</version>
</plugin>ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ SpotBugs
ΠΡ Π° ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ SpotBugs, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΠ°Π²Π΅Π½Π°:
(ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ, Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ Π½Π° Π·Π½Π°ΡΠΎΠΊ m),
ΠΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠΌΠΈΠ½Π°Π» idea:
1. mvn spotbugs:help
ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ SpotBugs. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΠ·ΠΎΠ²Π°:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
mvn spotbugs:help -Ddetail=true -Dgoal=<goal-name>
ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΡΠ΅Π»ΠΈ. ΠΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ:
mvn spotbugs:help -Ddetail=true
ΠΈ ΡΠ·Π½Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ
ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ΅Π»ΡΡ
.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π·Π°ΠΏΡΡΡΠΈΠ» mvn spotbugs:help -Ddetail=true -Dgoal=help
ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅:
2. mvn spotbugs:check
ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ· ΡΠΏΠ΅ΠΊΡΡΠ° spotbugs. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π’ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ spotbugs ΡΡΠ³Π°Π΅ΡΡΡ Π½Π° Π²ΡΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π½Π° Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ ΠΏΠ»ΠΎΡ
ΠΎΠΉ ΠΊΠΎΠ΄).3. mvn spotbugs:spotbugs
ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SpotBugs. ΠΠ΅Π· Π·Π°ΠΏΡΡΠΊΠ° Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½Π°, Ρ.ΠΊ. ΠΎΠ½Π° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ°ΠΌ Π°Π½Π°Π»ΠΈΠ·. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ°ΠΉΠ» spotbugsXml.xml, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈ Π»Π΅ΠΆΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ mvn spotbugs:spotbugs ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π°ΡΡ: ΡΠΏΠ΅ΡΠ²Π° Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° mvn clean compile, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅Ρ β ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, mvn spotbugs:check, ΡΠ°ΠΊΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» spotbugsXml.xml, Π½ΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ mvn spotbugs:spotbugs ΠΎΠ½Π° Π΅ΡΡ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ. ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΊΠΈΠΌ ΠΏΡΡΡΠΌ ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠ΅ΡΠ²Π° Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ mvn clean compile, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ β mvn spotbugs:check.4. mvn spotbugs:gui
ΠΠΎΠΆΠ°Π»ΡΠΉ, Π΄Π°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°ΠΌΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ: ΠΎΠ½Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ SpotBugs Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Π΅ΡΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π° ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ. ΠΠΎ, ΠΊΠ°ΠΊ Ρ ΠΈ ΡΠΏΠΎΠΌΡΠ½ΡΠ» Π²ΡΡΠ΅, Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΎΡΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ°ΠΉΠ» spotbugsXml.xml Π² ΠΏΠ°ΠΏΠΊΠ΅ target, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
Π’ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°, Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌ ΠΏΠ»ΠΎΡ
ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΎΡΠΈΠ±ΠΎΠΊ (400+).Π’ΠΈΠΏΡ ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΎΡΠΈΠ±ΠΎΠΊ:Bad practice
ΠΠ°ΡΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
Correctness
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ°Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π°ΠΌΡΡΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄ΠΎΡΡΠΈΡΡ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π»ΠΎΠΆΠ½ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΉ.
Experimental
ΠΠ°Π½Π½ΡΠΉ Π°ΡΡ Π΅ΡΠΈΠΏ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΎΡΠΈΠ±ΠΎΠΊ (Π΄ΠΎΠ²Π΅ΡΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡΠΌ Ρ Π΄Π°Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ).
Internationalization
Π’ΠΈΠΏ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
Malicious code vulnerability
ΠΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΡΠ·Π²ΠΈΠΌ Π΄Π»Ρ Π°ΡΠ°ΠΊ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Multithreaded correctness
Π’ΠΈΠΏ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ.
Bogus random noise
ΠΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π² ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ ΠΏΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ Π°Π½Π°Π»ΠΈΠ·Ρ Π΄Π°Π½Π½ΡΡ , Π° Π½Π΅ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ.
Performance
ΠΡΡ Π΅ΡΠΈΠΏ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π²Π΅ΡΠ΅Π½, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π½Π΅ΠΊΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
Security
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, Π΄ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ.
Dodgy code
ΠΠΎΠ΄ Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π²ΠΎΠ΄ΠΈΡ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π½ΠΎΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ.
