Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Статический анализ кода #128

Open
and-semakin opened this issue Dec 1, 2019 · 2 comments
Open

Статический анализ кода #128

and-semakin opened this issue Dec 1, 2019 · 2 comments

Comments

@and-semakin
Copy link

and-semakin commented Dec 1, 2019

Использование статических анализаторов кода в процессе разработки -- общепризнанно хорошая практика. Для кода на C++ есть несколько статических анализаторов, которые помогают находить различные ошибки (как в плане стиля оформления кода, так и в плане функционала).

На данный момент нашёл следующие:

Попробовал прогнать cppcheck по кодовой базе MyTetra из ветки experimental, отчёт можно найти здесь. Если хотите, то я мог бы попытаться починить эти предупреждения/ошибки и настроить прохождение этого линтера в Travis CI, так чтобы в последствии эта проверка автоматически прогонялась при создании Pull Request'ов (будет блокировать, если есть ошибки) или коммитов (будут просто надоедливые красные крестики).

Опыта разработки на C++ у меня не много, я в основном питонист, но я заинтересован в том, чтобы в MyTetra был хороший код :)

@jubnzv
Copy link

jubnzv commented Dec 2, 2019

Вы можете повысить качество анализа 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 с используемой системой сборки.

@and-semakin
Copy link
Author

 Спасибо за дополнение @jubnzv! Мир разработки на С++ мне далёк, поэтому я принёс сюда только то, что смог по-быстрому нагуглить :) Может быть скажете что-нибудь про другие линтеры? Например, люди очень хорошо отзываются про clang-tidy. Я не уверен, насколько его можно применять, если для сборки MyTetra используется gcc, а не clang.

@fftmp fftmp mentioned this issue Apr 12, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants