SONAR e DesignForExtensionCheck Rule

2

Quando si abilita SONAR su un progetto Java interno, viene segnalato un numero elevato di violazioni a causa della regola DesignForExtensionCheck . Mentre sono d'accordo con la teoria che tutte le classi / metodi dovrebbero essere marcate come Abstract, Final, ecc. Ma è strettamente necessario per un'applicazione interna in cui gli sviluppatori hanno pieno controllo sulla base del codice e sui test unitari, ecc.?

Un esempio è un oggetto valore a cui è richiesto che ogni getter / setter sia definitivo per superare questo controllo. Quando hai più di 500 segnalazioni di questo tipo è importante chiedere il retrofit del codice.

Alcune persone hanno affermato che Java ha alcuni difetti, e uno di questi è che le classi / i metodi non sono definitivi di default. Tenendo presente che non abbiamo il comportamento predefinito come comportamento predefinito, quanto dobbiamo davvero fare per dichiarare tutto come definitivo?

Nota: mi rendo conto che le API utilizzate da terze parti devono avere controlli più rigorosi. Questa domanda è livellata alle applicazioni interne.

    
posta Brad 14.12.2011 - 18:58
fonte

2 risposte

1

Abbiamo lo stesso problema nella nostra app precedente. Io ero quello che ha permesso questa regola all'inizio, ma non sono contento del risultato. Il fatto è che, molte classi e metodi non possiamo nemmeno dichiarare final , perché ciò renderebbe impossibile prenderli in giro nei test unitari. E li prendiamo in giro, perché alcuni di loro sono così aggrovigliati, non c'è altro modo per inizializzarli in un dispositivo di prova. (Usiamo EasyMock, per la cronaca, ma non sono a conoscenza di alcun framework di simulazione Java che possa fare questo trucco.)

Ad ogni modo, abbiamo molte più importanti violazioni delle regole riportate da Sonar, quindi non mi preoccupo molto di questo. Forse nel momento in cui sono stati risolti molti dei problemi più importanti, posso verificare quanti di questi avvertimenti possono essere eliminati realisticamente, quindi una volta terminati, disattiva questa regola.

    
risposta data 14.12.2011 - 21:12
fonte
0

Non è la prima regola che mi preoccuperei se hai un'app interna. Ricorda però che se qualche altra parte all'interno della tua organizzazione desidera utilizzare quell'app, devono essere ascoltati alcuni di questi avvisi.

Alcuni direbbero che gli avvertimenti dovrebbero essere ascoltati a prescindere, è stato causa di gravi problemi in PRD? In caso contrario, non sudare, concentrati sulle altre aree.

    
risposta data 14.12.2011 - 19:52
fonte

Leggi altre domande sui tag