Domanda

Di recente ho esaminato lo stile di controllo come parte di alcune ricerche sulle convenzioni di codifica standard. Anche se sembra perfettamente adatto a progetti nuovi di zecca, sembra avere un enorme ostacolo all'adozione per progetti già esistenti in quanto non sembra fornire un metodo per controllare solo il codice nuovo o modificato. Forse mi sbaglio?

Se si dispone di una base di codice che non ha mai avuto uno standard di codifica, potrebbe essere un enorme sforzo per ottenere l'intera base di codice in linea con uno standard tutto in una volta. Consentire che venga fatto in modo incrementale nel tempo man mano che il codice si evolve naturalmente sembra un approccio più ragionevole. Ma non sembra una possibilità con checkstyle.

Suppongo che questo dovrebbe essere un legame con un sistema di controllo del codice sorgente per essere possibile. È possibile con Checkstyle o esiste un altro strumento in grado di fornire questa funzionalità?

È stato utile?

Soluzione

Per quanto ne so, Checkstyle ha lo scopo di analizzare la fonte, senza considerare la sua storia o le sue revisioni.

Aggiungere quel tipo di funzionalità significa analisi dello stile di controllo degli script per alimentare con il sottoinsieme esatto di file che rappresentano il delta.

Ma è probabile che alcuni tipi di controlli non vadano a buon fine o manchino nella loro analisi, come duplicato controllo del codice .

Quindi, per quel tipo di analisi incrementale, non è solo necessario limitare l'insieme di fonti, ma anche l'insieme di regole che si desidera applicare, poiché alcune di queste regole hanno senso solo su tutte le fonti.


  

Quindi, perché non è possibile eseguire un controllo completo su ciascun file e quindi filtrare i risultati in base alle modifiche gestite dal sistema di controllo del codice sorgente? Esiste qualcosa del genere?

Per quanto ne so, in particolare con plugin come eclipse-cs per eclipse: analizzano un file, visualizzeranno tutti gli avvisi, anche se il controllo del codice sorgente indica che il file non è cambiato da una data revisione.

Solo uno script esterno sarebbe in grado di farlo:
Il principio è semplice (anche se potrebbe essere un po 'lento al momento dell'esecuzione):

  • per ogni file, fai una diff per verificare se sono state apportate modifiche
  • se sì,
    • esegui un svn blame per annotare le righe con il numero di revisione che conteneva l'ultima modifica.
    • Quindi analizza il file con checkstyle.
  • Lo script può quindi filtrare l'avvertimento per la riga attualmente in fase di modifica (o per tutte le righe modificate dopo una determinata revisione).

Altri suggerimenti

Abbiamo sviluppato un plugin Checkstyle per SCM-Manager , uno strumento per la gestione di repository git, sovversione e mercurial. Se attivato, è possibile verificare il codice sorgente impegnato rispetto alle regole Checkstyle. Se il controllo ha rilevato errori, il commit viene interrotto.

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