2014-11-27 8 views
5

Ho cercato questo problema tramite Google ma risulta che non riesco a trovare un modo per risolvere questo problema. In realtà ho un classico metodo main in cui eseguo un lavoro, ma sonarqube continua a ripetermi che è stato trovato un metodo principale noncommesso.Come risolvere un metodo principale noncommesso?

Ecco il codice:

 /** 
    * 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); 
     } 
    } 

non vedo particolari problemi qui, in modo da dove viene questo problema viene? Hai idea di come posso risolvere questo problema?

Grazie.

+0

Questo metodo principale non sia commentata. Non vedo alcun problema. – robert

+0

Non capisco, come si commenta? – hacks4life

+0

Leggendo le risposte qui sotto, sembra che si tratti di un semplice fraintendimento della parola "commento". Come l'OP, l'ho inteso nel senso che il metodo dovrebbe avere un commento, non che dovrebbe essere commentato in modo che non possa essere eseguito – Stewart

risposta

6

Il metodo principale non controllato è un avviso CheckStyle che il metodo main() non è commentato. Non dovresti eseguire il debug/test dei metodi main() nel tuo codice.

è possibile escludere la classe punto di ingresso programma utilizzando qualcosa di simile:

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

Vedi anche http://checkstyle.sourceforge.net/config_misc.html#UncommentedMain

+0

Quindi vuoi dire che dovrei commentare tutto il metodo principale in modo che non possa essere eseguito? – hacks4life

+0

Dipende, è il principale() in questione un punto di ingresso del programma o un metodo di debug? Se è il punto di ingresso, puoi escluderlo dai controlli, vedi il mio aggiornamento. – Vlad

+0

Vedo. Dove metti quelle linee? Stai usando un file ant o qualcosa del genere? – hacks4life

3

Dal documentation:

Controlli per i principali metodi non commentate().

Motivazione: Un metodo main() viene spesso utilizzato a scopo di debug. Al termine del debug, gli sviluppatori di spesso dimenticano di rimuovere il metodo, che modifica l'API e aumenta la dimensione di la classe risultante o il file JAR. Ad eccezione dei punti di ingresso del programma reale, tutti i metodi devono essere rimossi o commentati dalle fonti.

+0

Cosa succede se il mio programma è davvero un punto di ingresso e ho ancora questo avviso? :) – Line

0

È possibile eliminare l'avviso con @SuppressWarnings:

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