由于无法找到#import-ed 头文件,OCLint 报告编译器错误
OCLint reports compiler errors due to its inability to find #import-ed header files
我正在尝试集成 OCLint 0.13 以检查我基于 ObjC 的 iOS 项目中的 lint 违规情况。
根据 this guide 我在 Xcode 中创建了一个聚合目标到 运行 一个 xcodebuild clean build
然后 oclint-xcodebuild
生成一个 compile_commands.json
.我能够从生成的 compile_commands.json
文件中 运行 clang
命令。但是,在 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
...
Generating the compile_commands.json ...
Picking NEORepos/Public/ResourceObservables/NEOAggregatedObservable.m
Picking NeoSampleApp/main.m
...
Shortlisted files for linting (2 out of 283) and creating a new compile_commands.json
...
Compiling /Users/username/Documents/git/ios-neo_linter/NEORepos/Public/ResourceObservables/NEOAggregatedObservable.m - Failed
Compiling /Users/username/Documents/git/ios-neo_linter/NeoSampleApp/main.m - Success
Analyzing /Users/username/Documents/git/ios-neo_linter/NeoSampleApp/main.m - Done
...
Generating lint report (if any)...
...
Executing command: oclint-json-compilation-database -e Pods -v -- -list-enabled-rules -no-analytics -enable-global-analysis -verbose --report-type html -o oclint.html -extra-arg=-Wno-everything
...
/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
编译器错误是由于我使用的 -dry-run
标志造成的。因为它是干 运行,所以它没有创建 .hmap
需要的文件(至少不在正确的位置)导致 <blah>.h file not found
错误。
但是,如果没有 -dry-run
,我将不得不进行完整构建,这对我来说是无法接受的。如果我找到具有最佳性能的解决方案,将会更新。
我正在尝试集成 OCLint 0.13 以检查我基于 ObjC 的 iOS 项目中的 lint 违规情况。
根据 this guide 我在 Xcode 中创建了一个聚合目标到 运行 一个 xcodebuild clean build
然后 oclint-xcodebuild
生成一个 compile_commands.json
.我能够从生成的 compile_commands.json
文件中 运行 clang
命令。但是,在 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
...
Generating the compile_commands.json ...
Picking NEORepos/Public/ResourceObservables/NEOAggregatedObservable.m Picking NeoSampleApp/main.m
...
Shortlisted files for linting (2 out of 283) and creating a new compile_commands.json
...
Compiling /Users/username/Documents/git/ios-neo_linter/NEORepos/Public/ResourceObservables/NEOAggregatedObservable.m - Failed Compiling /Users/username/Documents/git/ios-neo_linter/NeoSampleApp/main.m - Success Analyzing /Users/username/Documents/git/ios-neo_linter/NeoSampleApp/main.m - Done
...
Generating lint report (if any)...
...
Executing command: oclint-json-compilation-database -e Pods -v -- -list-enabled-rules -no-analytics -enable-global-analysis -verbose --report-type html -o oclint.html -extra-arg=-Wno-everything
...
/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
编译器错误是由于我使用的 -dry-run
标志造成的。因为它是干 运行,所以它没有创建 .hmap
需要的文件(至少不在正确的位置)导致 <blah>.h file not found
错误。
但是,如果没有 -dry-run
,我将不得不进行完整构建,这对我来说是无法接受的。如果我找到具有最佳性能的解决方案,将会更新。