Π£ΠΌΠΎΡΠ½ΠΈ ΠΎΠ΄ Π±Π΅ΡΠΊΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅, ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΈ Π³ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΆΠΈΠ²ΠΎΡΠΎΡ. Π ΠΎΡΠΊΠ°ΠΊΠΎ ΠΌΠ°Π»ΠΊΡ ΡΠ΅ ΠΏΠΎΠ±Π°ΡΠ°ΡΠ΅, ΠΈΠ»ΠΈ ΡΠ»ΡΡΠ°ΡΠ½ΠΎ ΡΠ΅ ΡΠ΅ ΡΠΎΠΏΠ½Π΅ΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΌΠ°Π³ΠΈΡΠ½Π°ΡΠ° ΡΡΠ°Π·Π°: βΠ‘ΡΠ°ΡΠΈΡΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π°β. ΠΡΠ΄Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΡΡΠΎ Π΅ ΡΠΎΠ° ΠΈ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ° ΡΠΎ Π²Π°ΡΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΡΡΡΠ½ΠΎΡΡ, Π°ΠΊΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ ΡΠ°Π·ΠΈΠΊ, ΡΠΎΠ³Π°Ρ, Π±Π΅Π· Π΄Π° Π³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ ΡΠΎΠ°, Π³ΠΎ ΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΠ΅ ΠΏΡΠ΅ΠΊΡ ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. Π€Π°ΠΊΡ Π΅ Π΄Π΅ΠΊΠ° ΡΠ΅ΠΊΠΎΡ ΠΌΠΎΠ΄Π΅ΡΠ΅Π½ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°, ΠΈΠ°ΠΊΠΎ ΠΌΠ°Π», ΡΠ΅Ρ Π½Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ° Π·Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π»Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ 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-ΡΡΡΠ΄ΠΈΠΎ-Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° C++ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° Linux / macOS)pvs-studio-dotnet (Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡΠ°, C# ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° Linux / macOS)pvs-studio.ΡΠ΅Π³Π»Π° (Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° 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