Pysonar2は、Pythonのセマンティックインデクサーライブラリであり、大きなコードベースのバッチ処理用に設計されています。結果のインデックスを使用して、コードブラウザとコード検索エンジンを構築できます。
Pythonは非常に動的な言語です。高精度と品質を達成するために、Pysonar2は断続的な分析を実行してタイプを推測します。 Pysonar2は一般に、Python Idesよりも優れたインデックスを生成しますが、同時にIDEのリアルタイム更新機能を犠牲にします。
「タイプ推論」という用語は、規範ではなく説明的であることに注意してください。つまり、推測されたタイプは、コードが実際にどのように使用されるかを説明していますが、それらを使用する方法を規定していません。したがって、ここでのタイプの推論の動作方法は、タイプシステムとは異なります(例:Hindley-Milner System)。
Pysonar2は、Googleの内部コード検索、SourceGraph.com、Insight.io(現在の弾性の一部)など、いくつかの大規模なコードナビゲーションサービスの基礎となるインデックスエンジンです。
mvn package -DskipTests
Pysonar2が生成するものを感じるために、次のコマンドラインを使用してPython 2.7標準ライブラリのシンプルなコードブラウザを構築できます。
java -jar target/pysonar-<version>.jar /usr/lib/python2.7 ./html
これには、マシンに応じて数分かかる場合があります。このプロセスの後、 HTMLディレクトリ内にいくつかのインタラクティブなHTMLファイルを見つける必要があります。マウスを変数に移動し、それらをクリックして定義などにジャンプできます。
これは、ライブラリに基づいた単純なデモプログラムであることに注意してください。 Pysonar2は、エンドユーザーツールであることを意図したものではありません。主にPython Ides、開発者ツール、コード検索エンジンのライブラリとして設計されているため、そのインターフェイスはエンドユーザーツールほど魅力的ではない場合があります。
問題がある場合は、お気軽にご連絡ください。
Pysonar2はCpythonのビルトインastパッケージを使用してPythonコードを解析するため、 pythonまたはpython3がPATH Environment変数によってインストールされ、指摘されていることを確認してください。別の名前でそれらを持っている場合は、シンボルリンクを作成してください。
PYTHONPATH環境変数は、Python標準ライブラリの検索に使用されます。たとえば、正しいPythonライブラリを指すことが重要です
export PYTHONPATH=/usr/lib/python2.7
これが正しく設定されていない場合、ライブラリコードへの参照は見つかりません。
コードの貢献をすることを歓迎します。
Pysonar2の背後にある非常に複雑で未発表の理論のため、物事は無邪気な見た目の変化でさえも簡単にうまくいかないかもしれません。 Pysonar2に貢献したい場合は、重要な変更を加える前に最初に私と話し合ってください。そうしないと、変更を確認できない場合があります。
基本的な検証のために、ユニットテストを実行できます。 Pysonar2には、基本的なテストフレームワークがあります。このコマンドを使用してテストを実行できます。
mvn test
コードまたはテストを変更する場合は、新しい予想される結果を生成する必要があります。これらのコマンドラインを実行します:
mvn package -DskipTests
java -classpath target/pysonar-<version>.jar org.yinwang.pysonar.TestInference -generate tests
新しいテストを作成するには、変更を示す関連するPythonコードを記述するだけで、それらをtests/testname.testという名前のディレクトリに入れます(テストディレクトリ名は「.test」で終了する必要があります)。例については、 testsディレクトリをご覧ください。
テストがすべてのバグをキャッチすることを期待しないでください。非常に注意してください:)
Apache 2.0ライセンス。ライセンスファイルを参照してください。