- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始尝试 clang-tidy
llvm的工具。现在我试图抑制来自第三方库代码的错误警告。为此,我想使用命令行选项-header-filter=<string>
或 -line-filter=<string>
但到目前为止没有成功。因此,对于时间有限的人,我会将问题放在开头,稍后再解释我已经尝试过的内容。
问题
我需要为 clang-tidy
提供什么选项?抑制来自某个行和文件的警告的工具?
如果这是不可能的
什么选项可以抑制来自外部头文件的警告?
到目前为止我做了什么
我最初对 clang-tidy 的调用看起来像这样
clang-tidy-3.8 -checks=-*,clang-analyzer-*,-clang-analyzer-alpha* -p Generated/LinuxMakeClangNoPCH Sources/CodeAssistant/ModuleListsFileManipulator_fixtures.cpp
我想抑制的产生的警告的第一行看起来像这样
.../gmock/gmock-spec-builders.h:1272:5: warning: Use of memory after it is freed [clang-analyzer-cplusplus.NewDelete]
return function_mocker_->AddNewExpectation(
gmock 的人告诉我,这是一个误报,所以我想压制它。首先我尝试使用
-line-filter=<string>
选项。文档说:
-line-filter=<string> - List of files with line ranges to filter the
warnings. Can be used together with
-header-filter. The format of the list is a JSON
array of objects:
[
{"name":"file1.cpp","lines":[[1,3],[5,7]]},
{"name":"file2.h"}
]
我假设给定行中的警告被过滤掉了。但是文档并没有说明它们是被过滤掉还是被过滤掉。
[
{"name":"gmock-spec-builders.h","lines":[[1272,1272]]}
]
并将命令行修改为
clang-tidy-3.8 -checks=-*,clang-analyzer-*,-clang-analyzer-alpha* -p Generated/LinuxMakeClangNoPCH -line-filter="$(< Sources/CodeAssistant/CodeAssistant_ClangTidySuppressions.json)" Sources/CodeAssistant/ModuleListsFileManipulator_fixtures.cpp
它将文件的内容写入参数。这会抑制警告,但不仅会抑制此警告,还会抑制 ModuleListsFileManipulator_fixtures.cpp 文件中的所有警告。我尝试了更多的东西,但我无法让它发挥作用。
-header-filter=<string>
选项。此处文档指出,必须提供一个正则表达式,该表达式与应显示诊断的所有头文件匹配。好的,我想,让我们使用一个正则表达式来匹配与分析的 .cpp 文件位于同一文件夹中的所有内容。我可以忍受这一点,尽管它可能会删除因我使用错误的外部 header 而导致的警告。
-header-filter=.*\/CodeAssistant\/.*.h
它匹配 CodeAssistant 文件夹中的所有绝对头文件名,但它没有抑制来自 gmock-spec-builders.h 文件的警告。
最佳答案
我通过在 gmock-spec-builders.h 的第 1790 行添加//NOLINT 解决了这个问题
这是差异:
--- gmock-spec-builders.orig.h 2016-09-17 09:46:48.527313088 +0200
+++ gmock-spec-builders.h 2016-09-17 09:46:58.958353697 +0200
@@ -1787,7 +1787,7 @@
#define ON_CALL(obj, call) GMOCK_ON_CALL_IMPL_(obj, call)
#define GMOCK_EXPECT_CALL_IMPL_(obj, call) \
- ((obj).gmock_##call).InternalExpectedAt(__FILE__, __LINE__, #obj, #call)
+ ((obj).gmock_##call).InternalExpectedAt(__FILE__, __LINE__, #obj, #call) // NOLINT
#define EXPECT_CALL(obj, call) GMOCK_EXPECT_CALL_IMPL_(obj, call)
#endif // GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
关于suppress-warnings - clang-tidy:如何抑制警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527160/
我有一个报告,当前以以下格式显示数据: GROUP HEADER January Meter Number Name Class Facility ... .
我有一份报告目前以下列格式显示数据: GROUP HEADER January Meter Number Name Class Facility ... ..
我有一个 WPF ListView 控件,其中包含一个用 XAML 代码编写的 ContextMenu。每次右键单击 ListView 时,即使 ListView 中没有任何项目,也会显示 Conte
在我刚接手的一个应用中发现了这一行,感觉没什么意义。 使用 (new TransactionScope(TransactionScopeOption.Suppress, new TimeSpan(1,
我目前正在学习一些基本的 java SQL 编码,为我的 SQL 项目制作基本的终端 UI。我一直在使用 PostgreSQL 我正在使用PreparedStatement为了确保自己免受 SQL 注
我已经实现了 native Android SIP solution在我的 Android 应用中。 SipProfile.Builder builder = new SipProfile.Build
我正在将指南支持库检查器集成到我的一个项目中。 Microsoft.CppCoreCheck Microsoft.Gsl 当我运行它时,我从标准库、glm、boost 等包含的库中得到了一堆错误。 一
我只是希望我的方法调用能够抑制它依次调用的方法中可能出现的所有“NoMethodError”异常。 def foo begin bar1 bar2 rescue Excepti
我最近开始尝试 clang-tidy llvm的工具。现在我试图抑制来自第三方库代码的错误警告。为此,我想使用命令行选项-header-filter=或 -line-filter=但到目前为止没有成功
我必须为 Kendo Grid 创建一个自定义的“更新”按钮。 基本上,它以编程方式将适当的行置于编辑模式(使用 editRow),将某些字段更新为特定值(使用 model.set),然后保存该行(使
我正在使用 Visual Studio 2015、FxCop 14.0。使用自定义规则,并尝试在 GlobalSuppressions.cs 中抑制消息。我在项目文件中设置了全局抑制的路径 .. .
我想回滚名为“scope”的事务,但名为 scope2 的内部事务不应回滚。但是他们都回滚了!!!选项 TransactionScopeOption.Suppress 不起作用... 我已经启用了 D
你好, 是否可以控制可以拖动哪些记录以及可以将它们放到哪里(在悬停期间从头开始或中间抑制拖动操作)? 我需要的详细信息如下: 我有一个包含一些组(比如男性和女性)的网格,只想激活组“女性”内的 d&d
以下(废话)Python模块的doctest失败: """ >>> L = [] >>> if True: ... append_to(L) # XXX >>> L [1] """ def ap
在git push heroku master上,我收到此错误: Unable to find suppressions file at location: etc/config/checkstyle
我正在尝试安装 Taiga在我的电脑上,对于其中一个脚本,它试图 import suppress 但失败了。我尝试手动执行此操作: (taiga)$ python Python 3.3.3 (defa
有时我会为某些可能运行我的应用程序的 Android 版本列出代码。使用最新 Android 工具的 Eclipse 仍然注意到我的 Manifest 文档允许较低版本的 Android,因此确定我的
我的 Android 项目中某处有这段代码: public boolean isLoadInProgress(boolean privateLoad, boolean publicLoad) {
我一直在开发一个通过 Android Beam 发送 NDEF 消息的 Android 应用程序和一个接收它们的桌面应用程序。 一切正常;但是,我个人认为 Android Beam“Tab to be
我正在使用 xlrd 来处理 Excel 文件。我在包含许多文件的文件夹上运行脚本,并且正在打印与这些文件相关的消息。但是,对于我运行的每个文件,我也会收到以下 xlrd 生成的错误消息: WARNI
我是一名优秀的程序员,十分优秀!