Esistono API opensource che aiutano a analizzare il codice?

7

Ad esempio, supponiamo di dover controllare un certo uso del codice C # e avvisare l'utente che si tratta di una cattiva pratica. Esistono più usi che desidero rilevare, ad esempio:

  • Risorsa non rilasciata dallo sviluppatore (in un ambiente COM pesante)
  • L'istanza deve essere creata utilizzando Activator anziché new (non ho il controllo dell'API che sto analizzando)
  • Altro

L'implementazione dell'API può essere in qualsiasi lingua, ma analizzerò principalmente c # e vb.net.

Lingue adatte:

  • C #
  • Python
  • Altro
posta George Silva 17.01.2012 - 14:00
fonte

2 risposte

12

Non è necessario reinventare la ruota. StyleCop lo fa già.

Permette anche le regole dell'utente tramite l'API di estensione. Ad esempio, rilevare l'utilizzo dell'Attivatore dovrebbe essere piuttosto semplice da fare (tuttavia rilevare l'utilizzo legittimo di Activator può essere un'attività non banale, ma ciò si applicherebbe a qualsiasi soluzione di analisi del codice).

C'è anche ReSharper che (oltre ad essere estensibile da solo in un modo simile) può integrare StyleCop direttamente in Visual Studio, quindi l'analisi può essere eseguita in quanto il programmatore digita il codice senza dover avviare manualmente uno strumento separato per verificare le convenzioni.

Naturalmente StyleCop può anche essere lanciato da solo tramite GUI o dalla riga di comando (quindi l'integrazione in qualsiasi sistema di compilazione / elemento di configurazione che si sta utilizzando è possibile).

    
risposta data 17.01.2012 - 14:04
fonte
8

La risposta di Matěj Zábský potrebbe essere ciò che stai cercando, ma per rispondere alla tua domanda potresti dare un'occhiata a il nuovo progetto Microsoft Roslyn . È un'API pubblica che consente l'analisi del codice C #.

More importantly, we are opening up the C# and Visual Basic compilers and exposing all that rich information and code analysis to be available for your use. We expose a public API surface and provide extension points in the C# and VB language services.

This opens up new opportunities for VS extenders to write powerful refactorings and language analysis tools, as well as allow anyone to incorporate our parsers, semantic engines, code generators and scripting in their own applications.

    
risposta data 17.01.2012 - 14:43
fonte

Leggi altre domande sui tag