问题标签 [clang-static-analyzer]

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 投票
1 回答
475 浏览

objective-c - ARC:使用核心基础的 Objective-C 代码的分析器警告

在一些 Objective-C 上使用分析器 | Cocoa / Core Foundation 代码,我遇到了一些无法修复的错误,因为我不理解它们。

错误 #1:在一个 Objective-C 类头文件中,我声明了这个属性。

在正文中,我收到以下错误:

在此处输入图像描述

问题:为什么会泄漏?我将它存储在一个属性中并稍后处理它。我认为ARC知道如何处理CF“对象”。

错误 #2: 稍后,我在释放对象时遇到此错误:

在此处输入图像描述

问题:我如何考虑这两个分析器警告以创建一个实际工作的代码(self.gClients 存在于对 ClientInitialize 和 destroyAllClients 的调用之间)但不会被标记?

0 投票
1 回答
1277 浏览

ios - Jenkins:如果clang分析器发现新错误,如何将构建标记为不稳定

我已经在 mac 服务器上设置了 Jenkins CI,使用 Xcode Build 和 Clang Scan-Build 插件对 iOS 项目进行自动构建/分析。我设置了电子邮件通知,以在用户使用可编辑电子邮件通知插件破坏构建时通知他们。但是,如果 Clang Scan-Build 阶段检测到自上次提交以来的新错误,我也想给用户发送电子邮件,这导致我的问题:如果新错误有,我如何让 clang 插件将构建标记为不稳定/失败被介绍了?(如果自上次提交以来引入了新错误,我想通知用户,而不仅仅是超过阈值。)

我很确定这是可能的,因为 clang 插件已经提供了以前构建的 clang 错误计数结果的图表。

在此先感谢您的帮助。

0 投票
1 回答
428 浏览

ios - 如何找出触发警告的 clang 静态分析器步骤?

以下来自CocoaLumberjackDDAbstractDatabaseLogger的方法:

触发 clang 静态分析器警告:

步骤截图: 在此处输入图像描述

我查看了我的构建输出,发现了以下 plist:

有什么方法可以获取静态分析器认为会导致传入空指针的抽象值?我想不通。

0 投票
1 回答
1394 浏览

objective-c - Xcode 项目的 Clang 静态代码分析器输出格式

我正在尝试在 ObjectiveCProject 上运行内置的 Xcode Clang 静态分析器。我想知道是否可以将 Obj-C Analyzer 输出转换为声纳插件可以使用的另一种格式。由于目前还没有具有完整功能的 ObjectiveC 声纳插件。

0 投票
1 回答
409 浏览

xcode4.5 - 如何安装 clang checker-275 并给我一些配置 Clang Scan-Build 插件的示例?

我已经下载了 checker-275.tar.bz2 并尝试使用以下命令进行配置,但它会引发错误。

sudo ./Users/abc/Downloads/checker-275/set-xcode-analyzer --use-checker-build=$ABSOLUTE_PATH_TO_CLANG 密码:

错误:sudo:./Users/abc/Downloads/checker-275/set-xcode-analyzer:找不到命令 Mac-mini:~ aegon$ sudo ./Users/abc/Downloads/checker-275/set-xcode-analyzer --use-checker-build=$/Users/abc/Downloads/checker-275/bin/clang

我已按照此链接进行参考。http://skabber.com/use-the-latest-version-of-clang/

请帮我解决这个问题提前谢谢

0 投票
2 回答
2712 浏览

objective-c - xml格式的Clang静态分析器输出

是否可以从 Clang 扫描构建分析器获取 XML 格式的输出?目前以下命令生成 html 格式的输出以在 webbrowser 中查看。

Windows 上的 CppCheck 生成 XML 格式的输出。我需要将结果解析为与 CppCheck 相同的格式。但我不能在 MACOS 上使用 cppCheck。我想要实现的是将结果输入 Sonar C++ 插件,以便我可以创建 ObjectiveC 项目的仪表板(持续集成)报告。Sonar C++ 插件使用 CppCheck 静态分析代码。

任何输入将不胜感激。

0 投票
1 回答
2073 浏览

ios - 使用 Clang Analyzer 生成报告 - scan-build

我是 Clang 分析器的新手,我正在尝试使用 scan-build 生成报告。使用如下扫描构建时:

我总是收到以下错误:

请帮我解决这个问题。

0 投票
1 回答
271 浏览

c++ - 为什么Boost.Concept通过空指针调用析构函数?

通过 Clang 静态分析器分析一些 Boost 依赖的代码时,我得到了以下错误:

逻辑错误 Called C++ object pointer is null usage.hpp 22

从下面的代码boost/concept/usage.hpp

问题:这是 Boost 中的真正错误还是 Boost.Concept 通过空指针调用析构函数以在概念检查期间以某种方式生成编译器错误?

0 投票
1 回答
349 浏览

clang - 无法为 if 语句的一部分打印正确的行号,Clang

在以下代码中,我正在使用 clang API 解析 C 代码,然后尝试

1)在代码中添加HTML页眉和页脚,以便在浏览器中查看

2)获取 IF 语句的 THEN 部分的行号并打印。

我在(2)中遇到了麻烦。我无法理解输出。对于以下输入(添加了行号),我得到(相关)输出为

行号为 6

行号为 6

行号为 6

行号为 6


行号为 12

行号为 12

行号为 12

行号为 12


我希望它分别是 4 和 8。有人可以解释我错在哪里吗?

我的输入如下(请删除行号或转到http://pastebin.com/hF5yMMAz

%nl 我的输入.c

10 }

11

12返回0;

13 }

我的代码位于以下位置(只有一个文件) http://pastebin.com/txF9Bwa4

要编译代码,请运行以下命令:

CLANG_INSTALL=/usr/installdir/

g++ -I$CLANG_INSTALL/include/ -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -g -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Woverloaded-virtual -Wcast-qual -fno-rtti -c -o rewritersample.o rewritersample.cpp

g++ -g -I$CLANG_INSTALL/include/ -o rewritersample rewritersample。o -lclangTooling -lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangARCMigrate -lclangRewriteFrontend -lclangRewriteCore -lclangEdit -lclangAST -lclangLex -lclangBasic -lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMHexagonCodeGen -lLLVMHexagonAsmPrinter - lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMBlazeDisassembler -lLLVMMBlazeCodeGen -lLLVMMBlazeDesc -lLLVMMBlazeAsmPrinter -lLLVMMBlazeAsmParser -lLLVMMBlazeInfo -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo-lLLVMXCoreAsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMAArch64Utils -lLLVMSparcCodeGen -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMTableGen -lLLVMDebugInfo -lLLVMOption -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCDisassembler -lLLVMMCParser -lLLVMInstrumentation -lLLVMInterpreter -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMBitWriter -lLLVMMCJIT -lLLVMJIT -lLLVMCodeGen -lLLVMObjCARCOpts -lLLVMScalarOpts-lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMRuntimeDyld -lLLVMExecutionEngine -lLLVMTarget -lLLVMMC -lLLVMObject -lLLVMCore -lLLVMSupport -L$CLANG_INSTALL/lib/ -lz -lpthread -lm -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo -lLLVMTarget -lLLVMlLLVMl -LLVMTarget -lLLVMlLLVMl低密度脂蛋白

要运行代码,命令是

$./rewritersample ./myinput.c

0 投票
1 回答
2339 浏览

makefile - clang++ 的静态分析器和 Makefiles

我最近发现了 clang++ 的静态分析器功能,它非常适合用细齿梳检查我的代码以发现潜在的错误。我只是在我的 Makefile 中取消注释这一行:

等等,我正处于深度错误检查模式。

然而,与此有关的一个小问题是,只要分析器在特定的 .cpp 文件中没有发现任何问题,就不会生成任何 .o 文件。

通常这没什么大不了的(我总是可以重新评论上面的行来构建一个实际的可执行文件),但通常当我看到分析器警告时,我想做的第一件事就是尝试解决潜在的问题然后重新运行make。

...这行得通,但是由于没有生成 .o 文件,因此 make 将从头开始重新分析所有 .cpp 文件,而不仅仅是自上次运行以来我实际修改的 .cpp 文件。这意味着我最终会花费大量时间重新检查未更改的 .cpp 文件。

我的问题是,有什么方法可以让静态分析器输出一个 .o 文件(它不必是有效的目标文件,只要是具有更新时间戳的任何文件),以便 Make 知道“干净” .cpp 文件不需要重新处理?(即使 Make 的工作方式与正常编译时相同)