ИздаванС Π½Π° cppcheck 2.6, статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ C++ ΠΈ C

ИзлСзС Π½ΠΎΠ²Π° вСрсия Π½Π° статичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ cppcheck 2.6, ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ класовС Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ C ΠΈ C++, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° нСстандартСн синтаксис, Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ систСми. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Ρ сС колСкция ΠΎΡ‚ плъгини, Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ Π΅ осигурСна интСграцията Π½Π° cppcheck с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция ΠΈ тСстванС, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° със стила Π½Π° оформянС. Π—Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡ‚ΠΎ собствСн парсСр, Ρ‚Π°ΠΊΠ° ΠΈ външСн парсСр ΠΎΡ‚ Clang. Π’ ΡΡŠΡΡ‚Π°Π²Π° Π½Π° инструмСнта Π²Π»ΠΈΠ·Π° ΠΈ скрипт donate-cpu.py Π·Π° прСдоставянС Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ рСсурси Π·Π° сподСлСно провСряванС Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Debian. Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ тСкстовС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС разпространяват ΠΏΠΎΠ΄ лицСнзия GPLv3.

Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° cppcheck Π΅ фокусирано Π²ΡŠΡ€Ρ…Ρƒ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° конструкции, ΠΊΠΎΠΈΡ‚ΠΎ прСдставляват риск Π·Π° сигурността. Π¦Π΅Π»Ρ‚Π° Π΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° сС минимизят Ρ„Π°Π»ΡˆΠΈΠ²ΠΈΡ‚Π΅ сработвания. Π‘Ρ€Π΅Π΄ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ са: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ към Π½Π΅ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, дСлСния Π½Π° Π½ΡƒΠ»Π°, Ρ†Π΅Π»ΠΈ числови ΠΏΡ€Π΅ΠΏΡŠΠ»Π½Π΅Π½ΠΈΡ, Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±ΠΈΡ‚ΠΎΠ²ΠΎ измСстванС, Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΈ прСобразувания, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° STL, Ρ€Π°Π·ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ слСд дСйствитСлно ΠΎΠ±Ρ€ΡŠΡ‰Π΅Π½ΠΈΠ΅ към Π±ΡƒΡ„Π΅Ρ€Π°, ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ извън ΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€ΠΈΡ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.

Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия:

  • Π’ ядрото Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ слСднитС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:
    • липса Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return Π² тялото Π½Π° функция;
    • записванС Π½Π° прСсичащи сС Π΄Π°Π½Π½ΠΈ, опрСдСлянС Π½Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅;
    • сравняваната стойност Π΅ извън прСдставянСто Π½Π° стойноститС Π½Π° Ρ‚ΠΈΠΏΠ°;
    • оптимизация Π½Π° ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π·Π° return std::move(local);
    • Ρ„Π°ΠΉΠ»ΡŠΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ Π·Π° запис Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ (stream);
  • Π·Π° Unix ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° диагностични ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²Π΅;
  • Π΄ΠΎΠ±Π°Π²Π΅Π½ Π΅ символСн Π°Π½Π°Π»ΠΈΠ· Π·Π° ValueFlow. Използва сС проста Π΄Π΅Π»Ρ‚Π° ΠΏΡ€ΠΈ изчисляванСто Π½Π° Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π΅ нСизвСстни ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ;
  • ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° списъка с Ρ‚ΠΎΠΊΠ΅Π½ΠΈ "define", ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° отговарят Π½Π° #include;
  • БиблиотСчният Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ , ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ free, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Ρ‚Π°ΠΊΠΈΠ²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΊΠ°Ρ‚ΠΎ std::size, std::empty, std::begin, std::end ΠΈ Ρ‚.Π½. ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡƒΠΊΠ°Π·Π²Π°Ρ‚ yeld ΠΈΠ»ΠΈ action Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅;
  • БиблиотСчният Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ Π·Π° ΡƒΠΌΠ½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π½ΠΈΠ΅ (unique ownership). Π‘Π΅Π³Π° сС ΠΈΠ·Π΄Π°Π²Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° β€žΠ²ΠΈΡΡΡ‰ΠΈβ€œ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ към Ρ‚ΠΎΠ·ΠΈ Π²ΠΈΠ΄ ΡƒΠΌΠ½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ;
  • ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ са ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° β€”cppcheck-build-dir;
  • htmlreport Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° информация Π·Π° Π°Π²Ρ‚ΠΎΡ€Π° (с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° git blame);
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° прСдупрСТдСния Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са константни, Π½ΠΎ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚;
  • ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ са Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ нСдоизпълнСния Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ бяха напълно Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ ΠΎΡ‚ Misra C 2012, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ИзмСнСниС 1 ΠΈ ИзмСнСниС 2, освСн ΠΏΡ€Π°Π²ΠΈΠ»Π° 1.1, 1.2 ΠΈ 17.3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ 1.1 ΠΈ 1.2 трябва Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° 17.3 ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС изпълнявана ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ GCC.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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