Metrik auf API anwenden

gera1zt

Mitglied
Guten Tag,

ich steh vor folgender Aufgabe: Es soll ein Programm geschrieben werden welches Software auf Metrik testet, mein Part besteht darin zu überprüfen welche & wieviele Klassen und Methoden der Java API entstammen.

Hierzu kommen mir folgende fragen auf:
1.Wie integriere ich die Java API in mein Programm (Datenbanken sollen vermieden werden)
-kann ich das tool, die API im Internet durchecken lassen?
-oder als Text/Html Datei einbinden?
-wäre das überhaupt sinnvoll?
-gibt es noch andere Vorgehensweisen?
-oder sogar open source code der das realisiert?
2.Sollt ich den Check selber schreiben oder auf die vorhanden McCabe, Halstead und LoC Methoden, die von meinen Teammitgliedern geschrieben werden, zugreifen?

Das Projekt steht erst vor dem Start und es ist noch kein bischen code geschrieben, mir geht es jetzt erst ma darum das Projekt ein wenig zu strukturieren und mich ein wenig in mein Aufgabenfeld einzuarbeiten. Ich würde mich über eure Vorschläge freuen.
 

XHelp

Top Contributor
Was soll diese Metrik überhaupt aussagen?

(Datenbanken sollen vermieden werden)
warum?
-kann ich das tool, die API im Internet durchecken lassen?
Das Tool wird das durchsuchen, was du ihm sagst :bahnhof:
-oder als Text/Html Datei einbinden?
und dann jedes mal aufs neue parsen? Eher weniger sinnvoll
2.Sollt ich den Check selber schreiben oder auf die vorhanden McCabe, Halstead und LoC Methoden, die von meinen Teammitgliedern geschrieben werden, zugreifen?
In wie fern bedenkst du z.B. Anzahl der Codezeilen in deiner Metrik zu benutzen? Die Halstead-Metrik könntest du vllt etwas umbiegen, aber es kommt auf die jeweilige Implementierung an

Wie am Anfang schon angesprochen sehen ich da nicht wirklich den Sinn darin. Zumal es auch viele Momente sind, die man beachten sollte:

Java:
...
JButton button = new JButton();
button.setText("Test");
...
//und
class OwnButton extends JButton {
}
...
OwnButton button = new OwnButton();
button.setText("bla");
//und
class AnotherButton extends JButton {
  @Override
  public void setText(String s) {
    //mach nix
  }
}
...
AnotherButton button = new AnotherButton();
button.setText("bla");
//und
class SimpleClass {
  public void setText(String s) {
    //mach was
  }
}
...
SimpleClass button = new SimpleClass();
button.setText("bla");

Was zählst du jetzt zu den Aufrufen der API? Wenn man länger darüber nachdenkt gibt es mit Sicherheit auch andere Momente, die man betrachten sollte.
 
Zuletzt bearbeitet:

gera1zt

Mitglied
Es soll auf McCabe, Halstead, LoC,Wartbarkeit und halt die API überprüft werden.
Ich beschäftige mich dabei aber nur mit der API.
Die Tatsache das ich keine Datenbanken benutzen soll ist die einzige Vorgabe zzgl. das der Code in Java geschrieben werden soll.


Zu deinem Code ich weiß selber noch nicht ganz was er genau zählen oder überprüfen soll deswegen auch hier die Frage, werde das Lastenheft erst morgen erstellen, deswegen wollt ich mir hier ein paar Inspirationen einholen.

Nunja so wie du es dargestellt hast könnte ich somit eig. die direkten Aufrufe von Klassen aus der API zählen sowie die Vererbungen.

Jetzt wäre die Frage wie sinnvoll wäre es zu Zählen welche packages aufgerufen werden? oder sollte ich gar einfach nur sagen das x mal eine Methode oder Klasse aus der API aufgerufen wurde und/oder wie oft sie vererbt hat?
 

XHelp

Top Contributor
Wie du deine Metrik aufzubauen hast, kann ich dir leider nicht sagen. Frag nach was es darstellen soll.
Aber die Unterteilung in einzelne Klasse wäre vllt nicht ganz verkehrt: zusammenfassen kannst du es immer, aber so hast du eben mehr Informationen.
Außerdem solltest du dir noch gedanken machen wie du den Wert normierst: "2 API-Aufrufe" in HalloWelt oder "2 API-Aufrufe" in einem riesigem Projekt sind natürlich keine gleichen Aussagen.

Was die Datenbank angeht: du solltest dennoch die Daten preprozessieren und in einer vernünftigen Form halten, auch wenn das bei jedem Ausführen passiert.

P.S. Du hättest dich vllt doch für LoC melden sollen :p
 

gera1zt

Mitglied
LoC hab ich schon ma gemacht wäre keine Herrausforderung :p

Die Grösste Frage die sich mir stellt ist wie ich die API Integriere also in welcher Form.

Welche Möglichkeiten hätte ich da? (ausgenommen eine Datenbank)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A "Super" anwenden Java Basics - Anfänger-Themen 3
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
P Methoden richtig anwenden Java Basics - Anfänger-Themen 3
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
D kann man vor dem CSVRecord, replace Anweisung anwenden ? Java Basics - Anfänger-Themen 2
V Vererbung (wie) kann man eine 'super'-Methode auf ein Objekt anwenden ? Java Basics - Anfänger-Themen 6
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2
T Erste Schritte Methoden anwenden und erkennen Java Basics - Anfänger-Themen 5
I GroupLayout richtig anwenden Java Basics - Anfänger-Themen 4
S JProgressBar richtig anwenden Java Basics - Anfänger-Themen 27
Z Methoden Scanner Methode Anwenden Java Basics - Anfänger-Themen 4
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
M KeySet() anwenden Java Basics - Anfänger-Themen 15
D JUnit auf Matrix anwenden Java Basics - Anfänger-Themen 5
bastiann Kann man Inputstream nur auf ein Zeichen anwenden? Java Basics - Anfänger-Themen 5
M Methode richtig anwenden. Java Basics - Anfänger-Themen 5
P Methoden der Unterklasse in Oberklassen-Datentyp anwenden Java Basics - Anfänger-Themen 24
U Array.sort auf variable Array-Größe anwenden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben