Open and-semakin opened 4 years ago
Вы можете повысить качество анализа cppcheck
, используя опции, описанные в документации. Например, cppcheck поддерживает библиотеки -- дополнительные файлы конфигурации, в которых содержится информация о функциях популярных библиотек. Для данного проекта было бы логично подключить qt.cfg. Также бывает полезно указать стандарт и используемую версию языка: это позволит получить советы о возможной модернизации кода и задействовать дополнительные проверки для новых функций.
Вот пример отчёта, полученного для ветки experimental с помощью следующей команды:
$CPPCHECK/bin/cppcheck . -q -j4 --library=qt --enable=all \
--language=c++ --std=c++14 \
-ithirdParty -iscript 2>&1 | tee cppcheck.log
Можно найти больше возможных ошибок, подключив опции вроде --inconclusive
и добавив дополнительные файлы библиотек. Либо попробовать интегрировать cppcheck с используемой системой сборки.
Спасибо за дополнение @jubnzv! Мир разработки на С++ мне далёк, поэтому я принёс сюда только то, что смог по-быстрому нагуглить :) Может быть скажете что-нибудь про другие линтеры? Например, люди очень хорошо отзываются про clang-tidy. Я не уверен, насколько его можно применять, если для сборки MyTetra используется gcc, а не clang.
Использование статических анализаторов кода в процессе разработки -- общепризнанно хорошая практика. Для кода на C++ есть несколько статических анализаторов, которые помогают находить различные ошибки (как в плане стиля оформления кода, так и в плане функционала).
На данный момент нашёл следующие:
Попробовал прогнать cppcheck по кодовой базе MyTetra из ветки experimental, отчёт можно найти здесь. Если хотите, то я мог бы попытаться починить эти предупреждения/ошибки и настроить прохождение этого линтера в Travis CI, так чтобы в последствии эта проверка автоматически прогонялась при создании Pull Request'ов (будет блокировать, если есть ошибки) или коммитов (будут просто надоедливые красные крестики).
Опыта разработки на C++ у меня не много, я в основном питонист, но я заинтересован в том, чтобы в MyTetra был хороший код :)