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.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 1 Min.
Von
  • 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)