Π£ΡΡΠ°Π² ΠΎΡ Π½Π΅ΡΠΊΠΎΠ½ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ code review ΠΈΠ»ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π²ΡΠ΅ΠΌΠ΅Π½Π°ΠΌΠΈ Π·Π°Π΄ΡΠΌΡΠ²Π°Π΅ΡΡΡΡ, ΠΊΠ°ΠΊ Π±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ΅Π±Π΅ ΠΆΠΈΠ·Π½Ρ. Π Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π², Π½Ρ ΠΈΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π°ΡΠΊΠ½ΡΠ²ΡΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅: "Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·". ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΡΠΎΠ³Π΄Π°, Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°ΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ, Π²Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π»ΠΈ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΡΡΡ ΠΈ ΠΊΡΠΎΡ
ΠΎΡΠ½ΡΠΉ, Π½ΠΎ Π½Π°Π±ΠΎΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ
Π² ΠΊΠΎΠ΄Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡ C++ ΠΊΠΎΠ΄ Π² Visual Studio Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π ΡΡΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ var ΡΠ°ΠΊ ΠΈ Π½Π΅ Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π½ΠΈΠ³Π΄Π΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π°. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Coverity, Klocwork ΠΈΠ»ΠΈ PVS-Studio, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠ΅ΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ°, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π²Π½Π΅Π΄ΡΡΡΡ,
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·?
Π Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ : ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΠΉΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ΄Π΅: Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ
auto x = obj.x;
auto y = obj.y;
auto z = obj.z;
ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
auto x = obj.x;
auto y = obj.y;
auto z = obj.x;
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, PVS-Studio Π²ΡΠ΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:
ΠΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΊΠ°ΡΡ Π² ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΡΠΊΠ°ΠΌΠΈ, ΡΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Compiler Explorer: *
Π ΠΊΠ°ΠΊ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΡΡΠ°Π·Ρ ΠΈ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅ΡΡΡ Π·Π° ΠΎΡΠ»Π°Π΄ΠΊΡ Π½Π° Π΄ΠΎΠ±ΡΡΠΉ ΡΠ°Ρ, Π½Π΅Π΄ΠΎΡΠΌΠ΅Π²Π°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΡΡΡΠ°Π½Π½ΠΎ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΠ²Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°. Π Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΠ·Π°Π±ΡΠ» ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ½ΠΊΠΎΡΡΡ ΡΠ·ΡΠΊΠ°? ΠΠ»ΠΈ ΠΆΠ΅ Π²ΠΎΠ²ΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠ» Π² ΠΊΠΎΠ΄Π΅
ΠΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΈΡ
ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·. ΠΡΠΎ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°ΠΆΠ΅Ρ Π΅ΠΌΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΎΠ±ΡΡΡΠ½ΠΈΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΊ ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ: *
ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² ΡΡΠ°ΡΡΡΡ :
Π’ΠΎΠΏ 10 ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ C++ Π·Π° 2019 Π³ΠΎΠ΄ Π’ΠΎΠΏ 10 ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ C# Π·Π° 2019 Π³ΠΎΠ΄ Π’ΠΎΠΏ 10 ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Java Π·Π° 2019 Π³ΠΎΠ΄
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΡΠΎΡΠΈΡΠ°Π² ΡΡΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΈ ΡΠ±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ Π² ΠΏΠΎΠ»ΡΠ·Π΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°Ρ ΠΎΡΠ΅ΡΡ ΠΈΡΠΏΡΡΠ°ΡΡ Π΅Π³ΠΎ Π² Π΄Π΅Π»Π΅. ΠΠΎ Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ? ΠΠ°ΠΊ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ? Π ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ Π½ΠΈΠΌ? ΠΠ° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ ΠΎΡΠ²Π΅ΡΡ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈ Π½Π΅ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°ΠΊΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π²Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±Π·ΠΎΡΡ ΠΊΠΎΠ΄Π°. ΠΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΠΎΠΌΠΎΠ³Π°Ρ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ, Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΠΈ, ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½Π΅Π΅ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±Π·ΠΎΡΠ°Ρ
ΠΊΠΎΠ΄Π° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ
ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π½Π°Π΄ Π²ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΌ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈΠ»ΠΈ
0. ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ
ΠΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠ±Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡΡΡ Π²Π½Π΅Π΄ΡΡΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅Π» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π²ΠΆΠΈΠ²ΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΡΡΠΎΠΈΡ ΡΠΊΠ°ΡΠ°ΡΡ
Π§ΡΠΎ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅:
- ΠΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ;
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠ΅Π΄ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ;
- ΠΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΅ΡΡΡ ΡΠ΅ΠΉΡΠ°Ρ Π² Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠ΅Π±Π΅ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅, ΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΡΡΠΎΠΈΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° (
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π²ΡΠ΄Π°ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΠ΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡ
Π²ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° Π·Π½Π°ΡΠΈΡ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, 178 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΡβ¦
ΠΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ°Ρ
Medium ΠΈ Low ΡΠ°ΡΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΡΡ Ρ
ΠΎΡΠΎΡΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π·Π°Π½Π΅ΡΠ΅Π½Ρ ΡΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅Π½ΡΡΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ (Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡ). ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΡΡΠΎΠ²Π½ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄ Windows ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ: *
Π£ΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π² ΡΠ°ΠΌΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ (ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ² ΠΈΡ
) ΡΡΠΎΠΈΡ
1. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ
ΠΠΎΡΠ»Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Π½Π°ΡΡΡΠΏΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π² CI. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π°ΡΠ½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· ΠΈΠ»ΠΈ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ Π·Π°Ρ ΠΎΡΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΠΎΠ±ΡΡΡ Π²Π΅ΡΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π§ΡΠΎ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅:
- ΠΠ°ΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ;
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π²
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ (CI). ΠΡΠ±ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ Π² Π½ΠΈΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΠΏ Π² pipeline, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΎΠ². ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, PVS-Studio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ:
PVS-Studio_Cmd.exe (Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, C#, C++ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Windows)CLMonitor.exe (ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ)pvs-studio-analyzer (Π°Π½Π°Π»ΠΈΠ· C++ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Linux / macOS)pvs-studio-dotnet (Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, C# ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Linux / macOS)pvs-studio.jar (Π°Π½Π°Π»ΠΈΠ· Java ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²)PlogConverter (ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΡΡΡΡΠ°)
ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π² CI Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΈ Π²Π΅ΡΠΈ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ;
- ΠΠ°ΠΏΡΡΡΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·;
- ΠΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ PVS-Studio Π½Π° Linux (Debian-base) Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
PVS-Studio_setup.exe /verysilent /suppressmsgboxes
/norestart /nocloseapplications
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠΈ PVS-Studio Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ *
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ»Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ ΡΠ΅ΡΡΡ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π² Π΄Π²Π° ΡΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΡΡΠΊΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Ρ ΠΏΠΎΠΊΠ°ΠΆΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ C++ (Linux) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w
ΠΠ΅ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·, Π° Π²ΡΠΎΡΠ°Ρ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ β ΡΡΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠ½ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΎΡΡΡΡΠ° β FullHtml. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° CI ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠ°ΡΡΠ΅ "
Π₯ΠΎΡΠΎΡΠΎ, Π²Ρ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π½Π° ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π·Π°Π»ΠΈΠ» Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄, Π±ΡΠ΄Π΅Ρ ΠΏΠ°Π΄Π°ΡΡ ΡΡΠ°ΠΏ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΈ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π²Π΅ΡΠΎΠΊ, Π° Π΄ΠΎ Π½Π΅Π³ΠΎ, Π½Π° ΡΡΠ°ΠΏΠ΅ pull request'Π°.
Π ΡΠ΅Π»ΠΎΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° pull request'Π° Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° CI. ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, Π·Π°ΠΏΡΠΎΡΠΈΠ² ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ git:
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π½Π° Π²Ρ ΠΎΠ΄ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² PVS-Studio ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π°Π³Π° -S:
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ Π°Π½Π°Π»ΠΈΠ· pull request'ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ *
ΠΠ°ΡΡΡΠΎΠΈΠ² Π°Π½Π°Π»ΠΈΠ· pull request'ΠΎΠ² Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΎΠ·Π΄Π°Π² Π³ΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΡ.
ΠΡΠΎ Π²ΡΡ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ Ρ
ΠΎΡΠΎΡΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, Π½ΠΎ ΠΈ ΠΎΡ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°. ΠΠ»Ρ ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ. PVS-Studio, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅Π΅Ρ
2. ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. Π ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²Ρ ΡΠΆΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ°Π±ΠΎΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΡΠ°ΠΌΠΎΠΉ Π»ΡΠ³ΠΊΠΎΠΉ ΡΠ°ΡΡΡΡ.
ΠΠ°ΠΊ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π·Π°ΠΉΠΌΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡΠ²Π»Π΅ΡΡΡ ΠΈΡ
ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ ΠΈ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ. ΠΠ»Ρ PVS-Studio Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ
3. ΠΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΡΠ° ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΎ ΡΠΏΠΎΡΠΎΠ±Π°Ρ
ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΏΡΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠΎΠ»Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΡΡΠΎ Π»ΠΈ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΡΠ°Π·ΠΎΠΌ Π²ΠΎ Π²ΡΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅? ΠΠ΄Π²Π° Π»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΠΉ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³, ΡΡΠΎ ΡΡΠ°Π·Ρ Π·Π°ΡΡΠΎΠ½Π΅Ρ Π²ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π° ΡΠ°Π· ΡΠ΅Π΄ΠΊΠΎ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π΄Π΅ΡΡΡΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ
ΠΈ Π΅ΡΡΡ ΡΠΌΡΡΠ» Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡ Π² Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠΎ ΡΠΎΠΎΠ±ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, PVS-Studio ΡΠΊΠ°ΠΆΠ΅Ρ Π²Π°ΠΌ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ:
Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΡΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΠΈΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π΅ΡΡΡ. ΠΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°ΡΡΠΈ ΠΏΡΠΎ Π±ΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ Π΄Π»Ρ PVS-Studio, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΡΠΎΡΠΈΠ°Π»Ρ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°:
ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ PVS-Studio Π² Windows (C, C++, C#) ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ PVS-Studio Π² Linux ΠΈ macOS (C, C++) ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ PVS-Studio Java
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ°ΡΡΠΈ Π΄Π°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Π½Π΅ ΠΎΡΠ½ΠΈΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. π
ΠΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ΄Π°Π²ΠΈΠ»ΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ Π·Π°ΠΏΡΡΠΊΠΎΠ². Π£Π²Ρ, Π½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠ΄Π°ΡΡ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄Π°Π²ΠΈΡΡ ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΏΠ»Π°Π³ΠΈΠ½Π΅ PVS-Studio Π΄Π»Ρ Visual Studio Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΠΊΠ½ΠΎΠΏΠΊΡ:
ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡ ΠΈΡ
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠ»ΠΈ Π»ΠΎΠΆΠ½ΠΎΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΡΠΎ Π² Π±ΡΠ΄ΡΡΠΈΡ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΡ
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ°Π·ΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ
Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Π»ΠΎΠΆΠ½ΡΡ
ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΉ.
ΠΠΎΡΠ»Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
ΠΠΎΡ ΠΌΡ ΠΈ ΠΏΡΠΎΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΏΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π² ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π²Π°ΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π° CI, ΡΠ°ΠΌΡΠΌ Π³Π»Π°Π²Π½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠ΅Π΄Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ β ΡΡΠΎ Π½Π΅ ΡΡΠ΄ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ Π³Π΄Π΅-ΡΠΎ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ Π²Π°Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ Π³ΠΎΠ΄ΠΈΡΡΡ. ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΡΠΎ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π»ΠΈ ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎ ΡΡΠΌ-Π»ΠΈΠ±ΠΎ Π·Π°Π±ΡΠ»ΠΈ.
ΠΡΠ°Π²Π΄Π° Π±Π΅Π· ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π²ΡΡΠ΄ Π»ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠ΅Π΄Ρ ΡΠ°ΠΌΠ°Ρ Π΅Π³ΠΎ Π³Π»Π°Π²Π½Π°Ρ ΠΏΠΎΠ»ΡΠ·Π° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ ΡΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠΎΠΈΡΠΊΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈ ΡΠΏΠΎΡΠ½ΡΡ ΡΡΠ°ΡΡΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°Π½Π½Π΅ΠΌ ΠΈΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ. Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠ°Π²ΠΊΠΈ ΡΡΠ»ΠΈ Π½Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ, Π½ΠΎ ΠΈ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΠ»Π³ΠΎ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΆΠ΅ ΠΏΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ.
Π Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠ»ΠΈ Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π²ΡΡ Π΅ΡΡ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎΠΈΡ Π»ΠΈ Π²Π½Π΅Π΄ΡΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ "
ΠΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ΠΉ Ρ Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½ΠΎΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠ΅ΠΉ, ΡΠΎ ΠΏΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄: Maxim Zvyagintsev.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com