2012-01-10 6 views
5

Esistono strumenti gratuiti che consentono l'analisi statica incrementale del codice (per SVN e preferibilmente Git)? Attualmente stiamo usando Sonar (2.12 penso?) Ma il problema è il tempo necessario per analizzare tutto il codice nel nostro progetto che è 40-60 minuti. E dobbiamo moltiplicarlo poiché abbiamo diversi rami che lavorano su diversi sottoprogetti.Strumento per l'analisi statica incrementale del codice?

Ecco perché sto cercando uno strumento che possa analizzare il codice solo dall'ultimo commit (che, a mia conoscenza, Sonar non supporta) o solo il codice che è stato modificato nelle ultime X ore/giorni/qualunque cosa.

ho trovato il plugin Cutoff per il Sonar, che fa presumibilmente quello che voglio (controlli solo il codice dal file che sono stati modificati dopo una certa data), ma:

  1. ho ancora bisogno di verificare se funziona
  2. verificare se supporta le modifiche dinamiche della data (in modo da prendere in considerazione solo il codice dall'ultimo giorno e non quello che dovrei modificare manualmente la data di esclusione manualmente).
  3. non sembra essere ben supportato (ultima modifica nel 2010 ed è ancora in versione 0,1)

Sarebbe perfetto se controllato solo il codice dall'ultimo commit, ma mi rifugio' L'ho visto ovunque.

Anche come una domanda a parte: è in esecuzione l'analisi dopo ogni commit (cioè utilizzando il plugin hudson sonar) una buona cosa o dovrebbe essere evitato? Nel mio ultimo team abbiamo avuto un sonar simile a quello e avremmo ricevuto un'e-mail istantanea se "l'avessimo interrotta" (aggiunto un importante/critico al codice). Questo è stato molto comodo in quanto sapevamo chi era in colpa (in base alle informazioni del commit). O dovremmo invece analizzarlo meno frequentemente (diciamo una volta alla settimana)? In quel caso dovrei controllare se Sonar sarebbe in grado di dire chi ha commesso il codice problematico.

+0

stai cercando strumenti gratuiti? – kosa

+0

ah sì ho dimenticato di dirlo: deve essere gratuito. Non deve essere perfetto ovviamente, ma deve essere gratuito. –

risposta

3

Sono pochissimi, soprattutto perché ci sono molti strumenti/regole che si basano sul camminare le pile possibili per limitare il numero di falsi positivi. Quindi un cambiamento in un assemblaggio richiederebbe anche una rivalutazione degli assembly chiamanti, non è così semplice come sembra dall'esterno.

Per accelerare l'analisi statica, prendere in considerazione l'investimento in un disco di memoria o in un SSD per memorizzare i sorgenti e i file binari. Utilizzare un computer multi-core, avere molta memoria ed eseguire la versione x64 di questi strumenti quando possibile. Molti di questi strumenti sono il primo I/O e quindi la CPU limitata. La maggior parte dei miglioramenti può essere trovata riducendo la latenza e il throughput del sistema e la quantità di swap richiesto (avendo memoria sufficiente) per ridurre ulteriormente I/O.

È anche possibile utilizzare una build di buddy build/validate shelve set su un server di build per scaricare il tempo di compilazione su una macchina diversa che può essere condivisa tra gli sviluppatori.

+0

ah vorrei poter ottenere tutto/tutti gli ingranaggi di cui stai parlando :) Per ora devo soddisfare con una build giornaliera con il plugin di cutoff. Meglio di niente, immagino. –

+0

prova a riassumere ciò che stai perdendo non investendo in queste cose Sarai sorpreso di quanto velocemente puoi permetterti i miglioramenti con il tempo risparmiato. – jessehouwing

0

ci sono anche tali strumenti per l'analisi statica come:

  1. PMD
  2. Checkstyle
  3. FindBugs

alte probabilità che troverete è un'alternativa utile per il Sonar.

Non si è detto se si utilizza lo strumento di integrazione continua o no.Probabilmente ne avrai bisogno per poter eseguire ispezioni utilizzando uno di questi strumenti.

+0

Sì, stavamo usando tutti e 3 in precedenza, ma siamo passati al sonar che ora fa tutto il lavoro. Anche come CI stiamo usando Hudson. –

+0

Allora forse hai solo bisogno di ridurre il numero di ispezioni in corso? – altern

+0

Sì, ho già fatto 2 miglioramenti: innanzitutto non eseguo un lavoro separato con sonar in hudson, che prima costruiva l'intero stile CI dell'applicazione e poi lo faccio di nuovo per sonar, ma avvio una generazione di sonar subito dopo uno dei CSI. Quindi non devo eseguire test e analizzo solo i cambiamenti di latest. Il tutto è ora intorno ai 10 minuti e credo che otterrò un risultato ancora migliore. –

0

mi accorgo di essere in ritardo alla festa, ma c'è un altro strumento che potrebbero essere rilevanti per voi: Teamscale

Teamscale si connette al repository (ad esempio Git o SVN) e analizza il codice in modo incrementale, subito dopo ogni impegno. Con ciò, si ottiene un feedback sui problemi di codice nuovo/fisso quasi immediatamente dopo il commit. Puoi anche vedere la cronologia completa del tuo codice, i falsi positivi della blacklist e molto altro. (Full disclosure: Sono uno sviluppatore Teamscale)