# Klassen eines Projekts zählen



## Bonsai (17. Jul 2012)

Hallo,

ich schreibe gerade an einem Plugin, welches Java-Klassen analysiert. nun möchte ich gern, bevor die Analyse los geht zählen wie viel Klassen jedes Project hat. kann mir da zufällig jemand helfen?

Viele Grüße
Bonsai


----------



## kama (17. Jul 2012)

Hi,

Projekt zum lernen oder ernsthaft ? 

JavaNCSS Maven Plugin - Introduction

Gruß
Karl-Heinz Marbaise


----------



## Bonsai (17. Jul 2012)

sowohl als auch. Da ich das noch nie gemacht habe würde es unter dem Aspekt lernen laufen. es soll aber für ein ernsthaftes Projekt sein. Ich wollte da jetzt eigentlich nicht extra noch ein Plugin für installieren. Geht das nicht auch so irgendwie?


----------



## kama (17. Jul 2012)

Hi,

sorry da hatten wir wohl ein Misverständnis...Ich wollte Dich darauf hinweisen, wie JAVANCSS das macht nicht das Plugin selbst...

JavaNCSS - A Source Measurement Suite for Java

Gruß
Karl-Heinz Marbaise


----------



## Bonsai (17. Jul 2012)

hast du zufällig ein konkretes beispiel dazu aus dem javancss? weil ich hab ehrlich gesagt gerade zu viel um die ohren um mir das komplette teil durchzulesen.


----------



## Swoop (17. Jul 2012)

Für jede Klasse wird doch eine .java-Datei angelegt !
Zähl doch einfach die?


----------



## fifo (17. Jul 2012)

Was ist mit inneren Klassen, für die wird keine .java Datei angelegt.


----------



## Marco13 (17. Jul 2012)

Die .class-Dateien könnte man zählen ... (das ist aber wohl nicht gesucht...)


----------



## Spacerat (18. Jul 2012)

Das könnte schwierig werden.
1. Class-Dateien sind erst verfügbar, wenn ein Projekt das erste mal kompiliert wurde.
2. Java-Dateien können durchaus mehrere Klassen (jedoch nur eine öffentliche) definieren. Das Problem mit inneren und anonymen Klassen kommt hier noch erschwerend hinzu.

So ein Feature wäre ja auch eigentlich Sache der Entwicklungsumgebung, deswegen frage ich mich, ob NCSS dafür so eine tolle Idee ist, wenn man trotzdem noch ein Plugin für seine IDE benötigt (which usually doesn' t exist ).
PlugIns (bzw. ganze Plugin-Systeme) schreibt man normalerweise ja auch für eine bestimmte Zielumgebung. Für ein derartiges Vorhaben würde ich mir deswegen zunächst erstmal die Ressourcen und sich daraus bietende Möglichkeiten der Zielumgebung ansehen.
Für mich wären dafür also z.B. der Package- oder der Project-Explorer und das PI-System von Eclipse interessant. Mein PlugIn käme dann ohne weitere Libs aus, wäre aber nur in Eclipse lauffähig.


----------



## Bonsai (18. Jul 2012)

@spacerat hättest du dafür irgendwie nen Beispiel, da ich wie gesagt das zum ersten mal mach und noch nicht so recht weiß wie ich an das auslesen der packages oder projects ran gehen soll. Un an sich soll das auch nur in Eclipse laufen.


----------



## Spacerat (18. Jul 2012)

Wie gross sind denn deine Kenntnisse in Eclipse-PlungIn-Entwicklung? Meine sind da leider noch relativ am Anfang. Hiermit brauch' ich dich wohl nicht mehr belasten, denk' ich.
Wenn du das durch hast, hast du mit Sicherheit auch eine Möglichkeit, an die IViewRegistry ranzukommen, um diese nach dem Projekt- bzw. Package-Explorer zu durchsuchen und dir eine Instanz davon zu besorgen. Einer von beiden dürfte dann auch wissen, welche Dateien zu dem Projekt gehören und vor allem, welche, und damit auch wieviele, Klassen er daraus bilden muss, damit das Projekt funktioniert.
Beispiele habe ich leider nicht. Das einzige, was mir in diesem Forum auffällt, ist, das Wildcard immer sehr viel zum Thema Eclipse bringt. Evtl. fragst du ihn mal.


----------



## Bonsai (18. Jul 2012)

ok werd ich mal schauen. vielleicht find ich da was. nja meine Kenntnisse bei Eclipse Plugin Programmierung sind jetzt auch noch nicht so groß. bin da an sich auch grad am anfang. Werd ihn mal anschreiben und schauen was er dazu sagt


----------



## Wildcard (23. Aug 2012)

Ein Java Projekt (also ein Projekt mit Java Nature) hat ein zugehöriges JavaModel. Über dieses JavaModel kommst du an alle enthaltenen CompilationUnits (Klassen) heran.
Das ist also wirklich nicht weiter schwer. Dein Plugin muss nur eine Abhängigkeit auf jdt.core im Manifest angeben und dann kannst du über die statischen Methoden in JavaCore auf das JavaProject zugreifen.

```
IJavaProject javaProject = JavaCore.create(project);
```
Das hier wird mit neueren Eclipse Versionen vermutlich nicht mehr funktionieren, aber dort kannst du dir Beispiel Code anschauen.


----------

