Facebook gibt Quellen fĂĽr hauseigenen C++-Linter frei
Aus GrĂĽnden der Geschwindigkeit und fehlender C++11-UnterstĂĽtzung hat Facebooks Entwicklerteam einen eigenen Linter geschrieben und dabei ein interessantes Beispiel fĂĽr die Ăśbersetzung von C++- nach D-Code geschaffen.
- Julia Schmidt
Der bei Facebook angestellte Entwickler Andrei Alexandrescu hat in einem Blogeintrag die Freigabe des hauseigenen Lint-Programms flint bekanntgegeben. Es ist unter der Boost Software License geschützt und untersucht in C++ geschriebenen Code auf Einzelheiten, die der Compiler übergehen würde, die sich aber negativ auf die Codequalität auswirken. So sind etwa bestimmte Token-Abfolgen oder Identifier bei den Facebook-Entwicklern verboten und werden mit dem Linter kontrolliert, aber auch häufige Implementierungsfehler lassen sich damit vermeiden.
Als Motivation, selbst ein solches Programm zu entwickeln und nicht etwa auf Clang oder Ähnliches zurückzugreifen, gibt Alexandrescu die damals fehlende Unterstützung für viele der bei Facebook genutzten C++11-Features und die zu niedrige Bearbeitungsgeschwindigkeit an. Um Letztere gering zu halten, arbeitet flint mit Tokens statt ein Parse-Tree aufzubauen und stellt dem Entwickler zufolge ein gutes Beispiel für das einfachste Design zur Lösung des gestellten Problems dar.
UrsprĂĽnglich war flint auch in C++ geschrieben, als Experiment ĂĽbersetzte man den Code des Werkzeugs aber in D. Wie sich herausstellte, war die so erzeugte Variante im Vergleich zur Ausgangsversion aber kleiner und lieĂź sich sich schneller bauen (etwa fĂĽnfmal so schnell) und ausfĂĽhren, weshalb man bei ihr blieb.
Wie auch Facebooks andere Open-Source-Projekte steht flint auf GitHub zur Verfügung. Nähere Informationen zu den Checks die das Tool durchführt, lassen sich der Bekanntmachung entnehmen. (jul)