Task Management mit Xcode

Als Programmierer schreibt man offene Punkte, z. B. FIXME oder TODO gerne direkt den Source Code. Wirklich praktisch ist das aber nur, wenn die verwendete IDE einen auch auf die offenen Punkte hinweist.

Die Eclispe IDE hat dafür die Tasks View. In dieser kann man die gefundenen Punkte nach Schwere und Datei sortieren.

Xcode kennt die folgenden Tags, die man in Kommentaren verwenden kann:

// FIXME: Lorem ipsum
// TODO: Lorem ipsum
// MARK: Lorem ipsum
// ???: Lorem ipsum
// !!!: Lorem ipsum

Diese Tags werden in den Document Items zusammen mit den Methoden usw. angezeigt. Wichtig ist der Doppelpunkt : nach dem Tag. Ohne diesen wird der Tag nicht in den Document Items angezeigt!

Offene Punkte in den Document Items
Offene Punkte in den Document Items

Die Document Items zeigen die offene Punkte nur für die aktuelle Datei, eine Ansicht über das gesamte Projekt fehlt leider.

Es gibt zusätzlich zwei Preprocessor Direktiven

#warning TODO: fix this later...
#error FIXME: fix now!

Diese werden direkt in der Datei angezeigt und natürlich auch vom Issue Navigator.

Offene Punkte im Issue Navigator mit Preprocessor Direktiven
Offene Punkte im Issue Navigator mit Preprocessor Direktiven

Die übliche Variante, offene Punkte in Kommentare zu schreiben, finde ich eleganter. Der Nachteil, das diese nicht global angezeigt werden, lässt sich jedoch beheben.

Das folgende Script muss als letzter Schritt in den Build Phases des zu bauenden Targets eingebunden werden.

KEYWORDS="FIXME:|TODO:|MARK:|\?\?\?:|\!\!\!:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" \) -print0 | \
xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | \
perl -p -e "s/($KEYWORDS)/ warning: \$1/"

Damit werden die Kommentare der Tags im Issue Navigator und in der jeweiilgen Datei als Warnung angezeigt.

Offene Punkte im Issue Navigator mit Kommentaren
Offene Punkte im Issue Navigator mit Kommentaren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert