CodeReview Sitzung -- ResourceModule

Datum:2004-06-04
Autor:onp

Ergebnis

Typ Wert
Dauer in Minuten 100
LOC (ueberschlagen) 671
Sekunden/Codezeile 8.942 sec/LOC
Gefundene Defekte 11
Defekte/Zeitstunde 6.6
Startpunkte CmsObject.readFile() and CmsObject.readFileHeader()

Ort:DriverManager.readPathInProject()
Beschreibung:Beim Lesen einer Datei werden alle uebergeordneten Verzeichnisse eingelesen und in einer Liste gespeichert (gecacht). Dies erschient ineffizient.
Perspektive:Leistungsverhalten
Alternative:Kompleten Pfad jeder Datei in der Datenbank speichern
Defekt:Kein Defekt

Ort:db.generic.CmsVfsDriver:1140
Beschreibung:Es wird eigentlich nur ein Ergebnis erwartet, aber es wird durch das gesamte gelieferte ResultSet iteriert. Es wird keine Meldung ausgegeben, sollte doch mal mehr als ein Ergebnis geliefert werden. Solch ein Fehler ließe sich nur schwer lokalisieren.
Perspektive:Wartbarkeit
Alternative:Fehlermeldung ausgeben, Ausnahem ausloesen
Defekt:Ja

Ort:db.generic.CmsVfsDriver:1152
Beschreibung:Ausnahme wird gefangen und gleich wieder ausgeloest.
Perspektive:Code-Guete, Ausnahmebehandlung
Alternative:Gar nicht erst fangen
Defekt:Ja

Ort:DriverManager
Beschreibung:Keine Dokumentation fuer DriverManager. Aufgabe und Einordnung im Gesamtsystem ist unbekannt.
Perspektive:Wartbarkeit, Dokumentation
Alternative:Dokumentation hinzufuegen
Defekt:Ja

Ort:CmsFile.setFullResourceName()
Beschreibung:CmsFile erlaubt das setzen des gesamten Pfadnames. Außerdem ist diese Methode public und sollte, wenn keine andere Moeglichkeit fuer das Setzen dieser Information zu finden ist, protected sein.
Perspektive:Code-Guete
Alternative:Andere Moeglichkeit finden fuer das Setzen des gesamten Pfades, oder setFullResourceName protected deklarieren.
Defekt:Kein Konsens

Ort:I_VfsDriver:403
Beschreibung:Ungewoehnliche Anordnung der Parameter im Vergleich zu anderen Methoden
Perspektive:Wartbarkeit, Benennung
Alternative:Anordnung aendern und konsisten halten
Defekt:Ja

Ort:DriverManager.readPathInProject():6276
Beschreibung:Wurzelverzeichnis wird zurueckgegeben, auch wenn ein leerer String uebergeben wird.
Perspektive:richtige Funktion und Logik
Alternative:Ausnahme ausloesen
Defekt:Ja

Ort:CmsPermissionSet
Beschreibung:Kein information-hiding, BitSets sind oeffentlich. Keine Funktionalitaet die ein PermissionSet gebrauchen koennte. Diese Datenstruktur ist in der vorhandenen Form nur ein Behaelter. Konstanten, die mit Zugriffsschutz zu tun haben sind nicht in dieser Klasse enthalten.
Perspektive:Code-Guete, Datenstrukturen
Alternative:Funktionen (z.B. fuer Vergleiche) hinzufuegen, Konstanten nach CmsPermissionSet verlegen. BitSets private deklarieren.
Defekt:Ja

Ort:Allgemein
Beschreibung:Allgemeine Ausnahmen werden ausgeloest anstatt spezieller Unterausnahmen
Perspektive:Benennung, Datentypen, Verstaendlichkeit, Ausnahme- und Randwertverhalten
Alternative:Spezielle Ausnahmen verwenden
Defekt:Ja

Ort:Allgemein
Beschreibung:Ausnahmemeldungen werden mit unverstaendlichen Fehlercodes versehen
Perspektive:Wartbarkeit, Verstaendlichkeit, Ausnahme- und Randwertverhalten
Alternative:Ausformulierte Ausnahmemeldungen verwenden mit angabe von Fehlerursachen, Ausloeser und/oder Beteiligten
Defekt:Ja

Ort:Allgemein
Beschreibung:Alle Konstanten werden in einem Interface gesammelt
Perspektive:Wartbarkeit, Verstaendlichkeit, Richtlinien
Alternative:Konstanten am Ort ihrer Hauptverwendung zu definieren
Defekt:Ja