Q (tldr;):JavaScanner
in を使用して、特定の文字列をパラメーターとして指定した特定の関数呼び出しが try/catch ブロックで囲まれているかどうかを確認するにはandroid-lint
どうすればよいですか。
詳細: 公式サイトの android-lint チュートリアルを完了し、既存の .xml ファイルのソースを確認しましたlint-checks
。ただし、この AST ベースの JavaScanner の解析のワークフローを把握できないようです。私が達成しようとしているのは、特定のプロパティを設定する関数をキャッチし、それを try/catch ブロックで囲むことです。例えば:
MyPropertySettings.set("SOME_PROPERTY", "SOME_VAL");
lint ルールをトリガーするべきではありませんが、次のようになります。
MyPropertySettings.set("SOME_SENSITIVE_PROPERTY", "SOME_VAL");
でtry/catchブロックに囲まれていないためSetPropertyException
です。関数自体に try/catch を導入したくありません。これは、非常にまれなケースでのみ例外をスローするためです (関数の内部はリフレクション モジョに基づいています)。
この質問については、ワークフロー/ヒントでも問題ありません。最初の数ステップを踏むことができれば、もっとよく理解できるかもしれません。
アップデート:
set
さらに調査した結果、上記の関数を設定し、getApplicableMethodNames()
その関数のプロパティを何らかの方法で読み取って、チェックが適用されるかどうかを判断する必要があることがわかりました。その部分は簡単なはずです。
try/catch を囲むのはより難しく、「フロー分析」を行う必要があると思います。質問は今どうですか。