Domanda

Al lavoro che stiamo utilizzando diversi strumenti per catturare diverse metriche (per lo più la complessità ciclomatica e lcom). Usiamo quelli per ottenere segnali di avvertimento e di guidare gli sforzi di refactoring di prelazione. E 'stato molto utile per aumentare la qualità del codice.

Tuttavia, il processo non è legata al processo di compilazione. Si è condotta separatamente. Inoltre, sto cercando qualcosa che può essere fatto intrinseco al codice sorgente (al contrario di un processo esterno corse su di esso.)

C'è qualcuno che è a conoscenza di un gruppo di annotazioni e processore configurabile annotazione (s) che può essere eseguito dal compilatore, e che renderà la costruzione fallire se il codice non è conforme alla soglia ciclomatica / lcom metriche?

Credo che avrei potuto correre ckjm, checkstyle e PMD da Maven / formica, ma alcuni lavori sul codice sorgente, e altri lavorare su bytecode. Sarebbe bello avere uno strumento consolidato che i lavori sul codice sorgente prima che inizi la compilazione.

L'altra cosa è che sarebbe stato bello se ci sono insiemi di annotazioni che potrebbero guidare questo (per consentire la personalizzazione che saranno inevitabilmente essere necessaria per i casi d'angolo.)

@LCOM3(Threshold=1.5)
public class SomeDumbPojo {... buch of gets/sets...}

// by default would be measured against a strict LCOM3
public class ActualBizClass
{
   @CYCLOMATIC_COMPLEXITY(Threshold=15)
   public void someFatIrreducibleMethod(){...}
}

Poi, quando si corre lo strumento, per impostazione predefinita si applica rigorosa (e configurabile) Soglia di metrica, tranne in quei manufatti che sono annotati con soglie (si spera documentato e legittimo) più rilassato. Per alcuni metodi che non possono / devono essere ridotte, una complessità ciclomatica rilassato ha un senso. Per POJO pianura w / o comportamento, LCOMs devono essere rilassato ... e così via e così via.

In cerca e googling quanto mi sforzassi, non sono stato in grado di trovare qualsiasi cosa (si spera open source). Ma potrei anche chiedere qui solo nel caso in cui qualcuno è a conoscenza di nulla del genere.

Grazie.

È stato utile?

Soluzione

  

Sarebbe bello avere uno strumento consolidato che i lavori sul codice sorgente prima della compilazione comincia.

Non sto abbastanza sicuro che cosa questo significa come il codice deve essere compilato in qualcosa in modo che l'analisi statica al lavoro. Tutti questi strumenti hanno bisogno di essere in grado di compilare il codice sia in bytecode o una sorta di albero di sintassi.

Vorrei suggerire mantenerlo semplice: configurare PMD a fallire se la build eventuali avvisi per la complessità ciclomatica o altre metriche superano una certa soglia. Invece di annotare il metodo con la complessità consentita (come si dovrebbe ricavare un valore accettato? Che cosa è per evitare che qualcuno che accidentily aumentato la complessità dal 12 al 15 per appena urtando l'annotazione), annotare per eliminare l'avviso completamente

@SuppressWarnings("PMD.CyclomaticComplexity")
public void someFatIrreducibleMethod() { ... }

E poi periodicamente è possibile cercare il codice di base per i metodi con avvisi repressi che si potrebbe desiderare di rimuovere e refactoring.

In alternativa, PMD ha il supporto per lasciare commenti nel codice in una certa sintassi per marcare che hanno rivisto l'avvertimento e quando, se si desidera fornire una sorta di tracciabilità.

Altri suggerimenti

Il SD Java metrica Calcola le metriche più strumento di base (non lcom ma certamente la complessità ciclomatica), e viene eseguito dalla riga di comando.

Si produce un file di output XML, con metriche dettagliate sui metodi e le sintesi di rollup per le gerarchie superiori che (classe, pacchetto, sottosistema). Utilizzando XLST (o awk o Perl o ...) Sarebbe molto facile da estrarre la metrica che si desidera per l'intero sommario o per un metodo individuale, e verificare contro la soglia.

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