เบเบฒเบ™เบ›เปˆเบญเบ cppcheck 2.6, เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบ„เบปเบ‡เบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ C++ เปเบฅเบฐ C

เบฎเบธเปˆเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบ„เบปเบ‡เบ—เบตเปˆ cppcheck 2.6 เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปƒเบ™เบžเบฒเบชเบฒ C เปเบฅเบฐ C ++, เบฅเบงเบกเบ—เบฑเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ syntax เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบ›เบปเบเบเบฐเบ•เบดเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบเบฑเบ‡. เบเบฒเบ™เป€เบเบฑเบšเบเปเบฒ plugins เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบตเปˆ cppcheck เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เปˆเบฒเบ‡เป†, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เปเบฅเบฐเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เปเบฅเบฐเบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบฅเบฐเบซเบฑเบ”. เป€เบžเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบเบเบงเบดเป€เบ„เบฒเบฐเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เบซเบผเบทเบ•เบปเบงเปเบเบเบงเบดเป€เบ„เบฒเบฐเบžเบฒเบเบ™เบญเบเบˆเบฒเบ Clang. เบกเบฑเบ™เบเบฑเบ‡เบ›เบฐเบเบญเบšเบกเบตเบชเบฐเบ„เบดเบš donate-cpu.py เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”เบฎเปˆเบงเบกเบกเบทเบชเปเบฒเบฅเบฑเบšเปเบžเบฑเบเป€เบเบฑเบ” Debian. เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” GPLv3.

เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ cppcheck เปเบกเปˆเบ™เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบญเบญเบเปเบšเบšเบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เปƒเบ™เบšเบฑเบ™เบ”เบฒเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”: เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆ, เบเบฒเบ™เปเบšเปˆเบ‡เป‚เบ”เบเบชเบนเบ™, เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบฅเบปเป‰เบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เบšเบดเบ”เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบเบฒเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบšเบฑเบ™เบซเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบเบฒเบ™เปƒเบŠเป‰ STL เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบ•เบปเบงเบŠเบตเป‰ null, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเบˆเบดเบ‡. เบ•เปเปˆเบเบฑเบš buffer, buffer overruns , เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ› uninitialized.

เปƒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹:

  • เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบซเบผเบฑเบเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ:
    • เบเบฒเบ™เบ‚เบฒเบ”เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบขเบนเปˆเปƒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ;
    • เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบšเบŠเป‰เบญเบ™, เบเปเบฒเบ™เบปเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”;
    • เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ–เบทเบเบ›เบฝเบšเบ—เบฝเบšเปเบกเปˆเบ™เบขเบนเปˆเบ™เบญเบเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”;
    • เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบเบฒเบ™เบเบฑเบšเบ„เบทเบ™ std::move(local);
    • เป„เบŸเบฅเปŒเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบžเป‰เบญเบกเป†เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบ‚เบฝเบ™เปƒเบ™เบชเบฒเบเบ™เป‰เปเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เบ™เป‰เปเบฒ);
  • เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต Unix, เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบงเบดเบ™เบดเบ”เป„เบชเปƒเบ™เบชเบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฑเบ™เบเบฒเบฅเบฑเบเบชเปเบฒเบฅเบฑเบš ValueFlow. เปƒเบŠเป‰ delta เบ‡เปˆเบฒเบเป†เป€เบกเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบ;
  • เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ tokens "เบเปเบฒเบ™เบปเบ”" เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบเบปเบ‡เบเบฑเบš #include;
  • tag เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เบ”เบฝเบงเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบˆเบธเปเบ—เบฑเบเป„เบ”เป‰ , เปเบฅเบฐเบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบกเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบšเปเปˆเป€เบชเบเบ„เปˆเบฒ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเบžเบฒเบŠเบฐเบ™เบฐเป€เบŠเบฑเปˆเบ™: std::size, std::empty, std::begin, std::end, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธ yld เบซเบผเบทเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ;
  • tag เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เบ”เบฝเบงเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบˆเบธเปเบ—เบฑเบเป„เบ”เป‰ เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบŠเบตเป‰เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ. เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป„เบ”เป‰เบ–เบทเบเบญเบญเบเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡ dangling เบเบฑเบšเบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เบญเบ‡เบ•เบปเบงเบŠเบตเป‰ smart;
  • เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต โ€”cppcheck-build-dir;
  • htmlreport เบ•เบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบœเบนเป‰เบ‚เบฝเบ™ (เป‚เบ”เบเปƒเบŠเป‰ git เบ•เปเบฒเบ™เบด);
  • เบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเปเบ›เบ—เบตเปˆเบšเปเปˆเบ„เบปเบ‡เบ—เบตเปˆ, เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™;
  • เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบชเบฐเบชเบปเบกเปเบฅเบฐเบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบˆเบฒเบ Misra C 2012, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ 1 เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ 2, เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เบเบปเบเป€เบงเบฑเป‰เบ™เบเบปเบ”เบฅเบฐเบšเบฝเบš 1.1, 1.2 เปเบฅเบฐ 17.3. เบเบฒเบ™เบเบงเบ”เบชเบญเบš 1.1 เปเบฅเบฐ 1.2 เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบ compiler. เบเบฒเบ™เบเบงเบ”เบชเบญเบš 17.3 เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เป‚เบ”เบ compiler เป€เบŠเบฑเปˆเบ™ GCC.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™