Π£ΠΌΠΎΡΠ΅Π½ ΠΎΡ Π±Π΅Π·ΠΊΡΠ°Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΌΠΈΡΠ»ΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΎΠΏΡΠΎΡΡΠΈΡΠ΅ ΠΆΠΈΠ²ΠΎΡΠ° ΡΠΈ. Π ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΡΡΠΈΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ΅ Π½Π°ΡΡΠΊΠ½Π΅ΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠ»ΡΠ΅Π±Π½Π°ΡΠ° ΡΡΠ°Π·Π°: βΠ‘ΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·β. ΠΠ΅ΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΡΡΡΠ½ΠΎΡΡ, Π°ΠΊΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΈ Π΄Π° Π΅ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Π΅Π·ΠΈΠΊ, ΡΠΎΠ³Π°Π²Π°, Π±Π΅Π· Π΄ΠΎΡΠΈ Π΄Π° Π³ΠΎ ΠΎΡΡΠ·Π½Π°Π²Π°ΡΠ΅, ΡΡΠ΅ Π³ΠΎ ΠΏΡΡΠ½Π°Π»ΠΈ ΠΏΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. Π€Π°ΠΊΡ Π΅, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ, ΠΌΠ°ΠΊΠ°Ρ ΠΈ ΠΌΠ°Π»ΡΠΊ, Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΡΠ΅ 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 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΈ Π·Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Ρ
ΠΈΠ»ΡΠ΄ΠΈ...
Π ΡΠ°Π·Π΄Π΅Π»ΠΈ Π‘ΡΠ΅Π΄Π΅Π½ ΠΈ Π½ΠΈΡΠΊΠΎ Π§Π΅ΡΡΠΎ ΠΈΠΌΠ° Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π½ΠΎ ΡΠ΅Π·ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠ΅Π·ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠ° ΡΠΎΡΠ½ΠΎΡΡ (Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ). ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π½ΠΈΠ²Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΠ΄ Windows ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΠΊ: *
Π£ΡΠΏΠ΅ΡΠ½ΠΈΡΡ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ (ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΠΈΠΌ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅) ΡΠΈ ΡΡΡΡΠ²Π°
1. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅, Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ Π² CI. Π’ΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π±ΡΠ°Π²ΠΈ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π΄Π° Π½Π΅ ΠΈΡΠΊΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π»Π΅Π·Π΅ Π² ΠΎΠ±ΡΠΈΡ ΠΊΠ»ΠΎΠ½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ:
- ΠΠ°ΠΊΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ;
- Π‘ΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Π»ΠΈ Π΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡΡ Ρ Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅?
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠ΅ΡΡΠ΅ΠΊΡΠ½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ (CI). ΠΡΠ΅ΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ Π² ΡΡΡ Π±Π΅Π· ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΅ΡΠ°ΠΏ Π² ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΠ»Π΅Π΄ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π°. Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ PVS-Studio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ:
PVS-Studio_Cmd.exe (Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ, C#, C++ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° Windows)CLMonitor.exe (ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ)pvs-studio-Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (Π°Π½Π°Π»ΠΈΠ· Π½Π° 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 Π² ΡΡΠ°ΡΠΈΡΡΠ° "
ΠΠΎΠ±ΡΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅. Π‘Π΅Π³Π°, Π°ΠΊΠΎ Π½ΡΠΊΠΎΠΉ ΠΊΠ°ΡΠΈ Π½Π΅ΡΠ΅ΡΡΠ²Π°Π½ ΠΊΠΎΠ΄, Π΅ΡΠ°ΠΏΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ ΠΈ Π²ΠΈΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ ΡΠ° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ, Π° ΠΏΡΠ΅Π΄ΠΈ Π½Π΅Π³ΠΎ, Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° 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
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ *
Π§ΡΠ΅Π· Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠ°ΡΠΎ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ Π½Π΅ΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅.
ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π΅ Π΄ΠΎΠ±ΡΠ΅, Π½ΠΎ Π±ΠΈΡ
ΠΈΡΠΊΠ°Π» Π΄Π° ΠΌΠΎΠ³Π° Π΄Π° Π²ΠΈΠ΄Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ. ΠΠ΅ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, Π½ΠΎ ΠΈ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° ΡΠΎΠ²Π°. 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, Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ ΠΌΡΡΡΠΎ Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π΅ ΠΊΠΎΠΌΠΏΡΡΡΡΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ Π΅ ΡΡΠ΄Π½ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΊΠ°Π·Π²Π° Π½ΡΠΊΡΠ΄Π΅ Π΄Π°Π»Π΅Ρ ΠΎΡ Π²Π°Ρ, ΡΠ΅ ΠΊΠΎΠ΄ΡΡ Π½Π΅ Π΅ Π΄ΠΎΠ±ΡΡ. ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΠΎΠ²Π° Π΅ Π°ΡΠΈΡΡΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΊΠ°Π·Π²Π° Π΄Π°Π»ΠΈ ΡΡΠ΅ ΡΠΌΠΎΡΠ΅Π½ΠΈ ΠΈ Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½Ρ, Π°ΠΊΠΎ ΡΡΠ΅ Π·Π°Π±ΡΠ°Π²ΠΈΠ»ΠΈ Π½Π΅ΡΠΎ.
ΠΡΡΠ½ΠΎ Π΅, ΡΠ΅ Π±Π΅Π· ΡΠ΅Π΄ΠΎΠ²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· Π΅Π΄Π²Π° Π»ΠΈ ΡΠ΅ ΠΎΠΏΡΠΎΡΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°. Π ΠΊΡΠ°Ρ Π½Π° ΠΊΡΠ°ΠΈΡΠ°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΌΡ ΠΏΠΎΠ»Π·Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠ΅ ΠΊΡΠΈΠ΅ Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π² ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΈ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΊΠΎΠ΄Π°, Π° Π² ΡΠ°Π½Π½ΠΎΡΠΎ ΠΈΠΌ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅. Π‘ΡΠ³Π»Π°ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΈΡΠ΅ ΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅, Π΅ Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ, Π½ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π΅ΠΌΠΊΠΎ. Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ, ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° Π²ΡΡΠΊΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ ΠΈ ΠΎΡΡΠΈΡΠ° ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠ΅ΡΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π²ΡΡΡ Ρ ΠΊΠΎΠ΄Π°.
Π Π°ΠΊΠΎ Π²ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ»Π΅Π³ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π°Π»ΠΈ ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌ Π²ΠΈ ΡΠ΅Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠ° "
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Ρ Π°Π½Π³Π»ΠΎΠ³ΠΎΠ²ΠΎΡΡΡΠ° Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ, ΠΌΠΎΠ»Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄: ΠΠ°ΠΊΡΠΈΠΌ ΠΠ²ΡΠ³ΠΈΠ½ΡΠ΅Π².
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com