| 

.NET C# Java Javascript Exception

5
Hallo Zusammen,

ich stehe vor folgendem Problem und Google konnte mir bisher nicht wirklich helfen.
Ich möchte aus einer oder mehreren Klassen alle "public" Methode in eine Liste respektive Excel exportieren. Dabei sollte diese die Spalten "Klasse" "Methode" besitzen.

Kennt hierzu jemand eine Funktion in Visual Studio (2010) oder ein kostenloses Tool?

Ich bedanke mich mal für die Vorschläge.
visual-studio excel exportieren methode public
21.05.2012
CodeKiller 41 3
3 Beiträge
2
Die VS-Editionen oberhalb von Professional haben ein Code-Metriken-Tool dabei inklusive Excel-Export. Das liefert Dir die gewünschte Liste als Nebenprodukt - Du mußt nur auf public Methoden filtern und die eigentlichen Werte der Metriken ignorieren.

Wer "nur" die Professional-Version hat, für den gibt es die Grundfunktionalität als Visual Studio Code Metrics PowerTool 10.0. Das Ausgabeformat ist dann XML, aber daraus eine Liste zu erzeugen, ist dann kein großes Problem mehr.
21.05.2012
Matthias Hlawatsch 13,2k 4 9
+1. Diese PowerTools kannte ich noch gar nicht und damit einen Export zu machen, ist ne gute Idee, die schnell zum Ziel führt.
ffordermaier 22.05.2012
0
Versuchs mal mit Roslyn aus dem MS Research.
Das Ganze gibts zwar erst in einer CTP, kann Dein Problem aber sicher lösen. Und macht dazu noch mächtig Spass.
Roslyn ist ein MS Research Projekt, das uns in Zukunft die Funktionalität ders C# und VB.NET Compilers über eine API zur Verfügung stellen wird.
Das Extrahieren von "public methods" ist kein Problem. Seine Stärken liegen aber eher in Codeanalyse (Metriken, ...) und -transformation (z.B. für Refactorings).
Ich habe mich schon etwas damit beschäftigt und es ist wirklich ein sehr vielversprechendes Projekt.
Auch wenn ich an Deiner Stelle eher Matthias Vorschlag folgen würde, so lohnt es sich definitiv, einen Blick auf Roslyn zu werfen. (merkt man mir meine Begeisterung eigentlich an? ;)
22.05.2012
ffordermaier 8,4k 2 9
0
schreib dir das Tool doch selber:

static void Main(string[] args)
{
using (var csvStream = new StreamWriter("export.csv"))
{
ExportPublicMethods(typeof(System.String), csvStream);
}
}


static void ExportPublicMethods(Type type, TextWriter csvStream)
{
foreach (var method in type.GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance).OrderBy(m => m.Name))
{
csvStream.WriteLine(type.Name + "," + method.Name);
}
}
24.05.2012
kleffel 624 8
Hallo kleffel,
vielen Dank zunächst für das Code Snippet. Leider erhalte ich auf diese Art und Weiße nicht nur die Public Methods, sondern auch alle Get/Set Implementierungen sowie alle Events von Forms. Auch diese, die ich nicht einmal Benutzer.

Ich versuche derzeit weitere Eigenschaften meiner "eigenen" Methoden zu finden. Bisher leider ohne Erfolg.

Hast du eine Idee?

Grüße
CodeKiller
CodeKiller 25.06.2012
Auf die Schnelle nicht. Muss aber irgendwie über die Binding-Flags eingrenzbar sein. Mit deinen "eigenen" meinst du wohl BindingFlags.DeclaredOnly
Die Properties kann man ja ggf. über Namenskonvention get_ und set_ abfangen
kleffel 05.07.2012

Stelle deine Visual-studio-Frage jetzt!