Пользователь
0,0
рейтинг
19 декабря 2012 в 20:38

Разработка → Подключение сторонних инструментов в IntelliJ IDEA на примере pylint

В этом посте я хочу рассказать про довольно интересную фичу IntelliJ IDEA — подключение сторонних утилит, а также продемонстрировать её на довольно типичном примере: я подключу pylint — анализатор кода для python проектов.

External Tools


В IDEA есть интересная возможность использовать сторонние утилиты из интерфейса самой IDE. Добавлять таким образом можно всё что угодно — скрипты, анализаторы кода, средства рендеринга ресурсов и подсчета статистики. И IDEA предоставляет несколько крутых решений, обеспечивающих комфорт использования утилит, которые вы подключите.

Ну что, попробуем подключить какой-нибудь тул?

pylint


pylint — статический анализатор кода для python. Его функциональность частично пересекается со встроенным анализатором кода в IDEA, но это не отменяет его полезность во многих случаях. pylint проверяет соответствие кода стандартам PEP8 и анализирует код на потенциальные ошибки.

Обычно pylint используют либо через консоль, либо через плагины, но вот для IDEA плагина нет.



Если посмотреть на вывод программы, можно заметить, что каждое замечание относится к конкретной строчке кода и хотелось бы иметь удобную навигацию по файлам и строчкам. Именно этого мы будем добиваться подключением этого тула к IDEA.

Подключаем pylint к IDEA


Добавить новый сторонний инструмент можно в настройках Settings -> External Tools





Как вы наверняка заметили, всё, что надо для того, чтобы программа работала из интерфейса IDEA, нужно всего ничего — указать имя, путь к программе, аргументы и рабочую директорию. Самое интересное здесь — макро-переменные, мощный инструмент взаимодействия программы, юзера и IDE. Взгляните:



Можно передать всё, что угодно: от путей директорий, файлов и проектов до выделенных фрагментов, номеров строчек и полученного из диалогового окошка текста.

В нашем случае нам понадобился только абсолютный путь до файла (почему абсолютный, поясню чуть ниже).

Наконец, мы перейдём к тому, что мы изначально желали — адресации по замечаниям pylint. Перейдем в секцию Output Filters:



Именно здесь настраивается то, что нам нужно — по регулярному выражению IDEA находит ссылки на строчки в файле.

Всё, можно пользоваться, вызвать наш тул можно из меню tools:



Посмотрим на результат запуска:



It works! Таким образом можно внедрять много других полезных штук.

Осталось только сказать про парочку нюансов:

  • На данный момент в IDEA есть баг, из-за которого этот самый pylint падает на файлах, где есть символы в UTF-8. Вы можете посмотреть/проголосовать за тикет
  • Парсер путей файлов почему-то понимает только абсолютные пути, пути относительно проекта парсить не получается. Именно поэтому pylint настроен довольно странно — рабочая папка / нужна для того, чтобы в выводе были абсолютные пути файлов.
  • pylint запускается с особенным ключем --output-format=parseable — он меняет формат вывода на более простой для парсинга и понимаемый многими приложениями.
Артем Попов @system29a
карма
26,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (6)

  • 0
    фича очень интересная и дающая еще больший контроль над написанием кода:) сами JetBrains не заявляли поддерживаемый официально список подключаемых утилит в IDEA?)
    • +2
      IDE от JetBrains описанным образом поддерживают все утилиты, выводящие текстовую информацию на консоль
      • 0
        не очень понимаю что можно сделать с помощью фильтра
        например я хочу запустить компилятор
        в выводе компиялтора выводится список ошибок в виде файл: строка

        Как IDEA понимает что это файл?
        Я так понимю $FILE_PATH$ это текущий открытый в IDEA файл
        но у меня же ошибки могут быть не только в нем
    • 0
      В том то и фишка, что можно подключить практически всё что угодно, поэтому такого списка не может существовать. И да, это не только текстовая информация на консоли, я вполне представляю какой-нибудь просмотр 3d моделей, например. Программе передается путь выделенного файла в IDEA и она его рисует в отдельном окне.
  • +2
    А в новом EAP'е PyCharm есть инспекция для проверки соответствия кода стандарту PEP8 =)
    • 0
      нууу, он со своей спецификой
      например он предлагает внутри метакласса именовать self как mls тогда как в оригинальном PEP8 всё именуется cls неважно метакласс или просто класс

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.