Как настроить фильтр для isort как внешнего инструмента в PyCharm

Я пытаюсь настроить isort как внешний инструмент в PyCharm. Я не могу настроить фильтр, чтобы пути к файлам были ссылками.

Выход из isort:

ERROR: C:\dev\path\to\a\project\file.py Imports are incorrectly sorted.

Согласно документам сдачи $FILE_PATH$ должно быть достаточно, но это не работает для меня. Я пробовал несколько стилей регулярных выражений без какого-либо успеха.

1 ответ

Решение

TL; Dr использовать $FILE_PATH$(?<=\.py)( |$) в качестве фильтра.

Так (^|[\W])(?<file>(?:\p{Alpha}\:|/)[0-9 a-z_A-Z\-\\./]+)(?<=\.py) регулярное выражение используется для $FILE_PATH, Источник: https://github.com/JetBrains/intellij-community/blob/d29c4fa1a73e03b852353186d792540150336b9f/platform/lang-api/src/com/intellij/execution/filters/RegexpFilter.java#L39

Смысл это будет схватить C:\dev\path\to\a\project\file.py Imports are incorrectly sorted. и поскольку он не указывает на настоящий файл, он не будет преобразован в ссылку.

Таким образом, вы можете либо изменить выходной формат isort на что-то с четкими границами пути к файлу, либо использовать что-то более причудливое в регулярном выражении, например положительный взгляд, что сделает ваш фильтр похожим на это: $FILE_PATH$(?<=\.py)( |$)

Для тестирования регулярных выражений Java вы можете использовать https://www.freeformatter.com/java-regex-tester.html если предоставленный фильтр не соответствует вашим конкретным потребностям.

Другие вопросы по тегам