Как Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π² наслСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±Π΅Π· Π΄Π° Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ°

Как Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π² наслСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±Π΅Π· Π΄Π° Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ°
ЛСсно Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄. Но ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ, особСно ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° голям стар ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, изисква умСния. Ако сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°, Π΄Π° Π·Π°Π±Π°Π²ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π΄Π° Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π° Π΅ΠΊΠΈΠΏΠ°. НСка ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΄Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠΌ към ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° статичСн Π°Π½Π°Π»ΠΈΠ· Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ CI/CD.

въвСдСниС

Наскоро Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΈ бСшС ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΎ ΠΎΡ‚ публикацията "ΠŸΡŠΡ€Π²ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ със статичСн Π°Π½Π°Π»ΠΈΠ·, Π±Π΅Π· Π΄Π° ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ°". ΠžΡ‚ Π΅Π΄Π½Π° страна, Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±Ρ€Π° статия, с която си струва Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅. ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, струва ΠΌΠΈ сС, Ρ‡Π΅ всС ΠΎΡ‰Π΅ Π½Π΅ Π΄Π°Π²Π° пълСн ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΊΠ°ΠΊ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΎ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ статичСн Π°Π½Π°Π»ΠΈΠ· Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° наслСдСн ΠΊΠΎΠ΄.Π’ статията сС ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅Ρ‚Π΅ тСхничСски дълг ΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ само Π²ΡŠΡ€Ρ…Ρƒ Π½ΠΎΠ² ΠΊΠΎΠ΄, Π½ΠΎ няма ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ с Ρ‚ΠΎΠ·ΠΈ тСхничСски дълг ΠΏΠΎ-късно.

ΠΠ°ΡˆΠΈΡΡ‚ Π΅ΠΊΠΈΠΏ Π½Π° PVS-Studio ΠΏΡ€Π΅Π΄Π»Π°Π³Π° своСто Π²ΠΈΠΆΠ΄Π°Π½Π΅ ΠΏΠΎ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ°. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ възниква ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с внСдряванСто Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π½Π° ΠΏΡŠΡ€Π²ΠΎ място, ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π΅ΠΌ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΊΠ°ΠΊ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΎ постСпСнно Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ тСхничСския дълг.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ

ОбикновСно Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° стартиратС ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ [1]. МоТС Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ интСрСсни Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈ уязвимости Π² ΠΊΠΎΠ΄Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΡ€ΠΈ Π΄Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ, Π½ΠΎ слСд Ρ‚ΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ програмисти сС ΠΎΡ‚ΠΊΠ°Π·Π²Π°Ρ‚.

Всички статични Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π΄Π°Π²Π°Ρ‚ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ. Π’ΠΎΠ²Π° Π΅ характСристика Π½Π° мСтодологията Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° статичСн ΠΊΠΎΠ΄ ΠΈ Π½ΠΈΡ‰ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΠΎ Π²ΡŠΠΏΡ€ΠΎΡΠ°. Π’ общия случай Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π° ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ°Ρ‚Π° Π½Π° Райс [2]. АлгоритмитС Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ няма Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ [3]. Π”ΠΎΡ€ΠΈ Π°ΠΊΠΎ Ρ‡ΠΎΠ²Π΅ΠΊ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅ Π΄Π°Π»ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΈΠ»ΠΈ ΠΎΠ½Π·ΠΈ ΠΊΠΎΠ΄ Π΅ Π³Ρ€Π΅ΡˆΠ΅Π½, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅ трябва Π΄Π° ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° :).

Π€Π°Π»ΡˆΠΈΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π½Π΅ са ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π°ΠΊΠΎ статичният Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π²Π΅Ρ‡Π΅ Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½:

  • Π”Π΅Π·Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ нСподходящи Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°;
  • Някои нСумСстни диагностики са Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ;
  • Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° C ΠΈΠ»ΠΈ C++, Ρ‚ΠΎΠ³Π°Π²Π° сС ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Ρ‚ макроси, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ спСцифични конструкции, ΠΊΠΎΠΈΡ‚ΠΎ причиняват Π±Π΅Π·ΠΏΠΎΠ»Π΅Π·Π½ΠΈ прСдупрСТдСния Π΄Π° сС появяват Π½Π° всяко място, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ‚Π°ΠΊΠΈΠ²Π° макроси;
  • ΠœΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ са собствСни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ дСйствия, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° систСмнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π΅Π³ΠΎΠ² собствСн Π°Π½Π°Π»ΠΎΠ³ memcpy ΠΈΠ»ΠΈ ЀОРМАВ) [4];
  • Π€Π°Π»ΡˆΠΈΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ са спСциално Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ;
  • И Ρ‚Π°ΠΊΠ° Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ.

Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‡Π°ΠΊΠ²Π°ΠΌΠ΅ нисък Ρ„Π°Π»ΡˆΠΈΠ² ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 10-15% [5]. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, 9 ΠΎΡ‚ 10 прСдупрСТдСния Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Ρ‰Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ Ρ€Π΅Π°Π»Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ½Π΅ β€žΡΠΈΠ»Π½ΠΎ ΠΌΠΈΡ€ΠΈΡˆΠ΅Ρ‰ ΠΊΠΎΠ΄β€œ. Π‘ΡŠΠ³Π»Π°ΡΠ΅Ρ‚Π΅ сС, Ρ‚ΠΎΠ·ΠΈ сцСнарий Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ приятСн, Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ истински приятСл Π½Π° програмиста.

Как Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π² наслСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±Π΅Π· Π΄Π° Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ°
Π Π΅Π°Π»Π½ΠΎ ΠΏΡ€ΠΈ голям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Ρ‰Π΅ бъдС съвсСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Π°. ΠΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈΠ·Π΄Π°Π²Π° стотици ΠΈΠ»ΠΈ хиляди прСдупрСТдСния Π·Π° наслСдСн ΠΊΠΎΠ΄. НСвъзмоТно Π΅ Π±ΡŠΡ€Π·ΠΎ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ ΠΊΠΎΠΈ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ прСдупрСТдСния са умСстни ΠΈ ΠΊΠΎΠΈ Π½Π΅. Π˜Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ Π΅ Π΄Π° сСднСтС ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° сС справятС с всички Ρ‚Π΅Π·ΠΈ прСдупрСТдСния, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ основната Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ‚ΠΎΠ·ΠΈ случай Ρ‰Π΅ спрС Π·Π° Π΄Π½ΠΈ ΠΈΠ»ΠΈ сСдмици. ОбикновСно Π΅Π΄ΠΈΠ½ ΠΎΡ‚Π±ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° си ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Ρ‚Π°ΠΊΡŠΠ² сцСнарий. Π©Π΅ ΠΈΠΌΠ° ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ Π±Ρ€ΠΎΠΉ Ρ€Π°Π·Π»ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ развалят историята Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅. И Π±ΡŠΡ€Π·ΠΎΡ‚ΠΎ масово Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½ΠΎΠ²ΠΈ правописни ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ.

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

Π Π°Π·Π±ΠΈΡ€Π° сС, Π΄ΠΎΡ€ΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ си остават Π³Ρ€Π΅ΡˆΠΊΠΈ. А понякога Π΅Π΄Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° скриС истинска уязвимост. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ всичко ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΊΠ°Ρ€Π²Π°Ρ‚Π΅ Π΄Π½ΠΈ/сСдмици Π² справянС с Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΅Π΄Π²Π° сС проявяват, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΡŠΠΌΠ½ΠΈΡ‚Π΅Π»Π½Π° идСя.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡΡ‚ΠΈΡ‚Π΅ Π³Π»Π΅Π΄Π°Ρ‚, Π³Π»Π΅Π΄Π°Ρ‚, Π³Π»Π΅Π΄Π°Ρ‚ всички Ρ‚Π΅Π·ΠΈ прСдупрСТдСния Π·Π° стария Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΊΠΎΠ΄... И си мислят: ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ Π±Π΅Π· статичСн Π°Π½Π°Π»ΠΈΠ·. Π₯Π°ΠΉΠ΄Π΅ Π΄Π° напишСм Π½ΠΎΠ²Π° ΠΏΠΎΠ»Π΅Π·Π½Π° функционалност.

По свой Π½Π°Ρ‡ΠΈΠ½ Ρ‚Π΅ са ΠΏΡ€Π°Π²ΠΈ. Π’Π΅ смятат, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎ трябва ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π°Ρ‚ ΠΎΡ‚ всички Ρ‚Π΅Π·ΠΈ прСдупрСТдСния. Π‘Π°ΠΌΠΎ Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚Π΅ Ρ‰Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° кодовия Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Π½ΠΎΠ²ΠΈΡ‚Π΅ прСдупрСТдСния просто Ρ‰Π΅ сС удавят Π² старитС ΠΈ Π½ΠΈΠΊΠΎΠΉ няма Π΄Π° ΠΈΠΌ ΠΎΠ±ΡŠΡ€Π½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Π’ΠΎΠ²Π° Π΅ ΡΡŠΡ‰Π°Ρ‚Π° аналогия ΠΊΠ°Ρ‚ΠΎ с прСдупрСТдСнията Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°. НС Π½Π°ΠΏΡ€Π°Π·Π½ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Ρ‚ броят Π½Π° прСдупрСТдСнията Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π΄Π° останС 0. Ако ΠΈΠΌΠ° 1000 прСдупрСТдСния, Ρ‚ΠΎΠ³Π°Π²Π° ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° 1001, Π½ΠΈΠΊΠΎΠΉ няма Π΄Π° ΠΌΡƒ ΠΎΠ±ΡŠΡ€Π½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Π½Π΅ Π΅ ясно къдС Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΠΌ Ρ‚ΠΎΠ²Π° Π½Π°ΠΉ-Π½ΠΎΠ²ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.

Как Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π² наслСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±Π΅Π· Π΄Π° Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ°
Най-Π»ΠΎΡˆΠΎΡ‚ΠΎ Π² Ρ‚Π°Π·ΠΈ история Π΅, Π°ΠΊΠΎ някой ΠΎΡ‚Π³ΠΎΡ€Π΅ Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ статичСн Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΠ΄Π°. Π’ΠΎΠ²Π° само Ρ‰Π΅ Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π° Π΅ΠΊΠΈΠΏΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚ тяхна Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‰Π΅ ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Π±ΡŽΡ€ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‡Π½Π° слоТност, която само Ρ‰Π΅ ΠΏΡ€Π΅Ρ‡ΠΈ. Никой няма Π΄Π° Π³Π»Π΅Π΄Π° ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈΡ‚Π΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ цялата ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Ρ‰Π΅ бъдС само β€žΠ½Π° Ρ…Π°Ρ€Ρ‚ΠΈΡβ€œ. Π’Π΅Π·ΠΈ. Π€ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΡŠΡ‚ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ Π² процСса DevOps, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΠΎΡ‚ ΠΏΠΎΠ»Π·Π° Π·Π° Π½ΠΈΠΊΠΎΠ³ΠΎ. Π§ΡƒΡ…ΠΌΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΈ истории Π½Π° Ρ‰Π°Π½Π΄ΠΎΠ²Π΅ ΠΎΡ‚ участници Π² конфСрСнцията. Π’Π°ΠΊΠΎΠ²Π° прСТивяванС ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Π΅Π·ΡΡŠΡ€Ρ‡ΠΈ програмиститС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ инструмСнти Π·Π° статичСн Π°Π½Π°Π»ΠΈΠ· Π·Π° дълго Π²Ρ€Π΅ΠΌΠ΅, Π°ΠΊΠΎ Π½Π΅ ΠΈ Π·Π°Π²ΠΈΠ½Π°Π³ΠΈ.

ВнСдряванС ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° тСхничСски дълг

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ няма Π½ΠΈΡ‰ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ»ΠΈ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ във Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° статичСн Π°Π½Π°Π»ΠΈΠ· Π΄ΠΎΡ€ΠΈ Π² голям стар ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

CI / CD

ОсвСн Ρ‚ΠΎΠ²Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° станС част ΠΎΡ‚ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΈΡ процСс Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. НапримСр, дистрибуцията Π½Π° PVS-Studio ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π·Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΡ‚Ρ‡Π΅Ρ‚Π° във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅, ΠΈ извСстия Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са написали ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΈ сСкции ΠΎΡ‚ ΠΊΠΎΠ΄Π°. Π—Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС интСрСсуват ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ стартиранСто Π½Π° PVS-Studio ΠΎΡ‚ CI/CD систСми, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ със ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» докумСнтация ΠΈ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ статии:

Но Π½Π΅ΠΊΠ° сС Π²ΡŠΡ€Π½Π΅ΠΌ към Π²ΡŠΠΏΡ€ΠΎΡΠ° Π·Π° голям Π±Ρ€ΠΎΠΉ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π΅Ρ‚Π°ΠΏΠΈ ΠΎΡ‚ внСдряванСто Π½Π° инструмСнти Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΠ΄.

ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ тСхничСски дълг ΠΈ справянС с Π½ΠΎΠ²ΠΈ прСдупрСТдСния

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Ρ‚ΡŠΡ€Π³ΠΎΠ²ΡΠΊΠΈ статични Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π²ΠΈ позволяват Π΄Π° ΠΈΠ·ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ само Π½ΠΎΠ²ΠΈ прСдупрСТдСния, ΠΊΠΎΠΈΡ‚ΠΎ сС появяват Π² Π½ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠ΄. Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ, Π½ΠΎ ΡΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π΅ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π°. Π’ статичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° PVS-Studio Ρ‚Π°Π·ΠΈ функционалност Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½.

Π—Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π±ΡŠΡ€Π·ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ статичСн Π°Π½Π°Π»ΠΈΠ·, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌΠ΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° PVS-Studio Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° масово потисканС Π½Π° прСдупрСТдСния [6]. ΠžΠ±Ρ‰Π°Ρ‚Π° идСя Π΅ слСдната. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΡ‚ стартира Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ прСдупрСТдСния. Въй ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π΅ ΠΆΠΈΠ², Ρ€Π°Π·Π²ΠΈΠ²Π° сС ΠΈ ΠΏΠ΅Ρ‡Π΅Π»ΠΈ ΠΏΠ°Ρ€ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π°ΠΉ-вСроятно няма Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ прСдупрСТдСния Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°, ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‰ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΈ. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ Π²Π΅Ρ‡Π΅ са ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠΎ-скъпи ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈΠ»ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π°ΠΌΠΈΡ€Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС счита Π·Π° тСхничСски дълг, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π½Π΅ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π΄Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½Π° PVS-Studio Π΄Π° счита Ρ‚Π΅Π·ΠΈ прСдупрСТдСния Π·Π° нСумСстни засСга (Π·Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ тСхничСски дълг Π·Π° ΠΏΠΎ-късно) ΠΈ Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ няма Π΄Π° Π³ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°. ΠΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ създава спСциалСн Ρ„Π°ΠΉΠ», ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ записва информация Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ са интСрСсни. И сСга PVS-Studio Ρ‰Π΅ ΠΈΠ·Π΄Π°Π²Π° прСдупрСТдСния само Π·Π° Π½ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠ΄. ОсвСн Ρ‚ΠΎΠ²Π° всичко Ρ‚ΠΎΠ²Π° Π΅ изпълнСно Ρ…ΠΈΡ‚Ρ€ΠΎ. Ако Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сС Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡ€Π°Π·Π΅Π½ Ρ€Π΅Π΄ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° с изходния ΠΊΠΎΠ΄, Ρ‚ΠΎΠ³Π°Π²Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ€Π°Π·Π±ΠΈΡ€Π°, Ρ‡Π΅ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½ΠΈΡ‰ΠΎ Π½Π΅ сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΌΡŠΠ»Ρ‡ΠΈ. Π’ΠΎΠ·ΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Ρ‰ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС поставСн Π² систСма Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° вСрсиитС. Π€Π°ΠΉΠ»ΡŠΡ‚ Π΅ голям, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ няма смисъл Π΄Π° Π³ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ чСсто.

Π‘Π΅Π³Π° всички програмисти Ρ‰Π΅ Π²ΠΈΠΆΠ΄Π°Ρ‚ прСдупрСТдСния, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ само с Π½ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠ΄. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΊΠ°Π·Π²Π°, ΠΎΡ‚ слСдващия Π΄Π΅Π½. И ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ към тСхничСския дълг ΠΏΠΎ-късно ΠΈ постСпСнно Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΈ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

И Ρ‚Π°ΠΊΠ°, ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с внСдряванСто Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π² голям стар ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΅ Ρ€Π΅ΡˆΠ΅Π½. Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ с тСхничСския дълг.

ΠŸΠΎΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Най-простото ΠΈ СстСствСно Π½Π΅Ρ‰ΠΎ Π΅ Π΄Π° ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚Π΅ извСстно Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ масово потиснатитС прСдупрСТдСния Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ постСпСнно Π΄Π° сС справитС с тях. НякъдС трябва Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π°, някъдС трябва Π΄Π° ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅, Π·Π° Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Ρ‡Π΅ ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π΅ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½. ΠŸΡ€ΠΎΡΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

if (a = b)

ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ C++ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ сС ΠΎΠΏΠ»Π°ΠΊΠ²Π°Ρ‚ ΠΎΡ‚ Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ° голяма вСроятност Ρ‚Π΅ наистина Π΄Π° искат Π΄Π° ΠΏΠΈΡˆΠ°Ρ‚ (a == b). Но ΠΈΠΌΠ° нСгласно споразумСниС ΠΈ Ρ‚ΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС отбСлязва Π² докумСнтацията, Ρ‡Π΅ Π°ΠΊΠΎ ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ скоби, Ρ‚ΠΎΠ³Π°Π²Π° сС счита, Ρ‡Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡΡ‚ΡŠΡ‚ ΡƒΠΌΠΈΡˆΠ»Π΅Π½ΠΎ Π΅ написал Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄ ΠΈ няма Π½ΡƒΠΆΠ΄Π° Π΄Π° сС ΠΊΡŠΠ»Π½Π΅Ρ‚Π΅. НапримСр Π² докумСнтацията Π½Π° PVS-Studio Π·Π° диагностика V559 (CWE-481) ясно Π΅ написано, Ρ‡Π΅ слСдният Ρ€Π΅Π΄ Ρ‰Π΅ сС счита Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ ΠΈ бСзопасСн:

if ((a = b))

Π”Ρ€ΡƒΠ³ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π—Π°Π±Ρ€Π°Π²Π΅Π½ΠΎ Π»ΠΈ Π΅ Π² Ρ‚ΠΎΠ·ΠΈ C++ ΠΊΠΎΠ΄? ΠΏΠΎΡ‡ΠΈΠ²ΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅?

case A:
  foo();
case B:
  bar();
  break;

ΠΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° PVS-Studio Ρ‰Π΅ ΠΈΠ·Π΄Π°Π΄Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ‚ΡƒΠΊ V796 (CWE-484). Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°, Π² ΠΊΠΎΠΉΡ‚ΠΎ случай трябва Π΄Π° Π΄Π°Π΄Π΅Ρ‚Π΅ подсказка Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° [[ΠΏΡ€ΠΎΠΏΠ°Π΄Π°ΠΌ]] ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ __Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚__((ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π½Π΅)):

case A:
  foo();
  [[fallthrough]];
case B:
  bar();
  break;

МоТС Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°. Π”Π°, Ρ‚ΠΎΠ²Π° Π΅ вярно, Π½ΠΎ ΠΏΡ€Π°Π²ΠΈ Π΄Π²Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π½Π΅Ρ‰Π°. ΠŸΡŠΡ€Π²ΠΎ, ΠΎΡ‚Ρ‡Π΅Ρ‚ΡŠΡ‚ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° Ρ„Π°Π»ΡˆΠΈΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ. Π’Ρ‚ΠΎΡ€ΠΎ, ΠΊΠΎΠ΄ΡŠΡ‚ става ΠΏΠΎ-Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ Π·Π° Ρ…ΠΎΡ€Π°Ρ‚Π°, участващи Π² ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° ΠΌΡƒ. И Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ! Π‘Π°ΠΌΠΎ Π·Π° Ρ‚ΠΎΠ²Π° си струва Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ ΠΌΠ°Π»ΠΊΠΈ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΊΠΎΠ΄Π° ΠΏΠΎ-ясСн ΠΈ лСсСн Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°. Въй ΠΊΠ°Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π° Π΄Π°Π»ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ β€žΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅β€œ ΠΈΠ»ΠΈ Π½Π΅, Ρ‚ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Ρ‰Π΅ бъдС нСясно Π·Π° ΠΊΠΎΠ»Π΅Π³ΠΈΡ‚Π΅ програмисти.

Π’ допълнСниС към ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π΄Π° потискатС ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈΡ‚Π΅ прСдупрСТдСния Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. Някои нСумСстни диагностики ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ. НапримСр някой смята, Ρ‡Π΅ прСдупрСТдСнията са бСзсмислСни V550 относно сравняванСто Π½Π° float/double стойности. И някои Π³ΠΈ класифицират ΠΊΠ°Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΈ ΠΈ заслуТаващи ΠΈΠ·ΡƒΡ‡Π°Π²Π°Π½Π΅ [7]. Кои прСдупрСТдСния сС считат Π·Π° умСстни ΠΈ ΠΊΠΎΠΈ Π½Π΅, зависи ΠΎΡ‚ Π΅ΠΊΠΈΠΏΠ° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

Има ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° потисканС Π½Π° Ρ„Π°Π»ΡˆΠΈΠ²ΠΈΡ‚Π΅ сигнали. НапримСр ΠΌΠ°ΠΊΡ€ΠΎ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ бСшС спомСнато ΠΏΠΎ-Ρ€Π°Π½ΠΎ. Всичко Ρ‚ΠΎΠ²Π° Π΅ описано ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² докумСнтацията. Най-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅, Ρ‡Π΅ Π°ΠΊΠΎ постСпСнно ΠΈ систСматично ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ към Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, няма Π½ΠΈΡ‰ΠΎ лошо Π² тях. По-голямата част ΠΎΡ‚ бСзинтСрСснитС прСдупрСТдСния ΠΈΠ·Ρ‡Π΅Π·Π²Π°Ρ‚ слСд ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ ΠΈ остават само мСста, ΠΊΠΎΠΈΡ‚ΠΎ наистина изискват Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅ ΠΈ някои ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°.

ОсвСн Ρ‚ΠΎΠ²Π° Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠΌΠ°Π³Π°ΠΌΠ΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ Π΄Π° настроят PVS-Studio, Π°ΠΊΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ затруднСния. ОсвСн Ρ‚ΠΎΠ²Π° имашС случаи, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½ΠΈΠ΅ сами Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Ρ…ΠΌΠ΅ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ прСдупрСТдСния ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ…ΠΌΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈ [8]. Π—Π° всСки случай Ρ€Π΅ΡˆΠΈΡ… Π΄Π° спомСна, Ρ‡Π΅ Π΅ възмоТСн ΠΈ Ρ‚ΠΎΠ·ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ :).

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π° трСсчотка

Има Π΄Ρ€ΡƒΠ³ интСрСсСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π° постСпСнно подобряванС Π½Π° качСството Π½Π° ΠΊΠΎΠ΄Π° Ρ‡Ρ€Π΅Π· Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° статичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π˜Π·Π²ΠΎΠ΄ΡŠΡ‚ Π΅, Ρ‡Π΅ броят Π½Π° прСдупрСТдСнията ΠΌΠΎΠΆΠ΅ само Π΄Π° намалява.

Как Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π² наслСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±Π΅Π· Π΄Π° Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ°

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

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

Π’Π°Π·ΠΈ мСтодология Π΅ описана ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎ интСрСсна статия Π½Π° Иван ΠŸΠΎΠ½ΠΎΠΌΠ°Ρ€Π΅Π² "Π’Π½Π΅Π΄Ρ€Π΅Ρ‚Π΅ статичСн Π°Π½Π°Π»ΠΈΠ· Π² процСса, вмСсто Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ с Π½Π΅Π³ΠΎβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ Π½Π° всСки, ΠΊΠΎΠΉΡ‚ΠΎ сС интСрСсува ΠΎΡ‚ подобряванС Π½Π° качСството Π½Π° ΠΊΠΎΠ΄Π°.

ΠΠ²Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° статията ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° Π΄ΠΎΠΊΠ»Π°Π΄ ΠΏΠΎ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ°: "ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ статичСн Π°Π½Π°Π»ΠΈΠ·".

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Има ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ съмнСния относно Ρ‚ΠΎΠ²Π° Π΄Π°Π»ΠΈ статичният Π°Π½Π°Π»ΠΈΠ· наистина ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠžΠΏΠΈΡ‚Π°Ρ… сС Π΄Π° разсСя ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ съмнСния Π² публикацията β€žΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° въвСТданС Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½Π° статичСн ΠΊΠΎΠ΄ PVS-Studio Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°β€œ [9].

Благодаря Π²ΠΈ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ заповядайтС ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ ΠΈ ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° PVS-Studio.

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ

  1. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ². Как ΠΌΠΎΠ³Π° Π±ΡŠΡ€Π·ΠΎ Π΄Π° видя интСрСсни прСдупрСТдСния, ΠΊΠΎΠΈΡ‚ΠΎ PVS-Studio Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π·Π° C ΠΈ C++ ΠΊΠΎΠ΄?
  2. Wikipedia. Π’Π΅ΠΎΡ€Π΅ΠΌΠ° Π½Π° Райс.
  3. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ², Виктория Π₯Π°Π½ΠΈΠ΅Π²Π°. ИзползванС Π½Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ статичСн Π°Π½Π°Π»ΠΈΠ· Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°.
  4. PVS-студио. ДокумСнтация. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ диагностични настройки.
  5. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ². Π₯арактСристики Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° PVS-Studio, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° EFL Core Libraries, 10-15% Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ.
  6. PVS-студио. ДокумСнтация. Масово потисканС Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.
  7. Иван ΠΠ½Π΄Ρ€ΡΡˆΠΈΠ½. Π—Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ тСствахмС статичСн Π°Π½Π°Π»ΠΈΠ· Π½Π° нашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅Π½ симулатор Π½Π° Ρ€Π΅Π½Ρ‚Π³Π΅Π½ΠΎΠ²Π° Сндоваскуларна хирургия.
  8. ПавСл Π•Ρ€Π΅ΠΌΠ΅Π΅Π², Бвятослав Размислов. Как Π΅ΠΊΠΈΠΏΡŠΡ‚ Π½Π° PVS-Studio ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ ΠΊΠΎΠ΄Π° Π½Π° Unreal Engine.
  9. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ². ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° въвСТданС Π½Π° статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ PVS-Studio Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

Как Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π² наслСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±Π΅Π· Π΄Π° Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π΅ΠΊΠΈΠΏΠ°

Ако искатС Π΄Π° сподСлитС Ρ‚Π°Π·ΠΈ статия с Π°Π½Π³Π»ΠΎΠ΅Π·ΠΈΡ‡Π½Π° аудитория, моля, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π·Π° ΠΏΡ€Π΅Π²ΠΎΠ΄: АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ². Как Π΄Π° въвСдСм Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статичСн ΠΊΠΎΠ΄ Π² наслСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΄Π° Π½Π΅ ΠΎΠ±Π΅Π·ΡΡŠΡ€Ρ‡Π°Π²Π°ΠΌΠ΅ Π΅ΠΊΠΈΠΏΠ°.

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

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