2016-06-20 5 views
0

Omitted code blocks from clang AST for ObjectiveC을 해결 한 후 적절한 compile_commands.json과 함께 작은 Objective C .m 파일에서 시도해 보았습니다. 제대로하면 전체 구문 트리가 나타납니다. 이제파일 (xcodebuild) 대신 파일 레벨이 아닌 프로젝트 레벨 (iOS 앱)에서 clang 정적 검사기 실행

나는 그것이 내가 그때 그것은 나에게 오류를 제공 error: unknown argument: '-project'error: unable to handle compilation, expected exactly one compiler job in ''

실제로 그것을인가 clang-check -ast-dump /Users/xx/Desktop/iOSApplication/iOSApplication.xcodeproj를 실행하려고 전체 xcodebuild

[ 
    { 
    "directory" : "/Users/xx/Desktop/iOSApplication", 
    "command" : "xcodebuild clean build CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO -project /Users/xx/Desktop/iOSApplication/iOSApplication.xcodeproj/", 
    "file" : "iOSApplication.xcodeproj" 
    } 
] 

에서 실행하는 것이 가능 있는지 확인하기 위해 노력하고있어 전체 xcodeproject에 AST 기반 검사기를 실행할 수 있습니까? 또는 한 번에 하나씩 파일을 컴파일하는 방법은 무엇입니까?

답변

0

내가 http://docs.oclint.org/en/stable/guide/xcodebuild.html

그러나 여기이 가이드를 따라 compile_commands.json를 생성하기 위해 관리했습니다, 난 여전히 전체 프로젝트 내 RecursiveASTVisitor을 실행할 수 있도록하고 싶습니다. 또는 xcode 프로젝트를 전달하고 모든 소스 파일을 열거하면 아마 작동 할 수도 있습니다.

누군가는 RecursiveASTVisitor에 대한 매개 변수로 전체 xcodebuild 프로젝트를 전달하는 방법에 대한 아이디어가 있습니까?

는 지금은이 ./MyASTChecker ~/Desktop/directory/sample1.m처럼 내 ASTVisitor을 실행하는거야하지만 난 그게 ./MyASTChecker ~/Desktop/directory/sampleproject.xcodeproj

0

처럼 나는 그것을 스캔 빌드를 사용하여 컴파일시에있다 할 방법을 일을하고 싶습니다. 이것은 나를 위해 cmake/make 기반 프로젝트와 함께 작동합니다.

scan-build --use-analyzer=clang -enable-checker <checker_name> make 

은 메이크 파일을 읽고이 컴파일되어 각 파일에 지정된 검사를 실행하는 동안이 모든 것을 구축 할 것입니다. 당신은 단지 몇 가지 플래그 또는 특정 대상에 구축하려는 경우, 당신은이 작업을 수행 할 수 있습니다

scan-build --use-analyzer=clang -enable-checker <checker_name> make <build_options> 

을 당신이 대신 cmake 기반 프로젝트가있는 경우. 먼저 빌드 디렉토리에 메이크 파일을 생성 할 수 있습니다. 나는이 작업을 수행 :

cmake <path_to_cmakelists> -DCMAKE_CXX_COMPILER=c++-analyzer -DCMAKE_CC_COMPILER=ccc-analyzer 

위에서 스캔 빌드 다음이 컴파일하고 각각의 파일이 컴파일되는 동안 소스 파일에서 검사를 실행합니다.

난 단지 CMAKE/MAKE 이것을 시도했지만 같은 엑스 코드와 함께 작동합니다

:

scan-build --use-analyzer=clang -enable-checker <checker_name> xcodebuild 

과와 빌드 옵션 당신은에 대해 자세히 읽을 수

scan-build --use-analyzer=clang -enable-checker <checker_name> xcodebuild <build_options> 

스캔을 빌드 here

+0

이것은 clang 정적 분석기를 사용하기위한 것입니까? 전에 시도한 적이 있지만 지금은 RecursiveASTVisitor로 작업 중입니다. –

+0

내 재귀 AST 빌더의 경우 모든 파일 항목과 함께 compile_commands.json을 작성할 수 있습니다. '{{<파일 1에 대한 엔트리>, <파일 2에 대한 엔트리>,}]'이 json 파일을 자동 생성하기 위해 cmake를 CMAKE_EXPORT_COMPILE_COMMANDS 플래그와 함께 사용했습니다. 나는 xcode가 비슷한 것을 가질 것이라고 확신한다. –