Π£ΡΡΠ°Π² ΠΎΡ Π½Π΅ΡΠΊΠΎΠ½ΡΠ°Π΅ΠΌΠΎΡΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΏΡΠ°Π²Π½ΠΎΡΡΠΈ, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΡΡ ΠΊΠ°ΠΊ Π΄Π° ΡΠΈ ΡΠ»Π΅ΡΠ½ΠΈΡ ΠΆΠΈΠ²ΠΎΡΠ°. Π ΡΠ»Π΅Π΄ ΠΌΠ°Π»ΠΊΠΎ ΡΡΡΡΠ΅Π½Π΅, ΠΈΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π°ΡΡΠΊΠ²Π°ΠΉΠΊΠΈ ΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΡΠΎ ΡΠ»ΠΎΠ²ΠΎΡΡΡΠ΅ΡΠ°Π½ΠΈΠ΅: "Π‘ΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·". ΠΠ΅ΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΠΎΠ²Π° ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ ΡΠ²ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ.

ΠΡΡΡΠ½ΠΎΡΡ, Π°ΠΊΠΎ ΠΏΠΈΡΠ΅Ρ Π½Π° Π½ΡΠΊΠΎΠΉ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Π΅Π·ΠΈΠΊ, Π΄ΠΎΡΠΈ ΠΈ Π΄Π° Π½Π΅ Π·Π½Π°Π΅Ρ, ΠΏΡΠΎΠΏΡΡΠΊΠ°Ρ Π³ΠΎ ΠΏΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. Π Π°Π±ΠΎΡΠ°ΡΠ° Π΅ ΡΠ°ΠΌ, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°, ΠΌΠ°ΠΊΠ°Ρ ΠΈ ΠΌΠ°Π»ΡΠΊ, Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΉΠΊΠΈ 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 Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:
ΠΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° 'y'.
ΠΠΊΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΏΠΎΠΈΠ³ΡΠ°Π΅Ρ Ρ ΡΠ°Π·ΠΈ Π³ΡΠ΅ΡΠΊΠ°, ΠΎΠΏΠΈΡΠ°ΠΉ Π³ΠΎΡΠΎΠ²ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Compiler Explorer: **.
ΠΠ°ΠΊΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Ρ, Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄Π° ΠΎΠ±ΡΡΠ½Π΅Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ°ΡΡΡΡΠΈ ΠΎΡ ΠΊΠΎΠ΄Π° Π²Π΅Π΄Π½Π°Π³Π° ΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π΄Π° ΠΏΡΠ΅ΠΊΠ°ΡΠ°Ρ Π΄ΠΎΠ±ΡΡ ΡΠ°Ρ Π² ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΏΡΠ°Π²Π½ΠΎΡΡΠΈ, Π½Π΅Π΄ΠΎΡΠΌΡΠ²Π°ΠΉΠΊΠΈ Π·Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΡΡΠ°Π½Π½ΠΎ.
ΠΠΎ ΡΠΎΠ²Π° Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π° Π³ΡΠ΅ΡΠΊΠ°. Π Π°ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄, Π·Π°ΡΠΎΡΠΎ Π΅ Π·Π°Π±ΡΠ°Π²ΠΈΠ» Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡ Π½Π° Π΅Π·ΠΈΠΊΠ°? ΠΠ»ΠΈ Π΄ΠΎΡΠΈ Π΅ Π΄ΠΎΠΏΡΡΠ½Π°Π» Π² ΠΊΠΎΠ΄Π° ? Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ΄Π΅Π½Π½Ρ ΠΈ Π»ΡΠ²ΠΈΠ½Π°Ρ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΠΈΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ, ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ undefined behavior.
Π’ΠΎΡΠ½ΠΎ Π·Π° ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΌΡ ΠΏΠΎΡΠΎΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π°ΡΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΈΡΠ΅ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡΠ° ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΈ. ΠΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°: **.
ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² ΡΡΠ°ΡΠΈΠΈΡΠ΅:
Π‘Π΅Π³Π°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΈ ΡΠ΅ ΡΠ²Π΅ΡΠΈΡ ΡΠ΅ Π² ΠΏΠΎΠ»Π·Π°ΡΠ° ΠΎΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΡΠΎΠ±Π²Π°ΡΠ΅ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠΎ ΠΎΡΠΊΡΠ΄Π΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅? ΠΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ? Π ΠΊΠ°ΠΊ Π΄Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Π΅ΠΊΠΈΠΏΠ° Ρ Π½Π΅Π³ΠΎ? ΠΠ° ΡΠ΅Π·ΠΈ Π²ΡΠΏΡΠΎΡΠΈ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
ΠΠ΅Π»Π΅ΠΆΠΊΠ°. Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· Π½Π΅ Π·Π°ΠΌΠ΅Π½Ρ ΠΈ Π½Π΅ ΠΎΡΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ° ΠΏΠΎΠ»Π΅Π·Π½Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΊΠ°ΠΊΠ²Π°ΡΠΎ ΡΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄Π°. Π’ΠΎΠΉ Π΄ΠΎΠΏΡΠ»Π²Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ, ΠΏΠΎΠΌΠ°Π³Π°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Ρ ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΡΡ ΠΏΠ΅ΡΠ°ΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ, Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΠ΅ ΠΏΡΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄ΠΈΡΠ΅ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π΄Π° Π»ΠΎΠ²ΠΈΡΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΡΠΊΠΎΠ±ΠΈ ΠΈΠ»ΠΈ .
0. ΠΠ°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°
ΠΡΠΈΡΠΊΠΎ Π·Π°ΠΏΠΎΡΠ²Π° Ρ ΠΏΡΠΎΠ±Π½Π° Π²Π΅ΡΡΠΈΡ. ΠΠ°ΠΈΡΡΠΈΠ½Π° Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈΡΠ΅ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ Π½Π΅ΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Π°ΠΊΠΎ Π½ΠΈΠΊΠΎΠ³Π° ΠΏΡΠ΅Π΄ΠΈ Π½Π΅ ΡΡΠ΅ Π²ΠΈΠΆΠ΄Π°Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π½Π° ΠΆΠΈΠ²ΠΎ. ΠΠ°ΡΠΎΠ²Π° Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ .
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ:
- ΠΠ°ΠΊΠ²ΠΈ ΡΠ° Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°;
- Π‘ΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Π»ΠΈ Π΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡΡ Ρ Π²Π°ΡΠ°ΡΠ° ΡΡΠ΅Π΄Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°;
- ΠΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠΌΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ Π΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ (, , ). ΠΡΠΈ PVS-Studio Π²ΡΠ² Visual Studio ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΊΠ°ΡΡΠΈΠ½Π° (ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅):

Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Ρ Π³ΠΎΠ»ΡΠΌΠ° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ ΠΈΠ·Π΄Π°Π²Π°Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΡΡΠ΅ Π²ΡΠΈΡΠΊΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²Π°ΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ, Π° ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π΅ ΡΠ° ΠΊΡΠΈΡΠΈΡΠ½ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π½Π° Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΈ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡ. ΠΠ° ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠΈΠ»ΡΡΠΈΡΠ° ΠΈΠ·Ρ
ΠΎΠ΄Π° ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΡΠ°Π²ΡΡ ΡΠ°ΠΌΠΎ Π½Π°ΠΉ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π ΠΏΠ»ΡΠ³ΠΈΠ½Π° PVS-Studio Π·Π° Visual Studio ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΡΡΠ΅Π· ΡΠΈΠ»ΡΡΠ°ΡΠΈΡ ΠΏΠΎ Π½ΠΈΠ²Π° ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ° Π½Π°ΠΉ-ΡΠΎΡΠ΅Π½ ΠΈΠ·Ρ
ΠΎΠ΄ ΠΎΡΡΠ°Π²Π΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΡΠ°ΠΌΠΎ High ΠΈ General (ΡΡΡΠΎ Π΅ ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»):

ΠΠ°ΠΈΡΡΠΈΠ½Π°, 178 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°Ρ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Ρ
ΠΈΠ»ΡΠ΄ΠΈ...
Π ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ Medium ΠΈ Low ΡΠ΅ΡΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π½ΠΎ Π² ΡΠ΅Π·ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Ρ ΠΏΠΎ-Π½ΠΈΡΠΊΠ° ΡΠΎΡΠ½ΠΎΡΡ (Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ). ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° Π½ΠΈΠ²Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΠ΄ Windows ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΊ: **.
Π‘Π»Π΅Π΄ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ (ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡ ) Π΅ Π΄ΠΎΠ±ΡΠ΅ . Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° Π½Π΅ ΡΠ΅ Π·Π°Π³ΡΠ±ΡΡ Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ΅Π΄ ΡΡΠ°ΡΠΈΡΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ°, Π° Π½Π΅ ΡΠΏΠΈΡΡΠΊ Ρ Π³ΡΠ΅ΡΠΊΠΈ. π
1. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ
Π‘Π»Π΅Π΄ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ ΠΈΠ΄Π²Π° Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Π² CI. Π’ΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π±ΡΠ°Π²ΠΈ Π΄Π° Π²ΠΊΠ»ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π΄Π° Π½Π΅ ΠΏΠΎΠΆΠ΅Π»Π°Π΅. ΠΠ° ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΎ, Π·Π° Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ:
- ΠΠ°ΠΊΠ²ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ;
- Π‘ΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Π»ΠΈ Π΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡΡ Ρ Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ΄Π΅Π°Π»Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ Π² . Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ ΠΈ Π½ΠΈΠ΅ ΡΠΌΠ΅ ΡΠ°ΡΡΠ»ΠΈΠ²ΠΈ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ. π
Π ΡΠ΅Π³Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ (CI). ΠΡΠ΅ΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ Π² ΡΡΡ Π±Π΅Π· ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠ° ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΅ΡΠ°ΠΏ Π² pipeline, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΡΠ»Π΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΈ ΡΠ½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅. Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΡΡΠΈΠ»ΠΈΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, PVS-Studio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠΈΠ»ΠΈΡΠΈ:
- (Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ, C#, C++ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² Windows)
- (ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ°)
- (Π°Π½Π°Π»ΠΈΠ· Π½Π° C++ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² Linux / macOS)
- (Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ, C# ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² Linux / macOS)
- (Π°Π½Π°Π»ΠΈΠ· Π½Π° Java ΠΏΡΠΎΠ΅ΠΊΡΠΈ)
- (ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡ Π½Π° ΠΎΡΡΠ΅ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅)
ΠΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π² CI ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΡΡ ΡΡΠΈ Π½Π΅ΡΠ°:
- ΠΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°;
- ΠΠ° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°;
- ΠΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° PVS-Studio Π½Π° Linux (Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° Debian) ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
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ΠΡΡΠ²Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π°, Π° Π²ΡΠΎΡΠ°ΡΠ° ΠΎΡΡΠ΅ΡΠ° Π² ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠΎΡΠΌΠ°Ρ, ΡΠ΅ Π³ΠΎ ΠΈΠ·Π²Π΅Π΄Π΅ Π½Π° Π΅ΠΊΡΠ°Π½Π° ΠΈ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΠΎΠ΄ Π·Π° Π³ΡΠ΅ΡΠΊΠ°, ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΎΡ 0, Π² ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΡΠ»Π°Π³Π° -w ΠΈ Π΄Π° Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ°, ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΠ΅Π»Π΅ΠΆΠΊΠ°. Π’Π΅ΠΊΡΡΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π΅Π½. Π’ΠΎΠΉ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΏΡΠΎΡΡΠΎ Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΎΡΡΠ΅ΡΠ° - FullHtml. Π’ΠΎΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ΄Π°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° CI Π² ΡΡΠ°ΡΠΈΡΡΠ° "" (Windows) ΠΈΠ»ΠΈ "" (Linux).
ΠΠΎΠ±ΡΠ΅, Π²ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΈΡ ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ. Π‘Π΅Π³Π°, Π°ΠΊΠΎ Π½ΡΠΊΠΎΠΉ Π΅ ΠΊΠ°ΡΠΈΠ» Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ ΠΊΠΎΠ΄, Π΅ΡΠ°ΠΏΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ ΡΠ»Π΅Π΄ ΡΠ»ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅, Π° ΠΏΡΠ΅Π΄ΠΈ Π½Π΅Π³ΠΎ, Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° 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-ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ **. ΠΠΎΡΠΈ Π°ΠΊΠΎ Π²Π°ΡΠΈΡΡ CI Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΠ΅ Π² ΡΡΠ°ΡΠΈΡΡΠ° ΡΡΠ»ΡΠ³ΠΈ, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΎΠ±Ρ ΡΠ°Π·Π΄Π΅Π», ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ Π½Π° ΡΠ΅ΠΎΡΠΈΡΡΠ° Π½Π° ΡΠΎΠ·ΠΈ Π²ΠΈΠ΄ Π°Π½Π°Π»ΠΈΠ·.
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΉΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° pull request-ΠΎΠ²Π΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΡΠ·Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π³ΡΠ°Π½ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠΊΠΎΡΠΈ.
ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π±Π΅Π·ΡΠΏΠΎΡΠ½ΠΎ Π΄ΠΎΠ±ΡΠΎ, Π½ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Ρ ΡΠ±Π°Π²ΠΎ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ. ΠΠ΅ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, Π½ΠΎ ΠΈ ΠΎΡ ΡΠ½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ° ΡΠ°Π·ΠΈ ΡΠ΅Π» ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ. PVS-Studio, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ° .
2. ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ½ΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅
Π‘Π΅Π³Π° Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π·Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΎ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π΅ΡΠ΅ ΡΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π»ΠΈ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π½Π°ΡΠΈΠ½ΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΅ΡΠ΅ Π½Π°ΠΉ-Π»Π΅ΡΠ½Π°ΡΠ° ΡΠ°ΡΡ.
ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈ ΡΠ΅ Π³ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°, Π·Π°ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΎΡ ΠΈ Π½ΡΠΆΠ½ΠΈΡΠ΅ ΡΠ»Π°Π³ΠΎΠ²Π΅. ΠΠ° PVS-Studio ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ . ΠΡΠ΅ ΠΏΠ°ΠΊ, Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Chocolatey (Windows), Homebrew (macOS) ΠΈΠ»ΠΈ Π΄Π΅ΡΠ΅ΡΠΊΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° Linux.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° , , ΠΈ Ρ.Π½.
3. ΠΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°
ΠΠ° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠΌΠΈ Π·Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΏΡΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΡΠ»Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡΠ½Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π½ΠΎ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΡΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ·ΡΡΠ»ΠΎ Π² ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ? ΠΠ΄Π²Π° Π»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΎΠ±ΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π²ΡΠ² Π²ΡΠΈΡΠΊΠ°ΡΠ° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π°. ΠΡΠΎΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠ΄ΠΊΠΎ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° Π΄Π΅ΡΠ΅Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΅ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π΄Π° ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΡ . ΠΠ° ΡΠ°ΠΊΠ°Π²Π° ΡΠΈΡΡΠ°ΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° . ΠΡΠΎΡΡΠΎ Π½Π΅ ΡΠ΅ ΡΡΡΠ°Ρ ΡΠ²Π°ΠΉΡΠ΅, ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΠΎΡΠ΅Π΄Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. Π’ΠΎΠ²Π° Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ»Π΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, Π°ΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π² IDE Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΏΠ»ΡΠ³ΠΈΠ½.
Π ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡΡ ΠΎΡΠΊΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² Π½Π°ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄, ΡΠΎΠΉ ΡΠ΅ ΡΡΠΎΠ±ΡΠΈ Π·Π° ΡΠΎΠ²Π° ΡΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, PVS-Studio ΡΠ΅ Π²ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠΈ Π·Π° ΡΠΎΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ·Π²Π΅ΡΡΠΈΠ΅:

Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. Π’ΡΡΠ±Π²Π° ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° ΠΈΠΌ ΠΎΠ±ΡΡΠ½ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΠΎΠ²Π° ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°ΡΠΈΠΈ Π·Π° Π±ΡΡΠ· ΡΡΠ°ΡΡ Π·Π° PVS-Studio, Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ ΠΎΡ Π²Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ:
ΠΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΡΠ»Π°ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΠΈ Π½Π΅ ΠΎΡΠ½Π΅ΠΌΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅. π
ΠΡΠ΅ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π½ΠΈΠ΅ ΠΏΠΎΡΠΈΡΠ½Π°Ρ ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΡΡΠ²ΠΈΡΠ΅ ΡΡΠ°ΡΡΠ°. ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ Π½Π΅ ΡΠ° ΠΏΠ΅ΡΡΠ΅ΠΊΡΠ½ΠΈ ΠΈ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π΄Π°Π²Π°Ρ ΡΠ°Π»ΡΠΈΠ²ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΡΠΈΡΠ½Π΅ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΏΠ»ΡΠ³ΠΈΠ½Π° PVS-Studio Π·Π° Visual Studio Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Π΅Π΄ΠΈΠ½ Π±ΡΡΠΎΠ½:

ΠΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΡΠΈΡΠΊΠ°ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠΎΠ±ΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠΊΠΎ ΡΠ°Π»ΡΠΈΠ²ΠΎΡΠΎ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΡΠ°Π²Π΅Π½ΠΎ, ΡΠΎ Π² Π±ΡΠ΄Π΅ΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅, ΡΠ΅ Ρ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ ΡΡΠ°Π²Π° Π²ΡΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Π²Π°ΡΠ°ΡΠ° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° ΡΠ°Π»ΡΠΈΠ²ΠΈ ΡΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈΡ.
Π‘Π»Π΅Π΄ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ°
Π’ΡΠΊ ΠΌΠΈΠ½Π°Ρ ΠΌΠ΅ ΠΏΡΠ΅Π· Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ ΠΏΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ· Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ Π²Π°ΠΆΠ½ΠΎΡΡΡΠ° Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π² CI, Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ ΠΌΡΡΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΡΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠ°ΡΠΎΡΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ Π΅ ΡΡΠ΄ΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΠΊΠ°Π·Π²Π° ΠΎΡΠ΄Π°Π»Π΅Ρ, ΡΠ΅ ΠΊΠΎΠ΄ΡΡ Π½Π΅ Π΅ Π³ΠΎΠ΄Π΅Π½. ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΠΎΠΉ Π΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π²Π°, Π°ΠΊΠΎ ΡΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΌΠΎΡΠΈΠ»ΠΈ ΠΈ Π½Π°ΠΏΠΎΠΌΠ½Ρ, Π°ΠΊΠΎ Π½Π΅ΡΠΎ ΡΡΠ΅ ΠΏΡΠΎΠΏΡΡΠ½Π°Π»ΠΈ.
ΠΡΡΠΈΠ½Π°ΡΠ° Π΅, ΡΠ΅ Π±Π΅Π· ΡΠ΅Π΄ΠΎΠ²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π΅Π΄Π²Π° Π»ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΠ»Π΅ΡΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°. ΠΠ°ΠΉ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΠΌΡ ΠΏΠΎΠ»Π·Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π² ΠΎΡΠΊΡΠΈΡΠΈΡΡΠ° Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ ΡΠΏΠΎΡΠ½ΠΈ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π² ΡΠ°Π½Π½ΠΎΡΠΎ ΠΈΠΌ ΠΎΡΠΊΡΠΈΡΠΈΠ΅. Π‘ΡΠ³Π»Π°ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅, Π½Π΅ ΡΠ°ΠΌΠΎ Π΅ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ, Π½ΠΎ ΠΈ ΠΎΡΠ½Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅. Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·, ΠΏΡΠΈ ΡΠ΅Π΄ΠΎΠ²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π° Π²ΡΡΠΊΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠ° Π·Π° ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΊΠΎΠ΄Π°.
Π Π°ΠΊΠΎ Π²ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ»Π΅Π³ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π°Π»ΠΈ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌ ΡΠ΅Π³Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° "". Π Π½Π΅Ρ ΡΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π°, ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ ΠΎΡΠ½Π΅ΠΌΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΈΠΌ ΠΈ ΡΠ°ΠΊΠ° Π½Π°ΡΠ°ΡΡΠΊ.
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Ρ Π°Π½Π³Π»ΠΎΠ³ΠΎΠ²ΠΎΡΡΡΠ° Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ, ΠΌΠΎΠ»Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π»ΠΈΠ½ΠΊΠ° ΠΊΡΠΌ ΠΏΡΠ΅Π²ΠΎΠ΄Π°: Maxim Zvyagintsev. .
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
