0

私は現在、多くのmainメソッドを持つJavaプロジェクトで作業しています。さて、私はすべてのmainメソッドに影響するいくつかのリファクタリングを行います。しかしながら、mainメソッドのいくつかは、実際には他のメソッドから直接呼び出されます。私はこれが悪いスタイルだと思って、実際にはリファクタリングを難しくしています。したがって、mainメソッドが呼び出されたすべての場所を識別できるようにしたいと考えています。現在、IDEツールを使用してmainメソッドへの参照をすべて検索していますが、これは面倒ですが、mainメソッドの1つについてこれをチェックするのを忘れることは簡単です。警告:メインメソッドを直接呼び出さないでください

mainメソッドが直接呼び出されるたびに警告を生成するcheckstyleルールまたはEclipseコンパイラの警告設定があるかどうかは、私の質問です。私は1つを見つけることができませんでした。あなたは、人々がさまざまな方法で「メイン」のメソッドをフォーマットしている可能性があること、そしてあなたは、「パターンマッチング」を使用するときに、それらのいくつかを逃すことが懸念されている場合

+2

これはトピックではありません(ツールなどを質問する質問)が、メインを検索してリファクタリングするのはなぜ難しいのですか? –

+0

@RC。あなたは正しいです。質問を編集しました。文字列検索は、メソッド呼び出しを見つけるための適切なツールではありません。これは、静的コード分析のためのものです。テキストを検索すると混乱する書式設定を含む呼び出しが不足する可能性があります。 –

+0

@RC。 –

答えて

0

@Jeutnargはコメントで示唆したように:

[...]あなたは、EclipseのJavaの検索を使用することができます。 'main'を検索し、プロジェクトのスコープを指定して 'ソース'で検索して '参照'に制限して 'メソッド'を検索します。

これは私がやったことであり、実際には予想よりもはるかに優れていました。

1

...

でした「てjavap -public MyClass.class "はあなたのために機能しますか?この「メイン」は、別の主要 'を呼び出している場合

Compiled from "Main1.java" 
    public class Main1 { 
     public Main1(); 
     public static void main(java.lang.String[]); 
    } 

確かに、それは、それを「検出」しません:私はそれをしようとしたとき...

public class Main1 { 
     public 
    static 
        void 
    main 
    (
        String 
    [] 
    args 
        ) 
    { 
      System.out.println("Main1: Hello World"); 
     } 
    } 

それは次のような出力を生成しましたすべての主要なものを見つけるだけで役に立ちます。

ポスト由来出典:Java Program to disassemble Java Byte Code

+0

私は考えが好きです。 'javap'の出力はかなり標準化されているので、テキスト検索はいくつかのオカレンスを見逃してはいけません。しかし、メソッド呼び出しのためにそれを検索することが可能な場合にのみ、本当に役に立ちます。私はこれを調べます。 –

関連する問題