gpt4 book ai didi

c++ - 使用配置文件禁用或启用 cppcheck 警告

转载 作者:行者123 更新时间:2023-12-04 13:24:44 25 4
gpt4 key购买 nike

使用 clang-tidy 静态分析器,我可以在项目的根目录中保留一个文件 ( .clang-tidy ),其中包含我想要激活或停用的警告。clang-tidy将寻找这个文件(据我所知)并使用那里定义的选项。这使我免于在 CMake 或 Makefile 中硬编码长命令行。
是否可以对 cppcheck 做同样的事情?静态分析器?
目前我有这个很长的命令行硬编码:

cppcheck --max-ctu-depth=3 --enable=all --inline-suppr --suppress=*:*thrust/complex* --suppress=missingInclude --suppress=syntaxError --suppress=unmatchedSuppression --suppress=preprocessorErrorDirective --language=c++ --std=c++14 --error-exitcode=666

这是 .clang-tidy的一个例子我保存在项目根目录下的配置文件:
---
Checks: '
*,
-readability-magic-numbers,
-modernize-use-nodiscard,
-altera-struct-pack-align,
-cert-err58-cpp,
-cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-pro-type-vararg,
-cppcoreguidelines-avoid-magic-numbers,
-fuchsia-default-arguments-calls,
-fuchsia-trailing-return,
-fuchsia-statically-constructed-objects,
-fuchsia-overloaded-operator,
-hicpp-vararg,
-hicpp-no-array-decay,
-llvm-header-guard,
-llvmlibc-restrict-system-libc-headers,
-llvmlibc-implementation-in-namespace,
-llvmlibc-callee-namespace
'
WarningsAsErrors: '*'
HeaderFilterRegex: '.'
AnalyzeTemporaryDtors: false
FormatStyle: file
...

最佳答案

您可以将配置存储在 *.cppcheck 中。文件,然后使用 --project运行检查的命令行选项。见 the manual - Cppcheck GUI 项目部分。cppcheck文件通常由 CppCheckGUI 通过 File -> New project file 生成。确切的语法没有记录,但它基本上只是一个 XML 文件,如果您想不使用 GUI 直接创建文件,则看起来相当简单。
sample test.cppcheck文件:

<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<builddir>test2-cppcheck-build-dir</builddir>
<platform>Unspecified</platform>
<analyze-all-vs-configs>false</analyze-all-vs-configs>
<check-headers>true</check-headers>
<check-unused-templates>false</check-unused-templates>
<max-ctu-depth>10</max-ctu-depth>
<exclude>
<path name="WINDOWS/"/>
</exclude>
<suppressions>
<suppression>IOWithoutPositioning</suppression>
</suppressions>
</project>

关于c++ - 使用配置文件禁用或启用 cppcheck 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69272046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com