ΠΠ·Π»Π΅Π·Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ 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
