10

Eclipse のすべての参照を検索する機能 ([検索] > [参照] > [ワークスペース] または [Ctrl-Shift-G]) をご存知ですか? どうすればそれをプログラムで実行できますか?

セキュリティ違反を監査する必要がある大規模なコードベースがあり、約 12 の条件を連鎖させる必要があります。

Java で大規模なプロジェクト (1 GB のソース ファイルがあります) を分析できるライブラリはありますか? 私が答える必要がある質問は次のとおりです。

  • インターフェイスのリストを渡し、それらのインターフェイスのすべての実装を見つけます
  • そのリストを検索して、セキュリティ ライブラリの呼び出しを探します
  • 上記のリストで参照されているすべてのメソッドを検索して、適切な承認ライブラリ呼び出しが行われたことを確認します。

私はこれを 1 日で手動で行うことができますが、作業を行うために素敵なスクリプトを作成するのに 2 時間を費やすことをお勧めします。

Eclipse が非常にうまく実行するこれらの一般的なタスクをスクリプト化するために使用できるライブラリのリードはありますか? 理想的には、それらをコマンドラインで実行したいので、繰り返し可能でスクリプト化できますが、明らかに得られるものを使用します.

4

2 に答える 2

0

6年後なので、これはおそらくあまり役​​に立ちません。多分それは他の誰かを助けるでしょう...

ここには、 SearchEngineなどを利用する便利な Eclipse JDT 検索メソッドがいくつかあります。例えば:

    /**
     * Collects the methods that access the specified member
     * @param element the field or method whose accessors are being determined
     * @param scope the elements being examined, e.g. this class or this package
     * @return the collection of methods that access the indicated member
     */
    public static Set<IMethod> calculateCallingMethods(
            IJavaElement element,
            IJavaSearchScope scope)
            throws CoreException {
        SearchEngine searchEngine = new SearchEngine();
        SearchParticipant[] participants =
            new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() };
        SearchPattern callingMethodPattern = SearchPattern.createPattern(
                element, REFERENCES);
        MethodCollector methodCollector = new MethodCollector();
        searchEngine.search(callingMethodPattern, participants, scope,
                methodCollector, null);
        Set<IMethod> callers = methodCollector.getResults();
        return callers;
}
于 2019-07-08T16:20:26.010 に答える