Pysonar2 ist eine semantische Indexer -Bibliothek für Python, die für die Batch -Verarbeitung großer Codebasen ausgelegt ist. Der resultierende Index kann zum Erstellen von Code -Browsern und Code -Suchmaschinen verwendet werden.
Python ist eine sehr dynamische Sprache. Um eine hohe Genauigkeit und Qualität zu erzielen, führt Pysonar2 eine interprocedurale Analyse durch Abschlusstypen durch. Pysonar2 erzeugt im Allgemeinen einen besseren Index als Python-IDEs, während gleichzeitig Echtzeit-Update-Funktionen von IDEs geopfert werden.
Beachten Sie, dass der Begriff "Typinferenz" hier eher beschreibend als vorschreibend ist, was bedeutet, dass die abgeleiteten Typen beschreiben, wie der Code tatsächlich verwendet wird, aber nicht vorschreiben, wie sie verwendet werden müssen. Die Art und Weise, wie Typinferenz hier funktioniert, unterscheidet sich also von Typsystemen (z. B. Hindley-Milner-System).
Pysonar2 war die zugrunde liegende Indizing-Engine für mehrere groß angelegte Code-Navigationsdienste, wie die interne Codesuche von Google, SourceGraph.com und Insight.io (jetzt Teil des Elastizierens).
mvn package -DskipTests
Um ein Gefühl zu haben, was Pysonar2 erstellt, können Sie einen einfachen Code -Browser der Standardbibliothek Python 2.7 mit der folgenden Befehlszeile erstellen:
java -jar target/pysonar-<version>.jar /usr/lib/python2.7 ./html
Dies kann je nach Maschine einige Minuten dauern. Nach diesem Vorgang sollten Sie einige interaktive HTML -Dateien im HTML -Verzeichnis finden. Sie können Ihre Maus auf die Variablen verschieben und auf sie klicken, um zu Definitionen usw. zu springen.
Beachten Sie, dass dies nur ein einfaches Demo -Programm ist, das auf der Bibliothek basiert. Pysonar2 soll kein Endbenutzer-Tool sein. Es ist hauptsächlich als Bibliothek für Python-IDEs, Entwickler-Tools und Code-Suchmaschinen konzipiert, sodass seine Schnittstelle möglicherweise nicht so attraktiv ist wie ein Endbenutzer-Tool.
Wenn Sie Probleme damit haben, können Sie mich gerne kontaktieren.
Pysonar2 verwendet das integrierte ast Paket von CPython, um den Python-Code zu analysieren. Stellen Sie daher sicher, dass Sie python oder python3 installieren und auf die PATH hinweisen. Wenn Sie sie in verschiedenen Namen haben, erstellen Sie bitte Symbol -Links.
Die Variable PYTHONPATH -Umgebung wird zum Lokalisieren der Python -Standardbibliotheken verwendet. Es ist wichtig, sie beispielsweise auf die richtige Python -Bibliothek zu verweisen
export PYTHONPATH=/usr/lib/python2.7
Wenn dies nicht korrekt eingerichtet ist, werden Verweise auf den Bibliothekscode nicht gefunden.
Sie können gerne Codebeiträge leisten.
Aufgrund der hochkomplexen und unveröffentlichten Theorie hinter Pysonar2 können die Dinge mit einer unschuldig aussehenden Veränderung leicht schief gehen. Wenn Sie hoffen, zu Pysonar2 beizutragen, besprechen Sie bitte zuerst mit mir, bevor ich wesentliche Änderungen vornehme. Andernfalls kann ich Ihre Änderungen möglicherweise nicht überprüfen.
Für die grundlegende Überprüfung können Sie die Unit -Tests ausführen. Pysonar2 verfügt über einen grundlegenden Test -Framework. Sie können die Tests mit diesem Befehl ausführen:
mvn test
Wenn Sie den Code oder die Tests ändern, müssen Sie neue erwartete Ergebnisse generieren. Führen Sie diese Befehlszeilen aus:
mvn package -DskipTests
java -classpath target/pysonar-<version>.jar org.yinwang.pysonar.TestInference -generate tests
Um neue Tests zu schreiben, müssen Sie nur einen relevanten Python -Code schreiben, der Ihre Änderung demonstriert, in ein Verzeichnis mit dem Namen tests/testname.test (Testverzeichnisname muss mit ".test" enden). Bitte schauen Sie sich das tests an, um Beispiele zu erhalten.
Bitte erwarten Sie nicht, dass die Tests alle Fehler fangen. Sei sehr vorsichtig :)
Apache 2.0 Lizenz. Siehe Lizenzdatei.