2014-11-27 23 views
5

Szukałem tego problemu przez Google, ale okazało się, że nie mogę znaleźć sposobu na rozwiązanie tego problemu. Właściwie to mam klasyczną metodę main, w której prowadzę pracę, ale sonarqube ciągle mi powtarza, że ​​istnieje główna metoda Uncommented.Jak naprawić główną metodę Uncommented?

Oto kod:

 /** 
    * Main : Run MapReduce job 
    * 
    * @param args 
    *   arguments 
    */ 
    public static void main(String[] args) { 
     ExitManager exitManager = new ExitManager(); 
     // run job 
     if (!runJob(args)) { 
      exitManager.exit(1); 
     } 
    } 

nie widzę żadnego konkretnego problemu tutaj, więc skąd ten problem pochodzi? Czy masz pojęcie, jak to naprawić?

Dzięki.

+0

Ta metoda jest głównym komentarzem. Nie widzę żadnego problemu. – robert

+0

Nie rozumiem, jak to jest nieczytelne? – hacks4life

+0

Czytanie odpowiedzi poniżej, wydaje się, że jest to zwykłe niezrozumienie słowa "komentarz". Tak jak w przypadku OP, zrozumiałem, że metoda powinna mieć komentarz, a nie to, że powinna zostać skomentowana, aby nie mogła wykonać – Stewart

Odpowiedz

6

Odkomentowana główna metoda to ostrzeżenie CheckStyle, że metoda main() nie została zakomentowana. Nie powinieneś mieć w swoim kodzie metod debugowania/testowania main().

Można wykluczyć swoją klasę punkt wejścia programu przy użyciu coś jak:

<module name="UncommentedMain"> 
    <property name="excludedClasses" value="\.Main$"/> 
</module> 

Zobacz także http://checkstyle.sourceforge.net/config_misc.html#UncommentedMain

+0

To znaczy, że powinienem skomentować wszystkie główne metody, aby nie można było wykonać? – hacks4life

+0

Zależy od tego, czy dana metoda() jest punktem wejścia do programu lub debugowania? Jeśli jest to punkt wejścia, możesz go wykluczyć z czeków, zobacz moją aktualizację. – Vlad

+0

Rozumiem. Gdzie umieścisz te linie? Czy używasz pliku mrówki? – hacks4life

3

Z documentation:

Sprawdza odkomentowane main() metody.

Uzasadnienie: Metoda A main() jest często używana do celów debugowania. Po zakończeniu debugowania, programiści często zapominają o usunięciu metody, która zmienia interfejs API i zwiększa rozmiar pliku klasy lub pliku JAR o rozmiar . Z wyjątkiem rzeczywistych punktów wejścia programu, wszystkie metody powinny zostać usunięte lub skomentowane ze źródeł.

+0

Co jeśli mój program naprawdę jest punktem wejścia i nadal mam to ostrzeżenie? :) – Line

0

Można wyłączyć ostrzeżenie z @SuppressWarnings:

@SuppressWarnings("uncommentedmain") 
public class YourClass { 
    ...