使用外部Xcode Clang静态分析器二进制文件,包括额外的检查

3
我正在使用Xcode 3.2.4,并设置了Clang静态分析器功能,使用更新的二进制文件,详见此处:http://clang-analyzer.llvm.org/xcode.html (基本上使用set-xcode-analyzer命令行实用程序来更改Xcode用于“构建和分析”的静态分析器的副本。)
我无法弄清如何设置该二进制文件以使用其他检查,例如通过Xcode使用二进制文件时的-analyzer-check-objc-missing-dealloc,详见此处:http://loufranco.com/blog/files/scan-build-better-than-build-analyze.html和scan-build --help。
    AVAILABLE ANALYSES (multiple analyses may be specified):

 (+) -analyzer-check-dead-stores
     -analyzer-check-llvm-conventions
 (+) -analyzer-check-objc-mem
 (+) -analyzer-check-objc-methodsigs
     -analyzer-check-objc-missing-dealloc
 (+) -analyzer-check-objc-unused-ivars
 (+) -analyzer-check-security-syntactic

 NOTE: "(+)" indicates that an analysis is enabled by default unless one
       or more analysis options are specified

当通过Xcode使用二进制文件时,如何传递额外的选项?
2个回答

7

经过进一步调查,似乎最好的方法是使用目标构建信息中的几个条目,而不是使用set-xcode-analyzer命令行工具。

添加一个用户定义的设置,CC,包含二进制文件新版本的完整路径,如下所示(注意路径末尾的/bin/clang):

CC = /Path/To/Folder/With/Clang/checker-244/bin/clang

然后在其他警告标志的条目中,按照以下方式添加您想要的所有额外检查:

WARNING_CFLAGS = -Xanalyzer -analyzer-check-llvm-conventions -Xanalyzer -analyzer-check-objc-missing-dealloc

每个参数前面都有一个-Xanalyzer,表示下一个参数应该传递给分析器。
更多信息可以在这里找到:Mac OS X开发工具手册页面
然后,在Xcode中进行构建和分析时,您应该使用运行额外检查的外部新二进制文件。

我已经做了同样的事情。我的分析器现在正在工作。但问题是我收到一个错误-lgcc未找到....这是什么? - g.revolution
不知道是什么原因导致的,但经过大量的尝试,以下额外的配置设置似乎对我有效,阻止了该错误的出现: - creednmd
RUN_CLANG_STATIC_ANALYZER = NO GCC_VERSION = com.apple.compilers.llvm.clang.1_0.analyzer SDKROOT = iphonesimulator4.1 OTHER_CFLAGS = -D__IPHONE_OS_VERSION_MIN_REQUIRED=040100 - creednmd
我希望能把所有我的Karma都给你——这样就能轻松解决我在最新版本的Xcode和scan-build中遇到的一些问题,迫使 -nodistribute 成为它的xcodebuild的一部分。 - refulgentis

1

已经被接受的答案不再适用于Xcode 4。

Xcode构建文件的格式意味着您必须按照以下方式执行:

WARNING_CFLAGS = "-Xanalyzer -analyzer-check-llvm-conventions -analyzer-check-objc-missing-dealloc"

注意:整个XAnalyzer短语周围的引号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接