ΠΠ·Π»Π΅Π·Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ ΠΊΠΎΠ΄ 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 ΠΈΠ»ΠΈ action Π·Π° ΡΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅Π»ΠΈ;
- Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ΅Π½ Π΅ΡΠΈΠΊΠ΅Ρ Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π΅ΡΠΈΠΊΠ΅Ρ Π·Π° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΡΠ½ΠΈΠΊΠ°Π»Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡ. ΠΠ΅ΡΠ΅ ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° Π²ΠΈΡΡΡΠΈ ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΊΡΠΌ ΡΠ΅Π·ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ;
- ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° β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