Domanda

Stiamo usando CheckStyle per far rispettare i nostri standard di stile. Una delle regole di stile che abbiamo scelto di includere è stato il NeedBraces modulo.

NeedBraces specifica che ogni tipo di blocco economico ( come if, else, for) deve avere apertura parentesi graffe. Tuttavia, per quanto posso dire che non funziona del tutto correttamente.

In questo esempio attiverà un errore di CheckStyle.

    if (true)
    {
        System.out.println("20");   
    }
    else
        System.out.println("30");

Perché il caso altro non ha parentesi graffe. Tuttavia, il prossimo esempio non riesce a innescare un errore di CheckStyle.

    if (true)
    {
        System.out.println("20");   
    }
    else
        if (true)
        {
            System.out.println("30");
        }

Questo dovrebbe hanno fallito a causa delle parentesi mancanti sul caso altro, ma checkstyle lascia passare. Dopo doppia verifica della documentazione, non riesco a trovare alcun motivo per cui questo non funziona correttamente.

Quindi ... Il lavoro può il modulo CheckStyle "NeedBraces" con nidificato if / else blocchi? Tutte le idee?


La risposta a questa domanda chiede un'altra domanda : c'è una regola per contrassegnare il codice indesiderabile sopra come una violazione

?
È stato utile?

Soluzione

Credo che sta facendo un'eccezione, perché, anche se in formato strano, quello che hai è un "else if". Non dovrebbe costringere a mettere le parentesi intorno al "se" in questo caso perché si finirebbe con" ... else {if {...}}

Il codice dovrebbe essere formattato:

if (true)
{
    System.out.println("20");   
}
else if (true)
{
    System.out.println("30");
}

Altri suggerimenti

Nel tuo primo esempio, se si tenta di aggiungere un'altra dichiarazione sotto la altro blocco è necessario mettere tra parentesi graffe poi. D'altra parte, nel secondo esempio si aggiungerà l'istruzione all'interno del tutore. Credo che questo è il motivo per CheckStyle sta mostrando errore nel primo caso, perché il suo soggetto a errori. C'è una possibilità che si potrebbe endup aggiungendo dichiarazione senza bretelle green, quando si vuole veramente che, come parte di altro non al di fuori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top