Bagaimana untuk melaksanakan penganalisis kod statik dalam projek warisan tanpa melemahkan semangat pasukan

Bagaimana untuk melaksanakan penganalisis kod statik dalam projek warisan tanpa melemahkan semangat pasukan
ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Π»Π΅Π³ΠΊΠΎ. А Π²ΠΎΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, особСнно Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ большого старого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, потрСбуСтся ΡƒΠΌΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ статичСского Π°Π½Π°Π»ΠΈΠ·Π° Π² процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ CI/CD.

Pengenalan

НСдавно ΠΌΠΎΡ‘ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ»Π° публикация "Getting Started With Static Analysis Without Overwhelming the Team". Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, это Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стоит ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ каТСтся, Π² Π½Π΅ΠΉ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠ·Π²ΡƒΡ‡Π°Π»ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΊΠ°ΠΊ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ статичСский Π°Π½Π°Π»ΠΈΠ· Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с большим количСством legacy ΠΊΠΎΠ΄Π°. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ говорится, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ с тСхничСским Π΄ΠΎΠ»Π³ΠΎΠΌ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π½Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с этим тСхничСским Π΄ΠΎΠ»Π³ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΌ.

Наша ΠΊΠΎΠΌΠ°Π½Π΄Π° PVS-Studio ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ свой взгляд Π½Π° эту Ρ‚Π΅ΠΌΡƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° внСдрСния статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ ΠΊΠ°ΠΊ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ постСпСнно ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ тСхничСский Π΄ΠΎΠ»Π³.

Isu

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, нСслоТно [1]. МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ интСрСсныС ошибки ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ уязвимости. МоТно Π΄Π°ΠΆΠ΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Π½ΠΎ Π²ΠΎΡ‚ дальшС Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… программистов ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ€ΡƒΠΊΠΈ.

ВсС статичСскиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹Π΄Π°ΡŽΡ‚ Π»ΠΎΠΆΠ½Ρ‹Π΅ срабатывания. Π’Π°ΠΊΠΎΠ²Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°, ΠΈ с Π½Π΅ΠΉ Π½ΠΈΡ‡Π΅Π³ΠΎ нСльзя ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС это Π½Π΅Ρ€Π΅ΡˆΠ°Π΅ΠΌΠ°Ρ Π·Π°Π΄Π°Ρ‡Π°, Ρ‡Ρ‚ΠΎ подтвСрТдаСтся Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠΎΠΉ Райса [2]. НС ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ машинного обучСния [3]. Если Π΄Π°ΠΆΠ΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π½Π΅ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΎΡˆΠΈΠ±ΠΎΡ‡Π΅Π½ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π½Π΅ стоит ΠΆΠ΄Π°Ρ‚ΡŒ этого ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ :).

Π›ΠΎΠΆΠ½Ρ‹Π΅ срабатывания Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ссли статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΡƒΠΆΠ΅ настроСн:

  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»;
  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ диагностики;
  • Если ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ C ΠΈΠ»ΠΈ C++, Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ макросы, содСрТащиС спСцифичСскиС конструкции, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ бСсполСзныС ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ мСстС, Π³Π΄Π΅ Ρ‚Π°ΠΊΠΈΠ΅ макросы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ;
  • Π Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ дСйствия Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ систСмным функциям (свой Π°Π½Π°Π»ΠΎΠ³ memcpy atau Printf) [4];
  • Π’ΠΎΡ‡Π΅Ρ‡Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π»ΠΎΠΆΠ½Ρ‹Π΅ срабатывания;
  • Dan sebagainya.

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ порядка 10-15% [5]. Π”Ρ€ΡƒΠ³ΠΈΠΌ словами, 9 ΠΈΠ· 10 ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° Β«ΠΊΠΎΠ΄ с ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΏΠ°Ρ…ΠΎΠΌΒ». Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Ρ‚Π°ΠΊΠΎΠΉ сцСнарий ΠΊΡ€Π°ΠΉΠ½Π΅ приятСн, ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ являСтся настоящим Π΄Ρ€ΡƒΠ³ΠΎΠΌ программиста.

Bagaimana untuk melaksanakan penganalisis kod statik dalam projek warisan tanpa melemahkan semangat pasukan
Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² большом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ совсСм иная. Анализатор Π²Ρ‹Π΄Π°Ρ‘Ρ‚ сотни ΠΈΠ»ΠΈ тысячи ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π° legacy ΠΊΠΎΠ΄. Π§Ρ‚ΠΎ ΠΈΠ· этих ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΏΠΎ Π΄Π΅Π»Ρƒ, Π° Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚, быстро ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π‘Π΅ΡΡ‚ΡŒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ со всСми этими прСдупрСТдСниями Π½Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ основная Ρ€Π°Π±ΠΎΡ‚Π° Π² этом случаС остановится Π½Π° Π΄Π½ΠΈ ΠΈΠ»ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС Ρ‚Π°ΠΊΠΎΠΉ сцСнарий. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство diff-ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ портят ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. А быстрая массовая ΠΏΡ€Π°Π²ΠΊΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ количСства Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π²Ρ‹Π»ΡŒΠ΅Ρ‚ΡΡ Π² Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΈ ошибки.

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

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ошибки всё Ρ€Π°Π²Π½ΠΎ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ошибками. А ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π° ошибкой ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒΡΡ настоящая ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ. Однако, Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ всё ΠΈ днями/нСдСлями Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π΄Π΅Ρ„Π΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слабо ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ сСбя, выглядит ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ смотрят, смотрят, смотрят Π½Π° всС эти прСдупрСТдСния Π½Π° старый Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ код… И Π΄ΡƒΠΌΠ°ΡŽΡ‚: обойдёмся Π±Π΅Π· статичСского Π°Π½Π°Π»ΠΈΠ·Π°. ΠŸΠΎΠΉΠ΄Ρ‘ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ.

По-своСму, ΠΎΠ½ΠΈ ΠΏΡ€Π°Π²Ρ‹. Они ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ для Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ всСх этих ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ смогут ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΎΡ‚ рСгулярного использования Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Π½ΠΎΠ²Ρ‹Π΅ прСдупрСТдСния Π±ΡƒΠ΄ΡƒΡ‚ просто Ρ‚ΠΎΠ½ΡƒΡ‚ΡŒ Π² старых, ΠΈ Π½Π° Π½ΠΈΡ… Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Π—Π΄Π΅ΡΡŒ Ρ‚Π° ΠΆΠ΅ аналогия, Ρ‡Ρ‚ΠΎ ΠΈ с прСдупрСТдСниями компилятора. НСспроста Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ количСство ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ компилятора Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 0. Если ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ 1000, Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… станСт 1001, Π½Π° это Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π΄Π° ΠΈ Π½Π΅ понятно, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ это самоС Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.

Bagaimana untuk melaksanakan penganalisis kod statik dalam projek warisan tanpa melemahkan semangat pasukan
Π‘Π°ΠΌΠΎΠ΅ Ρ…ΡƒΠ΄ΡˆΠ΅Π΅ Π² этой истории, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ свСрху Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ заставит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ с ΠΈΡ… Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния появится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π±ΡŽΡ€ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, которая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚. ΠžΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΈ всё использованиС Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β«Π½Π° Π±ΡƒΠΌΠ°Π³Π΅Β». Π’.Π΅. Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ· встроСн Π² DevOps процСсс, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΎΡ‚ этого Π½ΠΈΠΊΠΎΠΌΡƒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·Ρ‹ Π½Π΅Ρ‚. ΠœΡ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ истории ΠΏΡ€ΠΈ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΈ Π½Π° стСндах ΠΎΡ‚ посСтитСлСй ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π΄ΠΎΠ»Π³ΠΎ, Ссли Π½Π΅ Π½Π° всСгда, ΠΎΡ‚Π±ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Ρƒ программистов ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с инструмСнтами статичСского Π°Π½Π°Π»ΠΈΠ·Π°.

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΈ устранСниС тСхничСского Π΄ΠΎΠ»Π³Π°

На самом Π΄Π΅Π»Π΅, Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного ΠΈ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π²ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ статичСского Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°ΠΆΠ΅ Π² большой старый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

CI / CD

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

Но вСрнСмся ΠΊ вопросу большого количСства Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… этапах внСдрСния инструмСнтов Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°.

Ѐиксация ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ тСхничСского Π΄ΠΎΠ»Π³Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π½ΠΎΠ²Ρ‹ΠΌΠΈ прСдупрСТдСниями

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ коммСрчСскиС статичСскиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²Ρ‹Π΅ прСдупрСТдСния, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° различаСтся, Π½ΠΎ ΡΡƒΡ‚ΡŒ ΠΎΠ΄Π½Π°. Π’ статичСском Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ PVS-Studio эта Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ быстро Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский Π°Π½Π°Π»ΠΈΠ·, ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ PVS-Studio Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ массового подавлСния ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ [6]. ΠžΠ±Ρ‰Π°Ρ идСя Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ запустил Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» мноТСство ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. Π Π°Π· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚, ΠΆΠΈΠ², развиваСтся ΠΈ приносит дСньги, Ρ‚ΠΎ, скорСС всСго, Π² ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° критичСскиС Π΄Π΅Ρ„Π΅ΠΊΡ‚Ρ‹. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, критичСскиС Π±Π°Π³ΠΈ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΡƒΠΆΠ΅ ΠΏΠΎΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΎΡ€ΠΎΠ³ΠΈΠΌΠΈ способами ΠΈΠ»ΠΈ благодаря Ρ„ΠΈΠ΄Π±Π΅ΠΊΡƒ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². БоотвСтствСнно, всё, Ρ‡Ρ‚ΠΎ сСйчас Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ тСхничСским Π΄ΠΎΠ»Π³ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ сразу.

МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ PVS-Studio ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эти прСдупрСТдСния ΠΏΠΎΠΊΠ° Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ тСхничСский Π΄ΠΎΠ»Π³ Π½Π° ΠΏΠΎΡ‚ΠΎΠΌ), ΠΈ ΠΎΠ½ большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ. Анализатор создаёт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π³Π΄Π΅ сохраняСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠΊΠ° нСинтСрСсных ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ PVS-Studio Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ прСдупрСТдСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, всё это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡƒΠΌΠ½ΠΎ. Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π° с исходным ΠΊΠΎΠ΄ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° пустая строка, Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ сути, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнилось, ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΠ»Ρ‡Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Π² систСму контроля вСрсий. Π€Π°ΠΉΠ» большой, Π½ΠΎ это Π½Π΅ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ часто Π΅Π³ΠΎ Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ смысла Π½Π΅Ρ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС программисты Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ прСдупрСТдСния, относящиСся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ называСтся, со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ дня. А ΠΊ тСхничСскому Π΄ΠΎΠ»Π³Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, ΠΈ постСпСнно ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€.

Π˜Ρ‚Π°ΠΊ, пСрвая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π² большой старый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π΅ΡˆΠ΅Π½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с тСхничСским Π΄ΠΎΠ»Π³ΠΎΠΌ.

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибок ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³

Π‘Π°ΠΌΠΎΠ΅ простоС ΠΈ СстСствСнноС β€” это Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π° Ρ€Π°Π·Π±ΠΎΡ€ массово ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ постСпСнно Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌΠΈ. Π“Π΄Π΅-Ρ‚ΠΎ слСдуСт ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅-Ρ‚ΠΎ провСсти Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΌ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

if (a = b)

На ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ругаСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π‘++ компиляторов ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ высока Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ (a == b). Но сущСствуСт нСгласноС соглашСниС, ΠΈ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Ссли стоят Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ скобки, Ρ‚ΠΎ считаСтся, Ρ‡Ρ‚ΠΎ программист ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ написал Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΈ Ρ€ΡƒΠ³Π°Ρ‚ΡŒΡΡ Π½Π΅ Π½Π°Π΄ΠΎ. НапримСр, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PVS-Studio ΠΊ диагностикС V559 (CWE-481) явно написано, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строчка Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈ бСзопасной:

if ((a = b))

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π—Π°Π±Ρ‹Ρ‚ Π»ΠΈ Π² этом C++ ΠΊΠΎΠ΄Π΅ memecahkan atau tidak?

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

Анализатор PVS-Studio выдаст здСсь ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ V796 (CWE-484). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π½Π΅ ошибка, ΠΈ Ρ‚ΠΎΠ³Π΄Π° слСдуСт Π΄Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ подсказку, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ [[fallthrough]] atau sebagai contoh __attribute__((fallthrough)):

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

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ измСнСния ΠΊΠΎΠ΄Π° Π½Π΅ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ошибки. Π”Π°, это Ρ‚Π°ΠΊ, Π½ΠΎ выполняСтся Π΄Π²Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… дСйствия. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΡ‚Ρ‡Ρ‘Ρ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° избавляСтся ΠΎΡ‚ Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠΎΠ΄ становится Π±ΠΎΠ»Π΅Π΅ понятным для людСй, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ…ΡΡ Π΅Π³ΠΎ сопровоТдСниСм. И это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ! Π Π°Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ этого ΡƒΠΆΠ΅ стоит ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΌΠ΅Π»ΠΊΠΈΠΉ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ стал понятнСй ΠΈ Π»Π΅Π³Ρ‡Π΅ Π² сопровоТдСнии. Π Π°Π· Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ нСпонятно, Π½ΡƒΠΆΠ΅Π½ Β«breakΒ» ΠΈΠ»ΠΈ Π½Π΅Ρ‚, это Π±ΡƒΠ΄Π΅Ρ‚ нСпонятно ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ-программистам.

Помимо исправлСния ошибок ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎ ΠΏΠΎΠ΄Π°Π²Π»ΡΡ‚ΡŒ явно Π»ΠΎΠΆΠ½Ρ‹Π΅ прСдупрСТдСния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. КакиС-Ρ‚ΠΎ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ диагностики ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ. НапримСр, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ считаСт бСссмыслСнными прСдупрСТдСния V550 ΠΎ сравнСнии Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° float/double. А ΠΊΡ‚ΠΎ-Ρ‚ΠΎ относит ΠΈΡ… ΠΊ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ изучСния [7]. КакиС прСдупрСТдСния ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π° ΠΊΠ°ΠΊΠΈΠΌ Π½Π΅Ρ‚, Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы подавлСния Π»ΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. НапримСр, Ρ€Π°Π½Π΅Π΅ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»Π°ΡΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° макросов. Всё это ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ описано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли постСпСнно ΠΈ систСматичСски ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π»ΠΎΠΆΠ½Ρ‹ΠΌΠΈ срабатываниями, Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π² Π½ΠΈΡ… Π½Π΅Ρ‚. ΠŸΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ нСинтСрСсных ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ исчСзаСт послС настройки, ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мСста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅.

Π’Π°ΠΊΠΆΠ΅, ΠΌΡ‹ всСгда ΠΏΠΎΠΌΠΎΠ³Π°Π΅ΠΌ нашим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ PVS-Studio, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ слоТности. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π»ΠΈ случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ сами устраняли Π»ΠΎΠΆΠ½Ρ‹Π΅ прСдупрСТдСния ΠΈ исправляли ошибки [8]. На всякий случай Ρ€Π΅ΡˆΠΈΠ» ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ сотрудничСства :).

ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ…Ρ€Π°ΠΏΠΎΠ²ΠΈΠΊΠ°

Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрСсный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ постСпСнно ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ качСство ΠΊΠΎΠ΄Π°, устраняя ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. Π‘ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ количСство ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ.

Bagaimana untuk melaksanakan penganalisis kod statik dalam projek warisan tanpa melemahkan semangat pasukan

ЀиксируСтся количСство ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Quality gate настраиваСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство срабатываний. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запускаСтся процСсс постСпСнного ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства срабатываний Π·Π° счёт настройки Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΏΡ€Π°Π²ΠΊΠΈ ошибок.

Π”Π°ΠΆΠ΅ Ссли Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ…ΠΈΡ‚Ρ€ΠΈΡ‚ΡŒ ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ quality gate Π½Π΅ благодаря ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π² Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π° Π·Π° счёт ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ старого стороннСго ΠΊΠΎΠ΄Π°, это Π½Π΅ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ. Всё Ρ€Π°Π²Π½ΠΎ Ρ…Ρ€Π°ΠΏΠΎΠ²ΠΈΠΊ проворачиваСтся Π² ΠΎΠ΄Π½Ρƒ сторону, ΠΈ постСпСнно количСство Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ. Π”Π°ΠΆΠ΅ Ссли Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π½Π΅ хочСтся ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свои собствСнныС Π½ΠΎΠ²Ρ‹Π΅ Π΄Π΅Ρ„Π΅ΠΊΡ‚Ρ‹, Π΅ΠΌΡƒ всё Ρ€Π°Π²Π½ΠΎ придётся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π² сосСднСм ΠΊΠΎΠ΄Π΅. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π»Π΅Π³ΠΊΠΈΠ΅ способы ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΈ наступаСт ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ настоящиС ошибки.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ эта мСтодология описана Π² ΠΎΡ‡Π΅Π½ΡŒ интСрСсной ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ивана ΠŸΠΎΠ½ΠΎΠΌΠ°Ρ€Π΅Π²Π° "Laksanakan analisis statik ke dalam proses, bukannya mencari pepijat dengannya", с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ интСрСсуСтся вопросами ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ качСства ΠΊΠΎΠ΄Π°.

Π£ Π°Π²Ρ‚ΠΎΡ€Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ Π΅ΡΡ‚ΡŒ ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° эту Ρ‚Π΅ΠΌΡƒ: "НСпрСрывный статичСский Π°Π½Π°Π»ΠΈΠ·".

Kesimpulan

НадСюсь, послС этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½Π΅Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ инструмСнты статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ захотят Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΈΡ… Π² процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если Ρƒ вас ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ вопросы, ΠΌΡ‹ всСгда Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ нашСго статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° PVS-Studio ΠΈ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с Π΅Π³ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ сомнСния, смоТСт Π»ΠΈ статичСский Π°Π½Π°Π»ΠΈΠ· Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½. Π― постарался Ρ€Π°Π·Π²Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‚Π°ΠΊΠΈΡ… сомнСний Π² ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Β«ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° PVS-StudioΒ» [9].

Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚Π΅ memuat turun ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ PVS-Studio.

Pautan tambahan

  1. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ². Как быстро ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ интСрСсныС прСдупрСТдСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ PVS-Studio для C ΠΈ C++ ΠΊΠΎΠ΄Π°?
  2. Wikipedia. Π’Π΅ΠΎΡ€Π΅ΠΌΠ° Райса.
  3. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ², Виктория Π₯Π°Π½ΠΈΠ΅Π²Π°. ИспользованиС машинного обучСния Π² статичСском Π°Π½Π°Π»ΠΈΠ·Π΅ исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.
  4. PVS-Studio. ДокумСнтация. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ настройка диагностик.
  5. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ². Π₯арактСристики Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° PVS-Studio Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ EFL Core Libraries, 10-15% Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний.
  6. PVS-Studio. ДокумСнтация. МассовоС ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ сообщСний Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.
  7. Иван ΠΠ½Π΄Ρ€ΡΡˆΠΈΠ½. О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ статичСский Π°Π½Π°Π»ΠΈΠ· Π½Π° своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ симулятора рСнтгСнэндоваскулярной Ρ…ΠΈΡ€ΡƒΡ€Π³ΠΈΠΈ.
  8. ПавСл Π•Ρ€Π΅ΠΌΠ΅Π΅Π², Бвятослав Размыслов. Как ΠΊΠΎΠΌΠ°Π½Π΄Π° PVS-Studio ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»Π° ΠΊΠΎΠ΄ Unreal Engine.
  9. АндрСй ΠšΠ°Ρ€ΠΏΠΎΠ². Sebab untuk memperkenalkan penganalisis kod statik PVS-Studio ke dalam proses pembangunan.

Bagaimana untuk melaksanakan penganalisis kod statik dalam projek warisan tanpa melemahkan semangat pasukan

Jika anda ingin berkongsi artikel ini dengan khalayak berbahasa Inggeris, sila gunakan pautan terjemahan: Andrey Karpov. How to introduce a static code analyzer in a legacy project and not to discourage the team.

Sumber: www.habr.com

Tambah komen