草庐IT

clang_analyzer

全部标签

c++ - 变量 args SFINAE 默认构造函数在 clang 中工作,但在 Visual Studio 2015 中失败

任何人都知道这段代码是否不好,或者VS是否有错误,或者Clang是否允许?我认为我的构造函数不应该接受任何参数并通过enable_if检查-但VS在某处说“不”。VisualStudio2015Update2出现以下错误:source_file.cpp(##):errorC2512:'Foo::Foo':noappropriatedefaultconstructoravailable现场直播:http://rextester.com/VWAI2954VS存在错误:http://rextester.com/PTDSS2853#include#includeusingnamespacest

c++ - 在 OSX 10.11.4 + clang 上抛出异常导致 SIGSEGV

给定以下代码:#include#includeusingnamespacestd;classexception_base:publicruntime_error{public:exception_base():runtime_error(string()){}};classmy_exception:publicexception_base{public:};intmain(){throwmy_exception();}这在GNU/Linux和Windows上运行良好,并且在最新更新到版本10.11.4之前在OSX上运行良好。我的意思是,因为没有捕获到异常,所以调用了std::termi

c++ - 如何使用 clang 和选项 -std=c++11 编译项目,使用 autotools

我正在使用C和C++代码开发软件。我最近在c++11标准中添加了一些代码。在configure.ac我写道:forfin'-std=c++11''-std=c++11-stdlib=libc++'doAX_CHECK_COMPILE_FLAG([$f],[CXXFLAGS="$CXXFLAGS$f"stdpass=true],[],[],[])${stdpass-false}&&breakdoneif!"${stdpass-false}";thenAC_MSG_ERROR([UnabletoturnonC++11modewiththiscompiler])fi使用gcc我没问题,一切顺

c++ - 有没有一种方法可以使用 Clang API 扩展宏来获取源代码

例如,我得到了以下代码。#defineADD(x,y)(x)+(y)intfunc(inti,intj){returnADD(i,j);}可以使用clangSourceManager获取函数func的源代码。我得到的是{returnADD(i,j)。有什么方法可以获取源代码{return(i)+(j);}?keyboardsmoke的回答:已测试可以简单地使用Decl::print()方法,或者这个答案中keyboardsmoke的代码,实际上,Decl::print()调用DeclPrinter的方法。Stmt有一个名为printPretty()的不同方法,它可以打印出扩展了宏的语句

c++ - 为什么 clang/llvm 不对此进行优化?

使用clang3.9编译此代码时:constexprboolis_small(longlongv){returnv它生成的程序集等同于intf(inta){returna;},因为它确定is_small(a)将始终为真,因为a是一个int,这(在我的平台)总是小于0x4000000000000000。当我将is_small更改为:constexprboolis_small(longlongv){returnv>=-0x4000000000000000;}正如预期的那样,发生了完全相同的情况。但是,当我更改is_small以检查这两个条件时:constexprboolis_small(l

c++ - 从 Clang AST 中的 CXXConstructExpr 中检索模板参数

假设我有一个这样的变量声明:std::vectormyVector(1);这在ClangAST中表示为CXXConstructExpr。我有一个匹配器可以找到此CXXConstructExpr,但我想从中提取MyType的声明。我尝试了各种方法,但似乎没有任何效果:constCXXConstructExpr*construct=Result.Nodes.getNodeAs("expr");construct->getConstructor()->getTemplateSpecializationArgs()//Alwaysnullptrconstruct->getConstructor

c++ - 如何在 Travis CI 上使用 C++17 安装 clang?

我正在尝试使用clang4.0设置TrevisCI。我需要C++17支持。我使用以下脚本:language:cppsudo:requiredos:-linuxcompiler:-clangenv:-TARGET_CPU=x86BUILD_CONFIGURATION=Debug-TARGET_CPU=x86BUILD_CONFIGURATION=Release-TARGET_CPU=x64BUILD_CONFIGURATION=Debug-TARGET_CPU=x64BUILD_CONFIGURATION=Release-TARGET_CPU=amd64BUILD_CONFIGURATI

c++ - 如何使用 clang 格式分隔 lambda 的尾随返回类型

有几件事阻止我切换到clang格式。当我在应该换行到下一行的lambda上有一个尾随返回类型时,箭头和尾随返回类型之间没有空格。我该如何解决这个问题?例如,这是下面相同代码的未格式化版本的clang-format的输出autofunc(){return[.......](autoone,autolong_parameter_list,autoanother)->SomeLongReturnType;//^^^^^^^^^^^^^^^^^^^^^HowcanIaddaspaceinbetweenthose?} 最佳答案 TL;TR:升

c++ - 在 CUDA 源文件上使用 clang-tidy

存在多种专为C/C++设计的静态分析工具,但它们对于测试CUDA源代码并不是特别有用。自clangversion6能够编译CUDA,我想使用clang-tidy检查我的选项,它似乎没有切换架构的选项。有没有办法让它工作?例如用于打开CUDA解析器的编译时开关、自定义检查形式的扩展,或者它可能是计划中的功能? 最佳答案 基于clang的工具的一个问题是它们不以与clang完全相同的方式解析文件。第一个问题是,与C/C++编译不同,CUDA编译对源码进行了多次编译。默认情况下,当您给它一个CUDA文件时,clang会创建多个编译作业,并

c++ - Clang 静态分析器检查一个函数是否被调用了两次

我有一个新的自定义检查器(TransactionChecker.cpp)。这是交易状态:structTransactionState{private:enumKind{OpenedT,StartedT,FinalizedT,ClosedT}K;TransactionState(KindInK):K(InK){}public:boolisOpened()const{returnK==OpenedT;}boolisClosed()const{returnK==ClosedT;}boolisStarted()const{returnK==StartedT;}boolisFinalized()