問題タブ [oclint]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - #import されたヘッダー ファイルを検出できないため、OCLint がコンパイラ エラーを報告する
OCLint 0.13 を統合して、ObjC ベースの iOS プロジェクトで lint 違反をチェックしようとしています。
このガイドに従って、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
一部のソース ファイルが lint されるのを妨げているこれらのコンパイラ エラーを取り除くにはどうすればよいですか?
からclangコマンドを実行するとファイルがcompile_commands.json
生成され.o
ますが、OCLintはjsonファイルを使用してコンパイルできないようです。さらにいくつかのインクルード パスを追加しようとしました-I
が、役に立ちませんでした。すべての提案と指針を歓迎します。
これが(編集された)ログの一部です...
xcode_clean_build_command = xcodebuild -workspace 'Neo.xcworkspace' -scheme 'NeoSampleApp' -configuration 'Debug' クリーン ビルド -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 | ティー xcodebuild.log
...
/oclint-xcodebuild
...
compile_commands.json を生成しています ...
NEORepos/Public/ResourceObservables/NEOAggregatedObservable.m を選択 NeoSampleApp/main.m を選択
...
リンティング (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/ の分析に成功しましたユーザー名/ドキュメント/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 -extra-arg =-何もない
...
/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
objective-c - OCLint は html レポート ファイルでコンパイル エラーを受け取りましたが、プロジェクトのビルドは成功しました。どうして
xcodebuild -workspace ${myworkspace} -scheme ${myscheme} \
-sdk iphonesimulator \
-derivedDataPath ./build/derivedData \
-configuration Debug \
COMPILER_INDEX_STORE_ENABLE=NO \
| xcpretty -r json-compilation-database -o compile_commands.json
上記のコマンド ラインを実行してプロジェクトをビルドすると、ビルドは成功しますが、以下のコマンド ラインを実行して oclint html レポート ファイルを生成すると、15 個のコンパイラ エラーが発生します。
oclint-json-compilation-database -e Pods -- \
-extra-arg=-Wno-error=everything \
-report-type html \
-rc LONG_LINE=200 \
-rule MultipleUnaryOperator \
-max-priority-1=0 \
-max-priority-2=10 \
-max-priority-3=20 \
-o ./oclint_report.html
c++ - clang での VarDecl のマクロ展開の決定
私は C++ の初心者で、Clang を使用して Objective-C コードをリントしようとしています。ノードとプロパティがASTでアクセスされる前に、マクロが最初に展開されることを理解しています。
という名前のマクロがNIL_CHECK
あり、多数のファイルで使用されています。lint の実行中に、このマクロが展開/使用されている行の変数宣言をスキップしたいと考えています。
たとえば、この例の最初の行は lint する必要がありますが、2 行目はスキップして、マクロ展開があるときに誤検出がスローされないようにする必要があります。
次に示すのは、VisitVarDecl
適切な lint チェックを実行するために各変数宣言をトラバースするビジター メソッドです。
マクロを特定し、そのような変数宣言をスキップするにはどうすればよいですか?