clang-tidy 18.1.0增加Check后无法用于clangd的问题 llvm最近发了18.1.0的正式版,迫不及待把clangd的二次开发内容给移植过去,但是发现增加的一个Check在clangd中没有生效,如果直接执行clang-tidy倒是有效果。 先确认配置文件是否正确,进入方法ParsedAST::build,搜索getTidyOptionsForFile,将这行打印的级别调整为Error,...
点开就可以展开宏了 但是clangd也有自己的缺陷,进入一个未曾打开的文件,clangd需要很长的时间重新index之后才会给出功能,导致刚打开项目到可用的时间相比ccls就慢了非常多,尤其在clang-tidy检查项多的时候,单个文件时间可以长达4s。不过总体而言,写c++我们又多了一个选择 最终配置 config.yaml,我给clangd默认开启了多...
在业界,C++常用的代码检查工具有cpplint,coverity,clang-tidy(clangd背后也是通过clang-tidy检查,这里是指clang-tidy二进制本身独立使用)等,它们往往无法兼顾代码检查的完整性和实时性。如果要做到完整检查,就需要编译代码,通过代码的IR表示去分析逻辑流,比如coverity,这种检查往往是CI/CD流水线的一部分,不能实时检查。而...
"clangd.arguments": [ "--clang-tidy", // 开启clang-tidy "--all-scopes-completion", // 全代码库补全 "--completion-style=detailed", // 详细补全 "--header-insertion=iwyu", "--pch-storage=disk", // 如果内存够大可以关闭这个选项 "--log=error", "--j=5", // 后台线程数,可根据机器...
Clang-Tidy提供了强大的「静态检查」支持,并对于部分代码提供「快速修复」。具体请见Clang-Tidy Checks。这里我主要添加了对于「Google 开源项目风格指南(有中文版,但翻译版本滞后,需注意)」「Cpp Core Guidelines」和性能、潜在的bug、移植性、现代C++的检查。
// Clang-Tidy 静态检查的参数,指出按照哪些规则进行静态检查,详情见「与按照官方文档配置好的 VSCode 相比拥有的优势」 // 参数后部分的*表示通配符 // 在参数前加入-,如-modernize-use-trailing-return-type,将会禁用某一规则 "--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*...
Clangd不仅集成了Clang-Tidy,还实现了其quick fix功能,使得用户可以直接在Clangd中完成Clang-Tidy的修改。对于无法直接修改的变动,则会通过警告形式提示用户。另外,Clangd还能够直接补全未包含的头文件,并自动添加所需的`include`语句。例如,在文件中尝试补全`array`时,Clangd会将此部分标出,并在补全...
clangd 是集成了 clang-tidy 和 clang-format 的,所以二者的配置文件也能在clangd下面使用。比如,我根据我的喜好更改了 format 格式和它的函数参数提示。 .clangd 文件 # 提示嵌入,不使用函数参数嵌入提示InlayHints: Designators: Yes Enabled: Yes ParameterNames: No DeducedTypes: YesCompileFlags: Add: [-xc,...
the command lines I see for clang-tidy.exe don't have corresponding -Wno... flags, so maybe that's the problem. If so, it's not clear to me how to work around this, especially since I have "Build-system warnings" selected for ...
TU.ClangTidyProvider = addClangArgs({"-Wno-unused"}, {}); EXPECT_THAT(TU.build().getDiagnostics(), IsEmpty()); TU.ExtraArgs = {"-Wno-unused"}; TU.ClangTidyProvider = addClangArgs({"-Wunused"}, {"-*, clang-diagnostic-*"}); EXPECT_THAT(TU.build().getDiagnostics(), SizeIs(1...