myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Java] Programmstatistik (https://mygully.com/showthread.php?t=3163271)

Dante1253 12.01.14 10:38

[Java] Programmstatistik
 
Moin,
hatte ja schonmal nach einem Regex gefragt, habe ich mittlerweile anders hinbekommen.

Ich muss (für die Uni) ein kleines Skript schreiben, was einen JAVA-Code als Eingabe bekommt und dann darüber eine gewisse Statistik erstellen soll. Dazu gehört:
1) Anzahl if-elseif-else Konstrukte (habe ich)
2) Anzahl Schleifen (habe ich)
3) Anzahl Variablen (ggf. gruppiert nach Typ, das ist aber nicht nötig)
4) Anzahl an Methoden

Momentan gehe ich so vor, dass ein eingegebener Code zunächst wie folgt angepasst wird:
-> Kommentare werden entfernt
-> Mehrfache Leerzeichen, Zeilenumbrüche, Tabs werden zu je einem Leerzeichen
-> Ersetzen der Schlüsselworte if, else if, else, while, for, {, } durch bestimmte Token.
-> Splitten des Strings an den Leerzeichen in einen array.

Nun die Frage:
Hat einer eine Idee, wie ich die Variablen und die Methoden sinnvoll zählen kann?

Liebe Grüße & Danke!

NetWebs 12.01.14 11:44

Ideen genügend, aber keine Ahnung wie man dir helfen kann...

Was ist der unterschied zwischen "zählen" und "sinnvoll zählen"?
Zähl die Methoden und du hast die Anzahl.

Umsetzung eventuell via Parser und Visitor oder Regex...

Delta538 12.01.14 12:35

Code:

(public\s+|protected\s+|private\s+)?(final(\sstatic)?\s+|static\s+|abstract\s+|synchronized\s+)?[\w\<\>\[\]]+\s+(\w+) *\([^\)]*\) *(\{?|[^;])
Damit solltest du die Methoden rausfiltern können.

Dante1253 12.01.14 19:08

Zitat:

Zitat von NetWebs (Beitrag 25208526)
Was ist der unterschied zwischen "zählen" und "sinnvoll zählen"? Zähl die Methoden und du hast die Anzahl.

Zwischen "zählen" und "sinnvoll zählen" sehe ich zB den Unterschied, dass ich nicht 10 Sonderfälle abfangen will, wenn es auch direkter gehen würde... Regex nutze ich ja für if / if-else etc... mir fallen nur keine Regex für Variablen ein.

Parser / Visitor ist halt das Problem, dass sie Großteile der Funktion bereits liefern und somit verboten sind... und einen Parser selbstschreiben wirkt mir "etwas" überdimensioniert ;)

@Delta:
Super, vielen Dank, wird heute noch getestet :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.