PySonar2 — это библиотека семантического индексирования для Python, предназначенная для пакетной обработки больших баз кода.
Чтобы создать высокопроизводительный и качественный индекс Python, который является очень динамическим языком, PySonar2 выполняет (дорогую) полносистемную межпроцедурную анализацию для вывода типов переменных, параметров и функций. Из-за этого PySonar2 обычно создаёт лучший индекс, чем IDE Python (например, PyCharm и т.д.), при этом отказываясь от возможностей реального времени, предоставляемых IDE.
PySonar2 служил основой для нескольких крупномасштабных систем навигации по коду, таких как внутренний сервис поиска кода компании Google, Sourcegraph.com и Insight.io (теперь часть Elasticsearch). Он использовался для индексации миллионов строк кода на Python.
mvn package
Чтобы получить представление о том, что производит PySonar2, вы можете создать простое веб-приложение для просмотра кода стандартной библиотеки Python 2.7 с помощью следующей команды:
java -jar target/pysonar-<версия>.jar /usr/lib/python2.7 ./htmlЭто может занять несколько минут в зависимости от вашего компьютера. После выполнения процесса вы должны найти некоторые интерактивные HTML-файлы внутри директории _html_. Вы можете перемещать указатель мыши над переменными и щелкать по ним, чтобы перейти к определению и т. д.Обратите внимание, что это просто демонстрационное программное обеспечение, основанное на библиотеке. PySonar2 не предназначен для использования конечными пользователями. Основное назначение — использовать его как библиотеку для IDE Python, средств разработчика и систем поиска кода, поэтому его интерфейс может не быть таким привлекательным, как у конечного продукта.
Если у вас возникли проблемы, пожалуйста, свяжитесь со мной.
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. Смотрите файл LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )