Domanda

Quali sono i vantaggi dell'analisi statica del codice sul codice sorgente? Stavo giocando con FxCop e mi chiedevo se ci fossero dei benefici oltre ad assicurarmi di seguire gli standard di codifica.

È stato utile?

Soluzione

Ci sono tutti i tipi di vantaggi:

  1. Se ci sono anti-pattern nel tuo codice, puoi esserne avvisato.
  2. Esistono alcune metriche (come la complessità ciclomatica di McCabe) che dicono cose utili sul codice sorgente.
  3. Puoi anche ottenere grandi cose come grafici di chiamata e diagrammi di classe dall'analisi statica. Sono meravigliosi se stai attaccando a nuova base di codice.

Dai un'occhiata a SourceMonitor

Altri suggerimenti

Molte classi di perdite di memoria ed errori logici comuni possono essere rilevate anche staticamente. Puoi anche esaminare la complessità ciclomatica e simili, che possono far parte degli "standard di codifica". hai citato, ma potresti essere una metrica separata che usi per valutare l'algoritmo "pulizia". del tuo codice.

In ogni caso, solo una combinazione giudiziosa di profilazione (analisi dinamica o di runtime) e analisi statica / linting garantirà una base di codice coerente e affidabile. Oh, quello e un po 'di fortuna ;-)

È un compromesso. Per un singolo sviluppatore che vuole migliorare la sua comprensione del framework e delle linee guida, lo incoraggerei sicuramente. FxCop genera molto rumore / falsi positivi, ma ho anche riscontrato i seguenti vantaggi:

  • rileva bug (ad es. un avvertimento su un argomento inutilizzato può indicare che hai usato l'argomento sbagliato nel corpo del metodo).

  • comprendere le linee guida che FxCop sta seguendo ti aiuta a diventare uno sviluppatore migliore.

Tuttavia, con un team di abilità miste, FxCop potrebbe generare troppi falsi positivi per essere utile. Gli sviluppatori junior avranno difficoltà ad apprezzare se alcune delle violazioni più esoteriche sollevate da FxCop debbano riguardarle o siano solo rumore.

Linea di fondo:

  • Se stai sviluppando librerie di classi riutilizzabili, come un framework interno, assicurati di avere buoni sviluppatori e utilizzare FxCop.

  • Per lo sviluppo quotidiano di applicazioni con team di abilità miste, probabilmente non sarà praticabile.

in realtà, fxcop non ti aiuta particolarmente a seguire uno standard di codifica. Ciò che ti aiuta a progettare un framework / API ben ponderato. È vero che parti dello standard di codifica (come il case di membri pubblici) saranno catturati da FxCop, ma gli standard di codifica non sono al centro dell'attenzione.

gli standard di codifica possono essere verificati con stylecop , che controlla il codice sorgente anziché MSIL come fa fxcop.

Può rilevare veri e propri bug, come dimenticare di smaltire IDisposables.

Dipende dalle regole, ma possono essere evitati molti difetti sottili, il codice può essere pulito, i potenziali problemi di prestazioni possono essere rilevati ecc.

Detto in un modo ... se è economico o gratuito (sia in termini di tempo che di costi finanziari) e non rompe nulla, perché non usarlo?

FxCop

Esiste un elenco di tutti gli avvisi in FxCop . Puoi vedere che ci sono avvisi dalle seguenti aree:

  

Avvertenze di progettazione

     

Avvertenze che supportano la libreria corretta   design come specificato da .NET   Linee guida per la progettazione del framework.

     

Avvertimenti sulla globalizzazione

     

Avvertenze che supportano il mondo   librerie e applicazioni.

     

Avvertenze sull'interoperabilità

     

Avvertenze che supportano l'interazione con   Client COM.

     

Avvertenze sui nomi

     

Avvertenze che supportano l'aderenza al   convenzioni di denominazione di .NET   Linee guida per la progettazione del framework.

     

Avvertimenti sulle prestazioni

     

Avvertenze che supportano prestazioni elevate   librerie e applicazioni.

     

Avvisi di sicurezza

     

Avvisi che supportano librerie più sicure   e applicazioni.

A seconda dell'applicazione, alcune di queste aree potrebbero non essere molto interessanti, ma se ad es. necessita dell'interoperabilità COM, i test possono davvero aiutarti a evitare le insidie.

Altri strumenti

Altri strumenti di controllo statico possono aiutarti a rilevare bug come non eliminando un IDisposable , perdite di memoria e altri bug sottili. Per un caso estremo vedi strumento NStatic .

  

NStatic è usato per tracciare cose come parametri ridondanti, espressioni che valutano costanti, loop infiniti e molte altre metriche.

I vantaggi sono che puoi trovare e quantificare automaticamente il debito tecnico all'interno dell'applicazione software.

Trovo strumenti di analisi del codice statico indispensabili per lo sviluppo di applicazioni di grandi dimensioni in cui molti sviluppatori e tester vanno e vengono per tutta la vita di un'applicazione, ma la qualità del codice deve ancora essere mantenuta alta e il debito tecnico gestito correttamente.

Quali sono i vantaggi dell'analisi del codice statico sul tuo codice sorgente?

I vantaggi dipendono dal tipo di analisi del codice statico eseguita. L'analisi del codice statico può variare da tecniche semplici a sofisticate. Ad esempio, la generazione di metriche sul codice sorgente per identificare il codice soggetto a errori è una tecnica. Altre tecniche tentano attivamente di trovare bug nel tuo codice. Tecniche sofisticate utilizzano metodi formali per dimostrare che il tuo codice è privo di bug.

Pertanto il vantaggio dipende dal tipo di analisi del codice statico utilizzata. Se la tecnica produce metriche (come la complessità del codice ecc.), Un vantaggio è che queste metriche potrebbero essere utilizzate durante la revisione del codice per identificare il codice soggetto a errori. Se la tecnica rileva dei bug, il vantaggio è che lo sviluppatore può identificare i bug prima del test unitario. Se vengono utilizzate tecniche formali basate su metodi per dimostrare che il codice non contiene bug, il vantaggio è che queste informazioni potrebbero essere utilizzate per dimostrare al dipartimento QA (o autorità di certificazione) che il codice è privo di determinati tipi di bug.

Una descrizione più dettagliata delle tecniche e dei vantaggi è disponibile anche in questa pagina: www.mathworks.com / static-analysis

Proverò a descrivere quelli principali:

  • L'analisi del codice statico identifica i rilevamenti nel programma nelle prime fasi, con conseguente riduzione dei costi per risolverli.
  • Può rilevare difetti negli input e output del programma che non possono essere visti attraverso i test dinamici.
  • Esegue automaticamente la scansione di codici non compilati e identifica le vulnerabilità.
  • Di quello che so dalla gestione di checkmarx è che l'analisi del codice statico corregge più vulnerabilità in un unico punto, il che consente di risparmiare molto tempo per lo sviluppatore.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top