Bibliothek zum Analysieren und Analysieren von Quellcode

Ich möchte Quellcode analysieren, der in mehreren Sprachen geschrieben ist. Die Bibliothek sollte mir also zumindest sagen, welche Zeilen Kommentare sind und welche nicht. Optimalerweise könnte es mir auch spezifischere Dinge mitteilen, wie Variablendeklarationen, sprachspezifische Schlüsselwörter usw.

Es ähnelt also tatsächlich einem sprachspezifischen Syntax-Highlighter, nur dass es den Quellcode nicht hervorhebt, sondern kommentiert und so etwas wie eine JSON-Ausgabe druckt.

Ich habe Markdown-it für Markdown gefunden, aber naja, ich bräuchte es für viele Sprachen, wie Shell, JavaScript, Python, Scala, Go …

Für jede dieser Sprachen gibt es Tools, aber ich glaube nicht, dass es ein generisches gibt, es sei denn, Sie verwenden für diesen Zweck einen generischen Syntax-Highlighter, was einfach sein könnte. Wenn der Textmarker beispielsweise HTML mit CSS-Klassen erzeugt, die angeben, welche Teile Schlüsselwörter, Kommentare usw. sind, dann ist das genau das, was Sie wollen, oder?

Antworten (2)

Ich weiß nicht, ob es alle Sprachen abdeckt, die Sie benötigen, oder alle Metadaten ausgibt, die Sie benötigen, aber Doxygen könnte ausreichen. Es kann XML ausgeben, das Dinge wie Funktions- und Variablendeklarationen enthält.

Ich glaube nicht, dass Doxygen mit der Frage zusammenhängt. Es generiert Dokumentation, analysiert aber keinen Quellcode. Es ist nicht einmal eine Bibliothek, sondern ein separates Programm.
Du hast recht, es ist keine Bibliothek, das habe ich übersehen. Aber es analysiert den Quellcode. Es könnte möglich sein, es als Bibliothek zu verwenden, ich weiß es nicht.
Welche Art von Analyse wird durchgeführt? Kann es erkennen, welche Zeilen Kommentare, Deklarationen und dergleichen sind? Könnten Sie Ihre Antwort erweitern und all dies erklären?
Basierend auf der von ihm erstellten Dokumentation umfasst seine Analyse Klassen/Schnittstellen und ihre Vererbungsbeziehungen, #include-Dateien, Mitgliedsvariablen und Methoden (einschließlich vollständiger Typsignaturen) und Funktions-/Methodenaufrufdiagramme. Ich bin mir nicht sicher, was genau die XML-Ausgabe enthält. Ich kann keine Dokumentation speziell dazu finden. Das Beste ist wahrscheinlich, das Schema zu überprüfen: github.com/doxygen/doxygen/tree/master/templates/xml

Unser DMS Software Reengineering Toolkit ist ein Allzweck-Tool zur Programmanalyse und -transformation, parametrisiert durch explizite Sprachdefinitionen. Bis heute sind etwa 40 Sprachen (ohne Dialekte) für DMS definiert.

Für jede solche Sprache, die durch eine explizite Grammatik definiert ist (ja, wir handhaben C++17 auf diese Weise), kann DMS die Quelle parsen und einen abstrakten Syntaxbaum erzeugen. [Ja, Sie können es als XML exportieren (JSON wäre auch einfach), wenn Sie möchten, aber es ist einfacher, wenn Sie andere Analysen mit anderen DMS-Mechanismen durchführen, was bedeutet, dass Sie sie nicht exportieren müssen. Von dort aus ist es ziemlich einfach, Kommentare vs. Deklarationen vs. Funktionsheader vs. Code zu kennzeichnen.

DMS kann so konfiguriert werden, dass es viel mehr Informationen als nur diese herauszieht.

Wenn Sie für das Unternehmen arbeiten, das das Produkt herstellt, ist es üblich, am Anfang oder Ende des Beitrags ausdrücklich eine Offenlegung einzufügen (auch wenn dies in Ihrem Profil steht und Sie dies durch die Verwendung von „wir“ implizieren).
Es ist die offizielle Richtlinie von Stack Overflow, dass der Ausdruck „Unser“ … eine angemessene Offenlegung darstellt. Das wurde vor vielen Jahren gelöst.
Fairerweise denke ich, dass die Standards dieser Site höher sein sollten als die Standardeinstellungen des Netzwerks. Also habe ich einen Meta-Post erstellt: softwarerecs.meta.stackexchange.com/questions/2700