Skip to content
New issue

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

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

Already on GitHub? Sign in 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants