我基本上喜欢和http://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automake一样,但是使用CMake。
analyze_srcs = foo.c
analyze_plists = $(analyze_srcs:%.c=%.plist)
CLEANFILES = $(analyze_plists)
$(analyze_plists): %.plist: %.c
@echo " CCSA " $@
@$(COMPILE) --analyze $< -o $@
analyze: $(analyze_plists)
.PHONY: analyze
所以你可以运行
make analyze
make clean
我想我需要使用add_custom_command/add_custom_target
并以某种方式更改仅针对该目标的“目标文件”扩展名。
然后获取生成文件的列表,或者将它们传递给脚本,将它们组合成1个输出文件。
有人能指出我正确的方向吗?
答案 0 :(得分:23)
运行scan-build
时,您可以使用cmake
。
scan-build cmake /path/to/source
scan-build make
scan-build
设置由CC
选取的CXX
和cmake
个环境变量。
答案 1 :(得分:4)
我找到了一种方法:
function(add_clang_static_analysis target)
get_target_property(SRCs ${target} SOURCES)
add_library(${target}_analyze OBJECT EXCLUDE_FROM_ALL ${SRCs})
set_target_properties(${target}_analyze PROPERTIES
COMPILE_OPTIONS "--analyze"
EXCLUDE_FROM_DEFAULT_BUILD true)
endfunction()
将clang的plist文件(以这种方式获得扩展名。)合并到一个报告中仍然是开放的($<TARGET_OBJECTS:objlibtarget>
?)。