Roadmap to Open Code Quality Management
13 Aug
Gibt’s dann hier:
Okok, es fehlt noch eine anständige Doku, ein Error-Handling, ein kleines xquery zu Aggregierung pro Verzeichnis, ein vernünftiges default Attribut-Set, so das eigentlich nur <xsdmetrix/> reichen sollte uvm. Aber wie schon gesagt: Das ist ja erst der Anfang
16 Jul
… the code watchs you. Hey, Big Brother what’s about your Code Review:
Und hier die Shownotes zur Session.
8 Jul
Ein Opensource-Metrik-Tool für XML-Derivate zu finden ist garnicht mal so einfach. Die normalen LOC-Tools sind hier ziemlich obsolet, die Syntax ist durch DTD und XSD jedoch ziemlich klar. Besser als bei fast allen Sprachen, gibt es absolut eindeutige Delimeter für Elemente und Attribute, die auch geschachtelt und verwinkelt sein dürfen. Eine DTD an sich jedoch ist eher veraltet, a) weil zu wenig Leistungsfähig und b) weil selbst nicht in XML formulierbar. Bleibt also als Datenmodell für XML-Instanzen die XML-Schema-Definition, also kurz XSD. RelaxNG lasse ich hier der Einfachheit mal aussen vor, James Clark mag es mir verzeihen.
Leider gibt es ein “Just A Simple Tag Counter” oder ähnliches nicht als Opensource, oder zumindestens habe ich keines gefunden. Und auch die Universitäre-Forschung versucht eher den McCabe-Ansatz den XML-Modeldefinitionen über zu stülpen. Für statitische Model-Definitionen ist ein McCabe-Komplexität einfach fehl am Platz, weil der gute McCabe die Verzweigungspfade in Entscheidungslogiken messen will, und nicht die Vererbungstiefe und -breite von Metamodellen. Tja, wenn die OpenSource nix hat, die Professoren noch im falschen Film sind, bleibt wohl nichts anderes übrig als selber in die Tasten zu greifen. Gesagt getan.
Ziele:
1) Zähle einfach mal alles, was es so an einer Schema-Datei so zu zählen gibt, vergiss LOC.
2) Zähle alle globalen Elemente, Complex-Types, Attributes etc.
3) Zähle alle Annotations, vor allem die, die global sind.
4) Bring das Gezählte schonmal in Relation zu einander.
Global heißt hier alles, was direkt unterhalb von <xsd:schema> liegen
Hmm, und wie zählt man eine XML-Datei am besten? Genau mit einem count(xpath(irgendwas)), mittels einer XSL Transformation. Genaus das haben wir gemacht. Wen das erste Ergebnis interessiert, melde sich per Email, SMS, Skype und/oder verfolge diesen Blog weiter, z.B. per RSS-Feed.
11 Jun
Der Artikel von der Berufsakademie Stuttgart - Außenstelle Horb, Fachrichtung Informationstechnik beschäftigt sich mit “Code-Review in Java - Möglichkeiten, Tools und Anwendung”. Aus meiner Sicht ein guter und kompakter Einstieg in das Thema, nicht nur für ein Code-Review.
3 Jun
In den letzten Tagen bin ich kaum zum bloggen gekommen. Schuld war UMLGraph, dazu später mehr, und das 910 Seiten-Teil hier:
Dabei ist das Cover erschreckend langweilig. Und doch habe ich selten ein Buch über eine Tool-Sammlung gefunden die so gut zu dem passt, was mich gerade umtreibt: Qualitätstests sowie Systembau und -check automatisieren. Dabei beginnt das Buch bei den Grundlagen, hier Ant und Maven und den beiden wichtigsten frei verfügbaren Versions-Kontrollsystemen: Subversion und CVS.
28 Mai
To read your Code you have to start your Integrated Development Enviroment, load your project, navigate through your packages, classes and methods. What if, you just want jump in to shortly check something, without writing? Or when you want implement direct links inside your code, for eg. direct from this Article to line 535 in com.java2html.firstparse.SimpleNode? Or you have a nifty code analyzer with HTML-Reporting, and you want jump just from that report direkt to the line of truth? A Solution for this Usecases could be for e.g. java2HTML. Easy to setup, mighty to configure, with Crosslinkings, Codecoloring and Line-Numbers as <a name="..."> Tags. Here is an Example, how a java2html-conversion is rendered. It’s java2html itself. Looks little bit like JavaDoc, but it isn’t. Do you know other HTML-transformators for other programming languages?
++ -+- ++
Um Code zu lesen, startest du normalerweise deine bevorzugte integrierte Entwicklungsumgebung, lädst dein Projekt, navigierst durch dein Packages, Klassen oder Methoden, bis du endlich die eine Zeile gefunden hast, in der du lediglich die Schreibweise von einem Parameter nachschauen wolltest. Wäre doch Cool, wenn Du deinen Code mit einem der feinen Web 2.0igen Bookmark-Lösungen verwalten könntest. Oder was ist, wenn Du von außerhalb, z.B. diesem Artikel genau an eine Code-Zeile, sagen wir mal Zeile 535 in com.java2html.firstparse.SimpleNode springen möchtest? Oder Du generell aus dem Report eines Anti-Pattern Tool genau zu einem Finding navigieren möchtest. Vermutlich gibt es noch dutzende weitere Anwendungsfälle.
Lese den ganzen Eintrag »
26 Mai
At the beginning there was a pure Structured Query Language, so called SQL(1), then some multidimensionalists thought about it and invented a multidimensional Expression Language, aka MDX(2). With the success of XML we found not long ago XQuery(3) as an enhancement to XSLT for querying XML-Like structures. But what about objects?
Here comes Prof. and CEO Oege de Moor(4) into the game. His vision of »easy, yet efficient queries over complex data « could be a silver bullet in the field of multi-language code quality management. In the goggle-techtak(5) »Drill down into your Code - Software Quality via Code Queries in SemmleCode« he explains his vision, mission and strategy to master static code analysis language independent, with a realitive »sexy« approach, called .QL pa dotQL(6). A Query-Language which combines the power of SQL with the advantages of OO-Syntax, enriched by an elegant potion of recursion and a dip of hierarchical polls. So you can build brand new complex queries against your code in minutes rather than hours or days. So please dear PMD, Sissy, Findbugs, Checkstyle-Rule and Anti-Pattern-Contributors, can you add your rule in future also as a dotQL-Script? Today there are over 114 acid-proofed queries with 42 metrics ready for exploration on your code with SemmleCode(7).
Great Stuff!
23 Mai
In der Semiotik wird der Begriff Code für Kommunikations- konventionen verwendet. Es sind Regeln und Beschränkungen, ausgesprochen oder unausgesprochen, die die Bedeutung und Interpretation der im Text verwendeten Zeichen beeinflussen. Aufgabe der Semiotiker ist es u.A., diese zu identifizieren und ihre Entwicklung nachzuvollziehen.
22 Mai
Lernen 1.5 heisst ja bekanntlich mit Karteikarten lernen, Lernen 2.0 bedeutet dann Online nach dem Karteikarten-Prinzip lernen.
Denn wie heisst es so schön, wer nicht lernt und nicht wirbt, der stirbt. Und mal ehrlich heutzutage kommt doch alle paar Monate eine neue Sprache, Technik, Domain, Fachbereiche, Metamodell etc. pp. auf einen zu. Und da wollen neue Vokabeln, Daten- und Schnittstellenstrukturen, Syntax-Bäume, Objekt-Hierarchie oder Metrik-Formeln schnell und nachhaltig verdaut werden. Hier ein paar hübsche Links dazu:
Online-Anwendungen:
Offline-Anwendungen:
Hintergründe:
.