问题标签 [clang-tidy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cmake - cmake clang-tidy (或其他脚本)作为自定义目标
我正在尝试为 clang-tidy 创建一个自定义 cmake 目标,以整理我的项目。源文件夹如下所示:
到目前为止,我的计划是使用自定义命令将这两个文件复制到构建目录:
我现在想run-clang-tidy.py
使用自定义目标调用构建目录(应该是工作目录),这样我就可以调用:
哪个应该运行.clang-tidy
.
要使此脚本正常工作,它还需要该CMAKE_EXPORT_COMPILE_COMMANDS
选项。我尝试使用以下命令设置它,但它无法识别它:
电话add_custom_target
会是什么样子?
clang - 如何启用 clang-tidy 的“现代化”检查?
我刚刚安装了ClangOnWin,我正试图让clang-tidy
“现代化”检查工作。不幸的是,clang-tidy
似乎并不了解它们:clang-tidy -list-checks foo.cpp -- | grep modernize
不产生任何输出。
这里列出了“现代化”检查,但该页面似乎记录了 Clang 3.8,而我安装的版本是 3.7。但是,3.7 版是LLVM 下载页面中列出的当前版本。
clang-tidy
知道各种安全检查,所以我认为我已经正确安装了它。例如,clang-tidy -list-checks foo.cpp -- | grep security
产生这个:
我需要做一些特别的事情来启用和等检查modernize-use-override
吗modernize-use-nullptr
?
c++ - 让 clang-tidy 修复头文件
我正在将当前使用 gcc 编译的项目移动到 clang,并且有一堆 gcc 没有生成的警告(-Winconsistent-missing-override
)。clang-tidy
用于修复文件中的这些错误*.cpp
,但它不会触及hpp
文件,因为在数据库中找不到编译命令(如我所料)。
我ninja
用来构建项目并ninja -t compdb cc cxx > .build/compile_commands.json
生成编译数据库。我试过运行:
修复错误。它拒绝触摸头文件抱怨:
c++ - 禁用clang-tidy检查的内联方式
我正在尝试为一个项目设置 clang-tidy。我希望能够获得干净的输出,并鼓励在可能的情况下使用 -fix 模式。但是,在个别情况下需要例外。
尽可能使用
对于想要在本地禁用编译器警告的等效情况,是否可以从 clang-tidy 做类似的事情?
我试过了
并且也clang
替换为clang-tidy
. 不幸clang
的是,当用作 pragma 目标并使用常规 clang 编译时,我收到编译警告
和
编译时如果我使用clang-tidy
代替clang
. 当在源上运行时,它们都不会对clang-tidy
自身输出的内容产生影响。
这是x86_64 Linux 上的clang
and 3.8。clang-tidy
c++ - Clang-Tidy 找不到我的头文件
新来的铿锵和铿锵整洁在这里。
我有一个具有这种结构的项目:
project/
- build/
- cmake/
- component1/
- src/
- someFile.cpp
- someFile2.cpp
- someFile.hpp
- someFile2.hpp
- component2/
- etc...
-
当我使用 clang-tidy 通过project/component1/
此命令浏览所有文件时:clang-tidy project/component1/src/* -checks=-*,clang-analyzer-*,-clang-analyzer-alpha*
它最终会抛出这样的错误:
$HOME/project/component1/src/someFile.cpp:18:10: error: 'project/component1/someFile.hpp' file not found [clang-diagnostic-error]
\#include "component1/someFile.hpp"
suppress-warnings - clang-tidy:如何抑制警告?
我最近开始尝试使用clang-tidy
llvm 工具。现在我试图抑制来自第三方库代码的错误警告。为此,我想使用命令行选项
-header-filter=<string>
或者-line-filter=<string>
但到目前为止没有成功。因此,对于时间有限的人,我会将问题放在开头,稍后再解释我已经尝试过的内容。
问题
我需要为该clang-tidy
工具提供什么选项来禁止来自某个行和文件的警告?
如果这是不可能的
什么选项可以抑制来自外部头文件的警告?
到目前为止我做了什么
我最初对 clang-tidy 的调用看起来像这样
我想抑制的产生的警告的第一行看起来像这样
gmock 的人告诉我,这是一个误报,所以我想压制它。首先,我尝试使用该-line-filter=<string>
选项。文档说:
我假设给定行中的警告被过滤掉了。但是文档并没有说明它们是被过滤掉还是被过滤掉。经过一番摆弄后,我创建了一个包含内容的 .json 文件
并将命令行修改为
它将文件的内容写入参数。这会抑制警告,但不仅会抑制此警告,还会抑制 ModuleListsFileManipulator_fixtures.cpp 文件中的所有警告。我尝试了更多的东西,但我无法让它发挥作用。
所以我尝试了这个-header-filter=<string>
选项。此处文档指出,必须提供一个正则表达式,该表达式与应显示诊断的所有头文件匹配。好的,我想,让我们使用一个正则表达式来匹配与分析的 .cpp 文件位于同一文件夹中的所有内容。我可以忍受这一点,尽管它可能会删除因我使用错误的外部标头而导致的警告。
在这里,我不确定正则表达式是必须匹配完整(绝对)文件名还是文件名的一部分。我试过了
它匹配 CodeAssistant 文件夹中的所有绝对头文件名,但它没有抑制来自 gmock-spec-builders.h 文件的警告。
所以最好我想单独抑制每个警告,这样我就可以确定每个警告是否是一个真正的问题,但如果这不可能,我也可以忍受来自整个外部标题的抑制警告。
感谢您的时间。
cmake - 如何指定与 CMAKE_CXX_CLANG_TIDY 变量一起使用的其他参数
我正在尝试使用与cmake的clang-tidy集成,我想通过这个论点。我在调用 cmake 时尝试添加,但我的 makefile 命令最终看起来像:-check
-DCMAKE_CXX_CLANG_TIDY="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*"
/usr/local/Cellar/cmake/3.6.2/bin/cmake -E __run_iwyu --tidy="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*" --source=/Users/ellery/work/.....
换句话说,它看起来像 ; 分离的 args 不会被分开解析。我还尝试CXX_CLANG_TIDY
使用相同的值直接在我的目标上设置目标属性,我得到了相同的行为。
clang-tidy
有没有人通过 cmake成功调用了额外的参数?
qt - 沉默铿锵
我有一个通过 cmake 使用 clang-tidy 的构建:
在构建它时,我在 Qt 库中遇到了可能的内存泄漏:
我怎样才能让这个静音?
我已经尝试过的:
- 在 a.cpp:33 末尾添加 a
// NOLINT
-> 无效 - 在 qobject.h:242 的末尾添加 a
// NOLINT
-> 无效 - 将 qobject.h:242 包裹在一个
#ifndef __clang_analyzer__
-> 没有效果 - 将所有 qobject.h 包裹在一个
#ifndef __clang_analyzer__
-> 没有效果 - 添加
// NOLINT
到 connectImpl 的所有行 -> clang-tidy crashs
@Tarod:这是我目前拥有的:
boost - 使用 clang-tidy 处理大量与 boost 单元测试相关的警告
我正在建立一个项目。我使用 boost 单元测试进行了骨架测试。不幸的是,宏扩展会产生大量警告。有没有办法禁用这些,而不必指定单独的行号?
即使我有 // NOLINT,也会发生这种情况。
一个例子:
c++ - 如何在 Visual Studio 中使用 clang-tidy 现代化
我正在尝试从 Visual Studio 中或从命令行对文件应用 clang 现代化,利用我的 Visual Studio 2015 C++ 项目中的包含路径和设置。
我创建了一个整洁的设置文件,如下所示:
并验证它是否适用于(cygwin)命令行的单个文件:clang-tidy.exe -explain-config
列表(除其他外)
我可以通过手动设置包含在单个文件上运行它:
clang-tidy.exe someFile.cpp -- -Ic:/abc -I. -IIncludes
我安装了 Visual Studio clang-format VS 插件,并创建了一个示例 .clang-format 文件,{ BasedOnStyle: "LLVM", IndentWidth: 20 }
该文件由VS 插件获取。然后我天真地尝试使用 clang-tidy 配置来提供 clang-format,但不出所料,这根本不起作用。
总结一下:如何在文件和 Visual Studio 项目上运行 clang-tidy?
也许一种解决方法是从 Visual Studio 中转储每个文件的包含?任何前进的方式都可以。
以供参考: