Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π΄ΠΎ интСграция

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

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

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

Но Ρ‚ΠΎΠ²Π° Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°. А Π°ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π΅ написал Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π·Π°Π±Ρ€Π°Π²ΠΈΠ» някаква особСност Π½Π° Π΅Π·ΠΈΠΊΠ°? Или Π΄ΠΎΡ€ΠΈ Π΅ допуснал Π² ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅? К соТалСнию, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ случаи ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ‹Π΄Π΅Π½Π½Ρ‹ ΠΈ львиная Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ тратится Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ спСцифично Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ, Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈΠ»ΠΈ undefined behavior.

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

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

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

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

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

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

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

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

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

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

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π΄ΠΎ интСграция
Наистина, 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) трябва Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ слСднитС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

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).

Π”ΠΎΠ±Ρ€Π΅, Π²ΠΈΠ΅ настроихтС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‰ΠΈΡ ΡΡŠΡ€Π²ΡŠΡ€. Π‘Π΅Π³Π°, Π°ΠΊΠΎ някой Π΅ ΠΊΠ°Ρ‡ΠΈΠ» Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ ΠΊΠΎΠ΄, Π΅Ρ‚Π°ΠΏΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‰Π΅ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ ΠΈ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π° провСряватС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ слСд сливанСто Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅Ρ‚Π΅, Π° ΠΏΡ€Π΅Π΄ΠΈ Π½Π΅Π³ΠΎ, Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° 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, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ° плъгин Π·Π° интСграция Π² SonarQube.

2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π½Π° ΠΌΠ°ΡˆΠΈΠ½ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅

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

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

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ трябва Π΄Π° инсталиратС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ плъгини, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Visual Studio, IDEA, Rider ΠΈ Ρ‚.Π½.

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

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

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

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

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

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

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

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

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

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

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

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· – ΠΎΡ‚ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π΄ΠΎ интСграция

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster