PlanetXML

Getter und Setter automatisch dokumentieren

Kommentare sind schön und gut, so lange sie mit dem Quellcode übereinstimmen. Dank JavaDoc kann aus ihnen auch eine übersichtliche Dokumentation erzeugt werden. Für triviale Methoden wie Getter und Setter ist der Aufwand, die Kommentare zu schreiben und mit dem Code synchron zu halten allerdings unverhältnismäßig groß. Dieses PHP-Script erzeugt daher die Dokumentation für diese Methoden automatisch aus dem Quellcode. Das Script kann sowohl an der Kommandozeile mit der Java Datei als Parameter aufgerufen werden als auch als Filter den Java Code von der Standardeingabe lesen.

Update am 5.11.2005: Bugs bei der Groß- und Kleinschreibung der Attribute behoben.

<?php

function callback($r) {
    $attr = strtolower($r[5]{0}) . substr($r[5], 1);
    if ($r[4] == 'g' && empty($r[6])) {
        return <<<HERE

    /**
     * Liefert den Wert des Attributes '$attr'.
     *
     * @return Wert des Attributes.
     */
    public $r[3] get$r[5]()
HERE;
    }
    else if ($r[4] == 's' && $r[3] == 'void' && !empty($r[6])) {
        return <<<HERE

    /**
     * Setzt den Wert des Attributes '$attr'.
     *
     * @param $r[7] Neuer Wert.
     */
    public void set$r[5]($r[6] $r[7])
HERE;
    }
}

$data = file_get_contents(count($argv) > 1 ? $argv[1] : 'php://stdin');

echo preg_replace_callback(
    '#^\s*(/\*\*(?>(?:.*?)\*/)\s*)?(public\s+([a-zA-Z][a-zA-Z0-9_\.]*(?:\[\])*)\s+([gs])et(\w+)\s*\((?:([a-zA-Z][a-zA-Z0-9_\.]*(?:\[\])*)\s+(\w+))?\))#ms',
    'callback',
    $data);

?>