问题标签 [clangpowertools]

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.

0 投票
2 回答
4079 浏览

windows - 使用 MSVC2015 在 Windows 上进行 clang-tidy

我尝试clang-tidy在 Windows 上使用 - 到目前为止还没有成功。

作为先决条件,我已经安装了LLVM 3.9.1

我的普通编译器是MSVC 2015,我的构建系统是QBS 1.7.2。使用我已经生成的 QBS compile_commands.json。当然,该文件包含 MSVC 2015cl.exe标志/参数。以下是显示一个文件条目的摘录:

切换到作业/项目文件夹C:/some_ci_job_folder/并运行

给我以下警告和一个错误:

知道为什么clang-tidy不能cl正确解释选项(默认情况下)吗?

好的,在谷歌搜索后,我发现添加--driver-mode=cl可能会有所改善。但

仍然给我

所以它不再抱怨包含路径参数,但据我所知,这些参数只是被忽略了吗?

顺便说一句:我clang-tidyDeveloper Command Prompt for VS2015. 到目前为止,我不确定这是否需要?

任何想法...如何解决问题,如何调试包含路径参数的评估,...?

0 投票
1 回答
394 浏览

c++ - clangTidy linting corecrt_wstdio.h

我正在尝试在遗留代码库上使用 clangTidy。在一个文件上尝试最简单的测试用例时,我遇到了这个我不知道如何防止的错误。我相信这来自我的文件,包括 StdAfx,其中包括一些标准标头,它们以某种方式被 linted?我已经删除了一些冗长的行......有什么想法吗?

我正在使用 Clang Power Tools 来调用它,但我认为无论如何结果都是一样的。

0 投票
1 回答
398 浏览

c++ - C++ 使用 clang-tidy 和外部库

我是第一次使用 clang-tidy。我正在使用 OpenCV 完成我的论文。我的问题是,当我将 clang-tidy 配置为“修复”它发现的问题时,它也会修复它在 OpenCV 库中发现的问题。我的问题是:我怎样才能让 clang-tidy 只修复它在我创建的文件中发现的问题?

0 投票
1 回答
322 浏览

c++ - 用于 Clang++ 的 InterlockedExchange 的 32 位调用约定错误,但 MSVC 很好

我正在使用clang 电动工具来编译一个通常使用 Visual Studio 编译的项目。
boost 的 lwm_win32.hpp 头文件中(是​​的,我们使用的是旧版本的 boost,目前无法更新)我得到一个错误读数。

此处声明的函数stdcall先前已在没有调用约定的情况下声明

有问题的行是:

使用 Visual Studio 编译时,我没有收到任何错误或警告。有趣的是,即使我手动将调用约定从__stdcallto更改为__cdecl. Clang 告诉我它看到了哪个先前的声明。通过手动检查这个位置,我会说 clang 是正确的。在破译所有预处理器定义后,我还要说__cdecl的是视觉工作室应该看到的。但是,InterlockedExchange官方文档和内在函数的官方文档都没有提到特定的调用约定。

所以基本上我不确定问题的根源是什么。Visual Studio 接受声明中的任何调用约定?由于某些预处理器宏设置为错误的值,Clang 没有看到正确的声明?提升声明错误的调用约定?我必须承认我很困惑。

Visual Studio 版本是 2015 Update 3。

Clang++ 版本是 6.0.0,使用参数调用-fms-compatibility-version=19

编辑

正如评论中所建议的,我查看了 MSVC 和 Clang 的预处理器输出。他们看起来和我差不多。对于这两条线从 boost 扩展到

都有

和声明

以及针对不同重载的几个内联实现。

在这两个编译器中,我的目标都是 32 位(-m32 表示 clang)。

0 投票
1 回答
133 浏览

c++ - 为什么缺少名称的函数调用仍然可以编译?

开发人员在复制和粘贴类似类型的代码时犯了一个错误,而不是

他们不小心输入了

此代码成功编译并且没有给出警告。当尝试在 VS 2015 中调试此代码时,调试器将跳过这行代码。

为什么这行代码编译并且没有给出警告,这行代码在做什么?

更新: 在带有所有警告的 Visual Studio 2015 中构建会显示此警告,但级别 4 不会。奇怪的是,代码分析和 Clang Power Tools 都没有显示此警告。

谢谢。

0 投票
1 回答
917 浏览

visual-studio - 如何在 Visual Studio 和 CMake 中使用 clang-tidy?

我的最终目标是对某些代码进行一次性自动化现代化,并应用我们以 .clang-tidy 表示的标识符大写规则。能够随着时间的推移重复这一点会很好。我们使用 Visual Studio 2015、CMake 3.13,并且我已经安装了 LLVM 9 来获得整洁。

我可以在命令行、CMake 或 Visual Studio 中运行 clang-tidy,但我需要任何这些方面的帮助。

为了在命令行上运行,我需要一个来自 CMake 的 compile_commands.json 文件,但传递 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 不会创建一个。我听说这不适用于 CMake Visual Studio 生成器。我尝试了一个带有“cmake .. -G Ninja”的忍者生成器,但我得到了错误。我不熟悉忍者,不知道是否可以正常工作。如果我真的使用 Visual Studio 2015 构建,我也不知道它生成的 compile_commands.json 文件是否相关。在我的平台上生成此文件的最可接受的方式是什么?

我可以访问 Visual Studio 2019, 16.4,它具有内置的 clang-tidy 支持,但博客说这不适用修复,这是我的主要目标。

0 投票
1 回答
124 浏览

c++ - 为什么 Clang 不允许“and”作为函数名?

我正在使用 Visual Studio 2017 开发一个程序有一段时间了。最近我安装了 Clang Power Tool 扩展来检查我的代码质量。我的程序的一部分包括模拟 cpu 的操作码。我在下面创建了一个精简的示例。

以下示例工作正常:

这个没有:

我在 Clang 3.8.0 上遇到了这些错误(我在我的程序上使用的是 9.0.1 版本,并且错误类似):

看起来像以二进制操作命名的函数(如与、非或或和 xor)在编译器中触发了错误行为。使用 Visual Studio 编译器没有显示错误,并且程序按预期工作。

我能做些什么来防止这种情况发生吗?或者这是 Clang 中的错误?将 NOLINT 添加到该行并没有帮助,因为它是引发错误的编译器......

您可以在这里测试案例:https ://rextester.com/TXU19618

谢谢 !

0 投票
1 回答
24 浏览

visual-studio - Clang Power Tools VsWhere 无法检测到 Visual Studio 2017

刚刚为 VS 2019 社区安装了 Clang Power Tools,我去构建它并抛出以下错误:

其他人有这个问题吗?

底部的要求:

https://marketplace.visualstudio.com/items?itemName=caphyon.ClangPowerTools

状态VS 2017 / 2019.....