99 votes

Analyseur pour C #

Quels analyseurs sont disponibles pour analyser le code C #?

Je recherche un analyseur C # qui puisse être utilisé en C # et me donne accès aux informations de ligne et de fichier relatives à chaque artefact du code analysé.

116voto

Julien Hoarau Points 23987

Travaux sur le code source:

Travaux de l'assemblée:

Le problème avec le montage "analyse", c'est que nous avons moins d'informations à propos de la ligne et le fichier (les informations sont basées sur .fichier pdb, et Pdb contient des lignes d'informations que pour les méthodes)

Personnellement, je recommande Mono.Cecil et NRefactory.

7voto

aku Points 54867

Mono (open source) inclut un compilateur C # (et bien sûr un analyseur)

6voto

zproxy Points 1508

Si vous allez compiler des assemblys C # v3.5 en .net:

 var cp = new Microsoft.CSharp.CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
 

http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx

5voto

prosseek Points 22637

Si vous connaissez ANTLR, vous pouvez utiliser la grammaire Antlr C # .

4voto

Dinis Cruz Points 1042

J'ai mis en place seulement ce que vous demandez (AST Analyse de code C#) à l' OWASP O2 Plate-forme de projet à l'aide de SharpDevelop AST Api.

Afin de rendre plus facile à consommer, j'ai écrit un rapide API qui expose un certain nombre d'éléments de code source (à l'aide des déclarations, des types, des méthodes, propriétés, domaines, commentaires) et est en mesure de réécrire l'original de code C# en C# et en VBNET.

Vous pouvez voir cette API en action sur cette O2 Xrègle fichier de script: ascx_View_SourceCode_AST.cs.o2 .

Par exemple, c'est la façon dont vous traitez un code source en C# texte et remplir un certain nombre de TreeViews & zones de texte:

    public void updateView(string sourceCode)
    {   
        var ast = new Ast_CSharp(sourceCode);
        ast_TreeView.show_Ast(ast);
        types_TreeView.show_List(ast.astDetails.Types, "Text");
        usingDeclarations_TreeView.show_List(ast.astDetails.UsingDeclarations,"Text");
        methods_TreeView.show_List(ast.astDetails.Methods,"Text");
        fields_TreeView.show_List(ast.astDetails.Fields,"Text");
        properties_TreeView.show_List(ast.astDetails.Properties,"Text");
        comments_TreeView.show_List(ast.astDetails.Comments,"Text");

        rewritenCSharpCode_SourceCodeEditor.setDocumentContents(ast.astDetails.CSharpCode, ".cs");
        rewritenVBNet_SourceCodeEditor.setDocumentContents(ast.astDetails.VBNetCode, ".vb");                                
    }

L'exemple sur ascx_View_SourceCode_AST.cs.o2 montre également comment vous pouvez ensuite utiliser les informations recueillies à partir de l'AST pour sélectionner le code source d'un type, la méthode, commentaire, etc..

Pour référence, voici le code de l'API qui a écrit (à noter que c'est mon premier passage à l'aide de SharpDevelop C# AST de l'analyseur, et j'ai toujours ma tête autour de la façon dont il fonctionne):

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X