c++ cmake clang clang-static-analyzer

c++ - CMake add target para invocar el analizador de clang



clang-static-analyzer (2)

Encontre un camino:

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()

La combinación de los archivos plist de clang (que obtienen la extensión .o de esta manera) en un informe aún está abierta ( $<TARGET_OBJECTS:objlibtarget> ?).

Básicamente me gustaría lograr lo mismo que http://blog.alexrp.com/2013/09/26/clangs-static-analyzer-and-automake , pero con 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

Para que puedas correr

make analyze make clean

Supongo que necesito usar add_custom_command/add_custom_target y de alguna manera cambiar la extensión del "archivo de objeto" solo para ese objetivo.

Luego, obtenga una lista de los archivos generados para quizás pasarlos a un script para combinarlos en 1 archivo de salida.

¿Alguien puede señalarme en la dirección correcta?


Puedes usar scan-build cuando cmake .

scan-build cmake /path/to/source scan-build make

scan-build establece las variables de entorno CC y CXX que son recogidas por cmake .