Domanda

  • Usi analizzatori di codice sorgente? In tal caso, quali e per quale sviluppo del linguaggio?
  • Li trovi utili per risolvere potenziali bug nel tuo codice? O la maggior parte dei loro avvertimenti è banale?
  • Dopo un uso prolungato, trovi la qualità del tuo codice più alta di prima?
È stato utile?

Soluzione

Uso alcuni strumenti di analisi statica in Java. FindBugs è la prima linea di difesa, che rileva molti errori comuni e fornisce feedback piuttosto utili. Individua spesso gli sciocchi errori dei programmatori stanchi e non pone un grosso onere per l'utente.

PMD è utile per molti altri bug più difficili, ma richiede molta più configurazione. Scoprirai che le impostazioni predefinite dei PMD sono spesso esagerate. Ci sono troppe regole che sono probabilmente utili su piccola scala ma alla fine non aiutano altri programmatori a mantenere il tuo codice. Alcune delle regole di PMD spesso hanno l'ottimizzazione prematura.

Probabilmente più utile è il CPD in PMD. Tenta di trovare il codice che è stato duplicato altrove, al fine di rendere molto più semplice il refactoring. Esegui un intero progetto, questo aiuta davvero a determinare dove sono le maggiori priorità per la pulizia del codice e l'arresto di eventuali violazioni di DRY.

Checkstyle è anche utile, assicurandoti che i tuoi programmatori siano conformi ad alcuni standard di stile di codifica. ha un po 'di sovrapposizione con PMD ma è generalmente molto più utilizzabile.

Infine, Cobertura è un'ottima suite per la copertura dei test. Molto utile per scoprire dove mancano i test unitari e dove si dovrebbe dare la priorità alla creazione di nuovi test.

Oh, e ho anche provato Jester . Sembra essere abbastanza buono per trovare buchi nei test, anche se il codice ha una certa copertura. Non ancora consigliato, semplicemente perché non l'ho usato abbastanza, ma uno per testarlo.

Eseguo questi strumenti sia da Eclipse sia come parte di una suite di build automatizzata.

Altri suggerimenti

Per C, utilizzo MEMWATCH . È davvero facile da usare e gratuito.

L'ho usato per trovare molti bug di memoria in passato.

Ho usato resharper e MS TS (sostanzialmente FXCop) ed entrambi abbastanza utili soprattutto nelle seguenti aree:

  • Identificazione del codice morto
  • Wide Scope
  • Miglioramenti delle prestazioni (relativi alla globalizzazione ecc.)

I consigli non sono sempre eccezionali, ma generalmente migliorano la qualità del codice.

Sono un utente a lungo termine di PC-Lint per C e C ++ e lo trovo molto utile . Questi strumenti sono molto utili quando si acquisisce una base di codice con cui non si ha familiarità. Nel corso del tempo hai raggiunto una legge di rendimenti decrescenti, in cui il numero di nuovi bug che trovi tende a scappare.

Sono sempre alla ricerca di un progetto completo su una grande versione.

Modifica: c'è un bel elenco di strumenti pertinenti su Wikipedia qui

Sono abbastanza contento di ReSharper . Non solo fornisce utili informazioni durante la codifica (ad es. Cast inutili, si applicano in sola lettura e così via) ma le sue caratteristiche di refactoring sono eccellenti per riorganizzare il codice molto rapidamente.

Non copre tutto, quindi FxCop (o simile) è un'aggiunta decente alla casella degli strumenti. Tuttavia, poiché Resharper fornisce un feedback immediato, i tempi di risposta sono davvero buoni. (Sono consapevole che FxCop può essere eseguito da VS, ma non è lo stesso imo).

Trovo gli analizzatori piuttosto utili, uso buildin per visual studio (es. / analizza per c / c ++ e le regole personalizzate per .net), ogni tanto uso stylecop e codeitright per c # principalmente per linee guida su come dovrebbero essere le cose.

Non penso che ci sia uno strumento perfetto per tutto, che trova tutti i bug, ma penso che gli strumenti aiutino a trovare alcuni bug, non irrintracciabili, ma credetemi passereste un sacco di tempo a trovarli.

Sì, la qualità del tuo codice è QUALCOSA migliore di prima, ma credo anche che il debug manuale sia ancora necessario molto. Gli analizzatori di sorgente non sono la cura definitiva, ma sono comunque una buona medicina. Se esistesse uno strumento per eseguirlo e trovare qualsiasi tipo di bug e risolverlo per te costerebbe milioni.

Alcuni programmatori che conosco giuro che IBM Rational PurifyPlus è eccezionale, ma questa è la loro opinione che ho avuto solo 2-3 sessioni con lo strumento.

Ma ricorda sempre che uno dei principi di base della programmazione degli errori logici è il più difficile da trovare e correggere, quindi lunghe ore di debug sono inevitabili. Un buon analizzatore di codice combinato con test unitari può fare miracoli.

PS. tendo a produrre molti meno errori in C # che in C ++, qualcuno potrebbe dire che mi sbaglio, ma sebbene io usi c ++ più anni di c # trovo il "codice e mi occuperò di esso" L'approccio gc di C # è molto più semplice di c ++ specialmente per i progetti che hai fretta di finire al termine / scadenza, che OGNI progetto è come al giorno d'oggi ...

Uso StyleCop per C #. È un ottimo strumento per mantenere uno stile di codice coerente che porta a una migliore qualità del codice. Inoltre ReSharper esegue alcune analisi del codice ma è piuttosto semplice.

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