Pysonar2 - это библиотека семантического индексера для Python, предназначенная для пакетной обработки больших кодовых баз. Полученный индекс можно использовать для создания браузеров кода и поисковых систем кода.
Python - очень динамичный язык. Для достижения высокой точности и качества Pysonar2 выполняет межпроцедурный анализ, чтобы вывести типы. Pysonar2 обычно производит лучший индекс, чем Python Ides, в то же время жертвуя возможностями обновлений в реальном времени IDE.
Обратите внимание, что термин «вывод типа» здесь является описательным, а не предписывающим, что означает, что предполагаемые типы описывают, как на самом деле используется код, но не предписывает, как их необходимо использовать. Таким образом, способ работы с выводом типа отличается от систем типа (например, система Hindley-Milner).
Pysonar2 был базовым механизмом индексации для нескольких крупномасштабных навигационных сервисов кода, таких как внутренний поиск кода Google, SourceGraph.com и Insight.io (теперь часть Elastic).
mvn package -DskipTests
Чтобы представить, что производит pysonar2, вы можете создать простой кодовый браузер стандартной библиотеки Python 2.7 со следующей командной строкой:
java -jar target/pysonar-<version>.jar /usr/lib/python2.7 ./html
Это может занять несколько минут в зависимости от вашей машины. Вы должны найти некоторые интерактивные HTML -файлы в каталоге HTML после этого процесса. Вы можете переместить мышь на переменные и нажать на них, чтобы прыгнуть к определениям и т. Д.
Обратите внимание, что это просто простая демонстрационная программа, основанная на библиотеке. Pysonar2 не предназначен для того, чтобы быть инструментом конечного пользователя. В основном он разработан как библиотека для Python IDE, инструментов разработчиков и поисковых систем кода, поэтому его интерфейс может быть не таким привлекательным, как инструмент конечного пользователя.
Если у вас есть проблемы с этим, пожалуйста, не стесняйтесь обращаться ко мне.
Pysonar2 использует встроенный пакет ast CPYTHON для анализа кода Python, поэтому, пожалуйста, убедитесь, что у вас установлен python или python3 и на него указана переменная среды PATH . Если они у вас есть в разных именах, пожалуйста, сделайте ссылки на символы.
Переменная среда 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 Лицензия. См. Файл лицензии.