Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ въвСдСниС към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅

Π£ΠΌΠΎΡ€Π΅Π½ ΠΎΡ‚ Π±Π΅Π·ΠΊΡ€Π°Π΅Π½ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, понякога мислитС ΠΊΠ°ΠΊ Π΄Π° опроститС ΠΆΠΈΠ²ΠΎΡ‚Π° си. И слСд ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚ΡŠΡ€ΡΠΈΡ‚Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ»ΠΈ случайно сС Π½Π°Ρ‚ΡŠΠΊΠ½Π΅Ρ‚Π΅ Π½Π° Π½Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π²ΡŠΠ»ΡˆΠ΅Π±Π½Π°Ρ‚Π° Ρ„Ρ€Π°Π·Π°: β€žΠ‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ·β€œ. НСка Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ прСдставлява ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° взаимодСйства с вашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ въвСдСниС към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅
Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, Π°ΠΊΠΎ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΈ Π΄Π° Π΅ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ Π΅Π·ΠΈΠΊ, Ρ‚ΠΎΠ³Π°Π²Π°, Π±Π΅Π· Π΄ΠΎΡ€ΠΈ Π΄Π° Π³ΠΎ ΠΎΡΡŠΠ·Π½Π°Π²Π°Ρ‚Π΅, стС Π³ΠΎ пуснали ΠΏΡ€Π΅Π· статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π€Π°ΠΊΡ‚ Π΅, Ρ‡Π΅ всСки ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ прСдоставя, ΠΌΠ°ΠΊΠ°Ρ€ ΠΈ малък, Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ прСдупрСТдСния Π·Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΊΠΎΠ΄Π°. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ 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 ΠΈΠ·Π΄Π°Π²Π° слСдното ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:

V537 ΠŸΠΎΠΌΠΈΡΠ»Π΅Ρ‚Π΅ Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° корСктността Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° β€žyβ€œ.

Ако искатС Π΄Π° Π±Ρ€ΡŠΠΊΠ½Π΅Ρ‚Π΅ Π² Ρ‚Π°Π·ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°, ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Compiler Explorer: *ΠΊΠ»ΠΈΠΊΠ²Π°Π½Π΅*.

И ΠΊΠ°ΠΊΡ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅, Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ възмоТно Π΄Π° сС ΠΎΠ±ΡŠΡ€Π½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° части ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π²Π΅Π΄Π½Π°Π³Π° ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сСднСтС Π΄Π° отстраняватС Π³Ρ€Π΅ΡˆΠΊΠΈ Π·Π° Π΄ΠΎΠ±ΡŠΡ€ час, Ρ‡ΡƒΠ΄Π΅ΠΉΠΊΠΈ сС Π·Π°Ρ‰ΠΎ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° странно.

Π’ΠΎΠ²Π° ΠΎΠ±Π°Ρ‡Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°. Какво Ρ‰Π΅ станС, Π°ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π΅ написал Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π·Π°Π±Ρ€Π°Π²ΠΈΠ» някои Ρ‚ΡŠΠ½ΠΊΠΎΡΡ‚ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ°? Или Π΄ΠΎΡ€ΠΈ Π³ΠΎ допуска Π² ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅? Π—Π° съТалСниС, Ρ‚Π°ΠΊΠΈΠ²Π° случаи са напълно ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈ ΠΈ Π»ΡŠΠ²ΡΠΊΠΈΡΡ‚ дял ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ сС ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

ИмСнно Π·Π° Ρ‚Π΅Π·ΠΈ ситуации сС появи статичният Π°Π½Π°Π»ΠΈΠ·. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ посочи Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ Ρ‰Π΅ обясни Π² докумСнтацията Π·Π°Ρ‰ΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС пишС ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅. Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°: *ΠΊΠ»ΠΈΠΊΠ²Π°Π½Π΅*.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΎΡ‰Π΅ интСрСсни Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Π² статиитС:

Π‘Π΅Π³Π°, слСд ΠΊΠ°Ρ‚ΠΎ стС ΠΏΡ€ΠΎΡ‡Π΅Π»ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈ стС сС ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈ Π² прСдимствата Π½Π° статичния Π°Π½Π°Π»ΠΈΠ·, ΠΌΠΎΠΆΠ΅ Π΄Π° искатС Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΡ€ΠΎΠ±Π²Π°Ρ‚Π΅. Но ΠΎΡ‚ΠΊΡŠΠ΄Π΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ? Как Π΄Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ² инструмСнт Π² тСкущия си ΠΏΡ€ΠΎΠ΅ΠΊΡ‚? И ΠΊΠ°ΠΊ Π΄Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ° с Π½Π΅Π³ΠΎ? Π©Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. Бтатичният Π°Π½Π°Π»ΠΈΠ· Π½Π΅ замСства ΠΈΠ»ΠΈ отмСня Ρ‚Π°ΠΊΠΎΠ²Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ΄Π°. Π’ΠΎΠΉ допълва Ρ‚ΠΎΠ·ΠΈ процСс, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅ ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, нСточности ΠΈ опасни Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈ. Много ΠΏΠΎ-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΅ Π΄Π° сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‚Π΅ ΠΈ яснотата Π½Π° ΠΊΠΎΠ΄Π°, вмСсто Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ поставСни скоби ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ скучнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° сравнСниС.

0. Π—Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ с инструмСнта

Всичко Π·Π°ΠΏΠΎΡ‡Π²Π° с ΠΏΡ€ΠΎΠ±Π½Π° вСрсия. Наистина Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π°ΠΊΠΎ Π½ΠΈΠΊΠΎΠ³Π° ΠΏΡ€Π΅Π΄ΠΈ Π½Π΅ стС Π²ΠΈΠΆΠ΄Π°Π»ΠΈ инструмСнта Π½Π° ΠΆΠΈΠ²ΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Π΅ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π½Π° вСрсия.

Какво Ρ‰Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ:

  • Какви са Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° взаимодСйствиС с Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°;
  • Π‘ΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ Π»ΠΈ Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ с Π²Π°ΡˆΠ°Ρ‚Π° срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°?
  • Какви ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠΌΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° във Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ?

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ инсталиратС всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ· Π½Π° цСлия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (Windows, Linux, macOS). Π’ случай Π½Π° PVS-Studio във Visual Studio Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° (ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ»ΠΈΠΊΠ½Π΅):

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ въвСдСниС към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅
Π€Π°ΠΊΡ‚ Π΅, Ρ‡Π΅ статичнитС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·Π΄Π°Π²Π°Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ Π±Ρ€ΠΎΠΉ прСдупрСТдСния Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ с голяма ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π°. Няма Π½ΡƒΠΆΠ΄Π° Π΄Π° Π³ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ всички, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π΅ са ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° Π²ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π½Π°ΠΉ-интСрСснитС прСдупрСТдСния ΠΈ Π³ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΉΡ‚Π΅, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, трябва Π΄Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ·Ρ…ΠΎΠ΄Π° ΠΈ Π΄Π° оставитС само Π½Π°ΠΉ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈΡ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. Π’ приставката PVS-Studio Π·Π° Visual Studio Ρ‚ΠΎΠ²Π° става Ρ‡Ρ€Π΅Π· Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ Π½ΠΈΠ²Π° ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ. Π—Π° Π½Π°ΠΉ-Ρ‚ΠΎΡ‡Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ оставСтС само Високо ΠΈ ΠΎΠ±Ρ‰ (ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ»ΠΈΠΊΠ½Π΅):

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ въвСдСниС към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅
Наистина, 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

ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‰Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ Π°Π½Π°Π»ΠΈΠ·Π°, Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΏΠ»ΠΈΠΊΠΎΠ²Π΅ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Π² тСкстов Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΏΠΎΠΊΠ°Π·Π²Π° Π³ΠΎ Π½Π° Π΅ΠΊΡ€Π°Π½Π° ΠΈ Π²Ρ€ΡŠΡ‰Π° ΠΊΠΎΠ΄ Π·Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅, Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ 0, Π°ΠΊΠΎ ΠΈΠΌΠ° прСдупрСТдСния. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΆΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° компилация, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°. Π’ΠΈΠ½Π°Π³ΠΈ ΠΎΠ±Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ Ρ„Π»Π°Π³Π° -w ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ сборка, която ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° прСдупрСТдСния.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ВСкстовият Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π΅Π½. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½ΠΎ Π΅ просто ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎ-интСрСсСн Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° ΠΎΡ‚Ρ‡Π΅Ρ‚Π° - FullHtml. Позволява Π²ΠΈ Π΄Π° Π½Π°Π²ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ Π² ΠΊΠΎΠ΄Π°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° настройката Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° CI Π² статията "PVS-Studio ΠΈ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция" (Windows) ΠΈΠ»ΠΈ "Как Π΄Π° настроитС PVS-Studio Π² Travis CIβ€œ (Linux).

Π”ΠΎΠ±Ρ€Π΅, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ…Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅. Π‘Π΅Π³Π°, Π°ΠΊΠΎ някой ΠΊΠ°Ρ‡ΠΈ нСтСстван ΠΊΠΎΠ΄, Π΅Ρ‚Π°ΠΏΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‰Π΅ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ ΠΈ Π²ΠΈΠ΅ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ съвсСм ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ слСд ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅Ρ‚Π΅ са ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ, Π° ΠΏΡ€Π΅Π΄ΠΈ Π½Π΅Π³ΠΎ, Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° заявка Π·Π° изтСглянС.

ΠšΠ°Ρ‚ΠΎ цяло, настройванСто Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° заявка Π·Π° изтСглянС Π½Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎΡ‚ΠΎ стартиранС Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° 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

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявки Π·Π° изтСглянС *Ρ‚ΡƒΠΊ*. Π”ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π²Π°ΡˆΠΈΡΡ‚ CI Π½Π΅ Π΅ Π² списъка с услуги, спомСнати Π² статията, общият Ρ€Π°Π·Π΄Π΅Π», посвСтСн Π½Π° тСорията Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ Π°Π½Π°Π»ΠΈΠ·, Ρ‰Π΅ Π²ΠΈ бъдС ΠΏΠΎΠ»Π΅Π·Π΅Π½.

Π§Ρ€Π΅Π· настройванС Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° заявки Π·Π° изтСглянС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ прСдупрСТдСния, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π³Ρ€Π°Π½ΠΈΡ†Π°, която нСтСстваният ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅.

Всичко Ρ‚ΠΎΠ²Π° със сигурност Π΅ Π΄ΠΎΠ±Ρ€Π΅, Π½ΠΎ Π±ΠΈΡ… искал Π΄Π° ΠΌΠΎΠ³Π° Π΄Π° видя всички прСдупрСТдСния Π½Π° Π΅Π΄Π½ΠΎ място. НС само ΠΎΡ‚ статичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, Π½ΠΎ ΠΈ ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΈ тСстовС ΠΈΠ»ΠΈ ΠΎΡ‚ динамичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Има Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ услуги ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° Ρ‚ΠΎΠ²Π°. PVS-Studio, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ° плъгин Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π² SonarQube.

2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π½Π° машини Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ

Π‘Π΅Π³Π° Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° инсталиратС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π·Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π”ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ‡Π΅ стС сС Π·Π°ΠΏΠΎΠ·Π½Π°Π»ΠΈ с ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ€Π΅Ρ‡Π΅ Π½Π°ΠΉ-лСсната част.

ΠšΠ°Ρ‚ΠΎ Π½Π°ΠΉ-простият Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ сами Π΄Π° инсталират нСобходимия Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π’ΠΎΠ²Π° ΠΎΠ±Π°Ρ‡Π΅ Ρ‰Π΅ ΠΎΡ‚Π½Π΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Ρ‰Π΅ Π³ΠΈ ΠΎΡ‚Π²Π»Π΅Ρ‡Π΅ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ процСс с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° инсталатор ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Ρ„Π»Π°Π³ΠΎΠ²Π΅. Π—Π° PVS-Studio ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π° инсталация. Π’ΠΈΠ½Π°Π³ΠΈ ΠΎΠ±Π°Ρ‡Π΅ ΠΈΠΌΠ° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Chocolatey (Windows), Homebrew (macOS) ΠΈΠ»ΠΈ дСсСтки ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Linux.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ трябва Π΄Π° инсталиратС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Visual Studio, Π˜Π”Π•Π―, Π•Π·Π΄Π°Ρ‡ ΠΈ Ρ‚.Π½.

3. Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°

На Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ няколко Π΄ΡƒΠΌΠΈ Π·Π° Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ускоряванС Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°. ΠŸΡŠΠ»Π½ΠΈΡΡ‚ Π°Π½Π°Π»ΠΈΠ· Π½Π° цСлия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π½ΠΎ ΠΊΠΎΠ»ΠΊΠΎ чСсто промСнямС ΠΊΠΎΠ΄Π° Π² цСлия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ навСднъТ? Π•Π΄Π²Π° Π»ΠΈ ΠΈΠΌΠ° Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° голям, Ρ‡Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° засСгнС цялата ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π°. Броят Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС промСнят навСднъТ, рядко надвишава Π΄ΡƒΠ·ΠΈΠ½Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΈΠΌΠ° смисъл Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅. Π—Π° Ρ‚Π°ΠΊΠ°Π²Π° ситуация ΠΈΠΌΠ° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π΅Π½ Π°Π½Π°Π»ΠΈΠ·. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π΅ сС Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ΅Ρ‚Π΅, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π΄Ρ€ΡƒΠ³ инструмСнт. Π’ΠΎΠ²Π° Π΅ спСциалСн Ρ€Π΅ΠΆΠΈΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ само ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ зависимости ΠΈ Ρ‚ΠΎΠ²Π° сС случва Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ слСд ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ, Π°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Π² IDE с инсталиран плъгин.

Ако Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² наскоро промСнСния ΠΊΠΎΠ΄, Ρ‚ΠΎΠΉ Ρ‰Π΅ Π΄ΠΎΠΊΠ»Π°Π΄Π²Π° Ρ‚ΠΎΠ²Π° нСзависимо. НапримСр PVS-Studio Ρ‰Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ΅ Π·Π° Ρ‚ΠΎΠ²Π°, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ въвСдСниС към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅
Π Π°Π·Π±ΠΈΡ€Π° сС, Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ инструмСнта Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ. Врябва ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΈΠΌ ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΈ ΠΊΠ°ΠΊ Π΅. Π•Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, статии Π·Π° Π±ΡŠΡ€Π· старт Π½Π° PVS-Studio, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡƒΡ€ΠΎΡ†ΠΈ Π·Π° всСки инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅:

Π’Π°ΠΊΠΈΠ²Π° статии прСдоставят цялата Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° информация Π·Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΈ Π½Π΅ ΠΎΡ‚Π½Π΅ΠΌΠ°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅. πŸ™‚

Π”ΠΎΡ€ΠΈ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ с инструмСнта, Π½ΠΈΠ΅ потиснахмС ΠΌΠ½ΠΎΠ³ΠΎ прСдупрСТдСния ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ стартирания. Π—Π° съТалСниС, статичнитС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π½Π΅ са ΠΏΠ΅Ρ€Ρ„Π΅ΠΊΡ‚Π½ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π΄Π°Π²Π°Ρ‚ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ. ОбикновСно Π΅ лСсно Π΄Π° Π³ΠΈ потиснСтС; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² приставката PVS-Studio Π·Π° Visual Studio трябва само Π΄Π° Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ Π΅Π΄ΠΈΠ½ Π±ΡƒΡ‚ΠΎΠ½:

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ въвСдСниС към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅
ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π°Ρ‡Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° просто Π΄Π° Π³ΠΈ потискатС. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π°. Ако Ρ„Π°Π»ΡˆΠΈΠ²ΠΈΡΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½, Ρ‚ΠΎΠ³Π°Π²Π° Π² Π±ΡŠΠ΄Π΅Ρ‰ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅, Ρ‡Π΅ всСки ΠΏΡŠΡ‚ ΠΈΠΌΠ° всС ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, спСцифични Π·Π° Π²Π°ΡˆΠ°Ρ‚Π° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π°.

Π‘Π»Π΅Π΄ интСграция

Π’Π°ΠΊΠ° Ρ‡Π΅ Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…ΠΌΠ΅ ΠΏΡ€Π΅Π· всички Π΅Ρ‚Π°ΠΏΠΈ Π½Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° статичСн Π°Π½Π°Π»ΠΈΠ· Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ ваТността Π½Π° настройванСто Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° инструмСнти Π² CI, Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ място Π·Π° тяхното стартиранС Π΅ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ΡŠΡ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка статичният Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π΅ Π΅ съдник, ΠΊΠΎΠΉΡ‚ΠΎ ΠΊΠ°Π·Π²Π° някъдС Π΄Π°Π»Π΅Ρ‡ ΠΎΡ‚ вас, Ρ‡Π΅ ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π΅ Π΅ Π΄ΠΎΠ±ΡŠΡ€. Напротив, Ρ‚ΠΎΠ²Π° Π΅ асистСнт, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ ΠΊΠ°Π·Π²Π° Π΄Π°Π»ΠΈ стС ΡƒΠΌΠΎΡ€Π΅Π½ΠΈ ΠΈ Π²ΠΈ напомня, Π°ΠΊΠΎ стС Π·Π°Π±Ρ€Π°Π²ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ.

Вярно Π΅, Ρ‡Π΅ Π±Π΅Π· Ρ€Π΅Π΄ΠΎΠ²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° статичният Π°Π½Π°Π»ΠΈΠ· Π΅Π΄Π²Π° Π»ΠΈ Ρ‰Π΅ опрости Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. Π’ края Π½Π° ΠΊΡ€Π°ΠΈΡ‰Π°Ρ‚Π° основната ΠΌΡƒ ΠΏΠΎΠ»Π·Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сС ΠΊΡ€ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π² Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅Ρ‚ΠΎ Π½Π° слоТни ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΈ части ΠΎΡ‚ ΠΊΠΎΠ΄Π°, Π° Π² Ρ€Π°Π½Π½ΠΎΡ‚ΠΎ ΠΈΠΌ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅. Π‘ΡŠΠ³Π»Π°ΡΠ΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, слСд ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ са ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ Π·Π° тСстванС, Π΅ Π½Π΅ само нСприятно, Π½ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π΅ΠΌΠΊΠΎ. Бтатичният Π°Π½Π°Π»ΠΈΠ·, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ, Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° всяка промяна Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° вашия ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ ΠΈ ΠΎΡ‚Ρ‡ΠΈΡ‚Π° ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»Π½ΠΈ мСста, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠ΄Π°.

И Π°ΠΊΠΎ Π²ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ»Π΅Π³ΠΈ всС ΠΎΡ‰Π΅ Π½Π΅ стС сигурни Π΄Π°Π»ΠΈ си струва Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ Π²ΠΈ сСга Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ статията "ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° въвСТданС Π½Π° статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ PVS-Studio Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°". Π’ΠΎΠΉ адрСсира Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈΡ‚Π΅ опасСния Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, Ρ‡Π΅ статичният Π°Π½Π°Π»ΠΈΠ· Ρ‰Π΅ ΠΈΠΌ ΠΎΡ‚Π½Π΅ΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Ρ‚.Π½.

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ въвСдСниС към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅

Ако искатС Π΄Π° сподСлитС Ρ‚Π°Π·ΠΈ статия с англоговоряща аудитория, моля, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π·Π° ΠΏΡ€Π΅Π²ΠΎΠ΄: Максим ЗвягинцСв. Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ·: ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠΈ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€