Neovim+CoC+clangd环境下FastCheckFilter配置位置咨询
解决clangd升级后cert-msc24-c检查的FastCheckFilter配置问题
问题背景
升级clang后,启用cert-msc24-c检查时,clangd要求配置ClangTidy.FastCheckFilter为Loose或None,但尝试多种配置位置都遇到问题:
- 放入
CheckOptions:无效果,警告依旧 - 放在配置根节点:触发"Unknown Config key 'ClangTidy'"警告
- 放入
Diagnostics/ClangTidy:coc-yaml插件提示"Property FastCheckFilter is not allowed"
核心原因
FastCheckFilter确实属于ClangTidyBlock结构,正确配置位置就是Diagnostics/ClangTidy下,但coc-yaml插件使用的clangd配置schema未更新,不识别这个新增字段,导致校验报错;而clangd本身是支持该配置的,只是yaml校验层面的误报。
解决方案
1. 忽略yaml校验错误(快速解决)
直接在clangd-config.yaml中按正确位置配置,即使coc-yaml报错,clangd会正常加载该配置:
Diagnostics: ClangTidy: FastCheckFilter: Loose Checks: "+cert-msc24-c"
配置完成后执行:CocRestart重启clangd,此时cert-msc24-c的警告应该会消失,而coc-yaml的报错只是校验提示,不影响功能。
2. 关闭clangd配置文件的schema校验
如果不想看到coc-yaml的报错,可以在coc-settings.json中禁用该文件的schema校验:
{ "yaml.schemas": { "disable": ["**/.clangd", "**/clangd-config.yaml"] } }
3. 更新clangd配置schema(彻底解决校验问题)
从clang源码中获取最新的config.schema.json文件,在coc-settings.json中指定使用本地更新后的schema:
{ "yaml.schemas": { "/path/to/your/local/config.schema.json": ["**/.clangd", "**/clangd-config.yaml"] } }
内容的提问来源于stack exchange,提问作者FalcoGer
相关产品推荐
相关产品推荐

