Forwarded from #HEX • IT
cppcheck — это проект статического анализа с открытым исходным кодом, ориентированный в первую очередь на нахождение реальных ошибок в коде с минимальным количеством ложных срабатываний.
cppcheck перестраховывается, причём планка адекватности высока. Большинство проверок cppcheck по умолчанию не включает. Среди них следующие категории проверок, каждая из которых может включаться/выключаться независимо:
error — явные ошибки, которые анализатор считает критическими и обычно они приводят к багам (включено по умолчанию);
warning — предупреждения, здесь даются сообщения о небезопасном коде;
style — стилистические ошибки, сообщения появляются в случае неаккуратного кодирования (больше похоже на рекомендации);
performance — проблемы производительности, здесь cppcheck предлагает варианты, как сделать код быстрее (но это не всегда даёт прирост производительности);
portability — ошибки совместимости, обычно связано с различным поведением компиляторов или систем разной разрядности;
information — информационные сообщения, возникающие в ходе проверки (не связаны с ошибками в коде);
unusedFunction — попытка вычислить неиспользуемые функции (мёртвый код), не умеет работать в многопоточном режиме;
missingInclude — проверка на недостающий #include (например, используем random, а подключить stdlib.h забыли).
Включаются проверки параметром --enable, список категорий проверок перечисляется через запятую.
Существует ключевое слово all, которое включает все перечисленные проверки.
И это ещё не всё. Если ваша программа безошибочна с точки зрения анализатора, попробуйте запустить cppcheck с параметром --inconclusive. Данный режим действительно включает все возможные проверки, даже ошибки с малой вероятностью, которые cppcheck пропускает по умолчанию.
Примеры использования:
cppcheck перестраховывается, причём планка адекватности высока. Большинство проверок cppcheck по умолчанию не включает. Среди них следующие категории проверок, каждая из которых может включаться/выключаться независимо:
error — явные ошибки, которые анализатор считает критическими и обычно они приводят к багам (включено по умолчанию);
warning — предупреждения, здесь даются сообщения о небезопасном коде;
style — стилистические ошибки, сообщения появляются в случае неаккуратного кодирования (больше похоже на рекомендации);
performance — проблемы производительности, здесь cppcheck предлагает варианты, как сделать код быстрее (но это не всегда даёт прирост производительности);
portability — ошибки совместимости, обычно связано с различным поведением компиляторов или систем разной разрядности;
information — информационные сообщения, возникающие в ходе проверки (не связаны с ошибками в коде);
unusedFunction — попытка вычислить неиспользуемые функции (мёртвый код), не умеет работать в многопоточном режиме;
missingInclude — проверка на недостающий #include (например, используем random, а подключить stdlib.h забыли).
Включаются проверки параметром --enable, список категорий проверок перечисляется через запятую.
Существует ключевое слово all, которое включает все перечисленные проверки.
Примечание. Параметры -j и режим проверки unusedFunction несовместимы, поэтому -j выключит проверку unusedFunction, даже если она указана явно.
И это ещё не всё. Если ваша программа безошибочна с точки зрения анализатора, попробуйте запустить cppcheck с параметром --inconclusive. Данный режим действительно включает все возможные проверки, даже ошибки с малой вероятностью, которые cppcheck пропускает по умолчанию.
Примеры использования:
cppcheck -q -j4 --enable=warning,style,performance,portability ./source
cppcheck -q --enable=all ./source
cppcheck -q --enable=all --inconclusive ./source
🖕4❤3👍2🥰1 1
Forwarded from ████████████████ ██████████ (direktor 𝓯𝓻𝓮𝓪𝓴𝔂neta 3)
я иногда делаю ассемблерные вставки в docx
(с) "Чистый Код", Роберт Мартин