我正在尝试集成OCLint 0.13以检查基于ObjC的iOS项目中的lint违规。
根据this guide我在Xcode中创建了一个聚合目标,以运行xcodebuild clean build
,然后oclint-xcodebuild
生成compile_commands.json
。我能够从生成的clang
文件中运行compile_commands.json
命令。但是,在oclint-json-compilation-database
命令生成的html报告中,在处理NEORepos/Public/ResourceObservables/NEOAggregatedObservable.h
之类的文件时,我看到编译器错误,如 'NEOObservables/NEOObservable.h' file not found
,即使所述头文件存在于NEOObservables/Public/Observables/NEOObservable.h
。
如何摆脱这些阻止某些源文件的编译错误?
从compile_commands.json
运行clang命令会生成.o
文件,但OCLint似乎无法使用json文件进行编译。
我还尝试添加一些-I
包含路径,但它没有帮助。欢迎提出所有建议和指示。
这是一段(编辑过的)日志......
xcode_clean_build_command = xcodebuild -workspace'Neo.xcworkspace'-scheme'NeoSampleApp'-configuration'Debug'clean build -dry-run -derivedDataPath / Users / username / Documents / git / ios-neo_linter / build / Neo -sdk iphonesimulator CLANG_ENABLE_MODULE_DEBUGGING = NO CODE_SIGNING_ALLOWED = NO CODE_SIGN_IDENTITY =''CODE_SIGNING_REQUIRED = NO ENABLE_BITCODE = NO COMPILER_INDEX_STORE_ENABLE = NO | tee xcodebuild.log
...
/ oclint-xcodebuild联编
...
生成compile_commands.json ...
挑选NEORepos / Public / ResourceObservables / NEOAggregatedObservable.m 挑选NeoSampleApp / main.m
...
用于linting的入围文件(283中的2个)并创建新的compile_commands.json
...
编译/Users/username/Documents/git/ios-neo_linter/NEORepos/Public/ResourceObservables/NEOAggregatedObservable.m - 失败 编译/Users/username/Documents/git/ios-neo_linter/NeoSampleApp/main.m - 成功 分析/Users/username/Documents/git/ios-neo_linter/NeoSampleApp/main.m - 完成
...
生成lint报告(如果有的话)......
...
执行命令:oclint-json-compilation-database -e Pods -v - -list-enabled-rules -no-analytics -enable-global-analysis -verbose --report-type html -o oclint.html - 额外精氨酸= -Wno-一切
...
/ usr / local / bin / oclint -p / Users / username / Documents / git / ios-neo_linter -list-enabled-rules -no-analytics -enable-global-analysis -verbose --report-type html - o oclint.html -extra-arg = -Wno-everything /Users/username/Documents/git/ios-neo_linter/NEORepos/Public/ResourceObservables/NEOAggregatedObservable.m / Users / username / Documents / git / ios-neo_linter / NeoSampleApp /的main.m
答案 0 :(得分:0)
编译器错误是由于我使用的-dry-run
标志造成的。由于它正在进行干运行,因此没有创建所需的.hmap
个文件(至少不在正确的位置)导致<blah>.h file not found
错误。
然而,如果没有-dry-run
,我将不得不进行完全构建,这对我来说是不可接受的。如果我找到具有最佳性能的解决方案,将会更新。