ΠΠ±ΡΠ°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΡ Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ΄ cppcheck 2.6, ΠΊΠΎΡΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»Π°ΡΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΡΠ°Π·ΠΈΡΠΈΡΠ΅ C ΠΈ C++, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΠΊΠΎΠ³Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠ°, ΡΠΈΠΏΠΈΡΠ½Π° Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π΅ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡΠ° Π½Π° ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠΈ cppcheck Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π° ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ°Π·Π²ΠΎΡ, ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, Π° ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΠ°ΠΊΠ²ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΎΡΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΡΠΎ ΡΡΠΈΠ»ΠΎΡ Π½Π° ΠΊΠΎΠ΄ΠΎΡ. ΠΠ° Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ΠΎΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΠΏΠ°ΡΡΠ΅Ρ ΠΈΠ»ΠΈ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ΅Π½ ΠΏΠ°ΡΡΠ΅Ρ ΠΎΠ΄ Clang. ΠΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΡΠ° donate-cpu.py Π·Π° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΡΠΎΡΠ°Π±ΠΎΡΠΊΠ° Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π½Π° Debian. ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° GPLv3.
Π Π°Π·Π²ΠΎΡΠΎΡ Π½Π° cppcheck Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π΄ΠΈΠ·Π°ΡΠ½ΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΎΠ΄ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½Π° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°. Π¦Π΅Π»ΡΠ° Π΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π°Ρ Π»Π°ΠΆΠ½ΠΈΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠ²ΠΈ. ΠΠ΅ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ: ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ Π½Π° Π½Π΅ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ, ΠΏΠΎΠ΄Π΅Π»Π±ΠΈ ΡΠΎ Π½ΡΠ»Π°, ΠΏΡΠ΅Π»Π΅Π²Π°ΡΠ΅ Π½Π° ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ, Π½Π΅ΡΠΎΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ Π±ΠΈΡΠΎΠ²ΠΈ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΠΈ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° STL, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ, ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ. Π΄ΠΎ Π±Π°ΡΠ΅ΡΠΎΡ, ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ, ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.
ΠΠΎ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°:
- Π‘Π»Π΅Π΄Π½ΠΈΠ²Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π²ΠΎ ΡΠ°Π΄ΡΠΎΡΠΎ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΡ:
- ΠΎΡΡΡΡΡΠ²ΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΊΠΎΡΠΎ ΡΠ΅Π»ΠΎ;
- Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° ΠΏΡΠ΅ΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠΊΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅;
- Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° ΡΡΠΎ ΡΠ΅ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π° Π΅ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ Π²ΡΠ΅Π΄Π½ΠΎΡΠ½Π°ΡΠ° ΠΏΡΠ΅ΡΡΡΠ°Π²Π° Π½Π° ΡΠΈΠΏΠΎΡ;
- ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ std::move(local);
- Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅ΠΊΠΎΠ²ΠΈ (ΡΡΡΠΈΠΌ);
- Π·Π° Unix ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΡΠΊΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±ΠΎΠΈ;
- Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° ΡΠΈΠΌΠ±ΠΎΠ»ΠΈΡΠ½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π·Π° ValueFlow. ΠΠΎΡΠΈΡΡΠΈ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π΄Π΅Π»ΡΠ° ΠΏΡΠΈ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π΄Π²Π΅ Π½Π΅ΠΏΠΎΠ·Π½Π°ΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ;
- ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΡΠΏΠΈΡΠΎΠΊΠΎΡ ΡΠΎ ΡΠΎΠΊΠ΅Π½ΠΈ βdefineβ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ Π½Π° #include;
- ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΎΠ΄ΡΠΆΠΈ ΠΎΠ·Π½Π°ΠΊΠ° , ΠΈ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ Π½Π° ΡΠ»ΠΎΠ±ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΏΡΠΈΡΠ°ΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ std::size, std::empty, std::begin, std::end ΠΈΡΠ½. ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ yeld ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΡΠ° Π·Π° ΠΊΠΎΠ½Π΅ΠΊΡΠΎΡΠΈ;
- ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΎΠ΄ΡΠΆΠΈ ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ ΠΊΠΎΠΈ ΠΈΠΌΠ°Π°Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΡΡ. Π‘Π΅Π³Π° Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π·Π° Π²ΠΈΡΠ°Ρ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ Π½Π° ΠΎΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ;
- ΠΏΠΎΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ β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