如何在PyCharm中为isort设置过滤器作为外部工具

时间:2017-08-23 08:09:26

标签: python pycharm isort

我正在尝试将isort设置为PyCharm中的外部工具。我无法设置过滤器,因此文件路径是链接。

isort的输出是:

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

根据docs推荐$FILE_PATH$应该足够但它对我不起作用。我已经尝试了几种正则表达式而没有任何成功。

1 个答案:

答案 0 :(得分:5)

tl; dr使用 [whois.verisign-grs.com] Domain Name: 99WEBTOOLS.COM Registry Domain ID: 1836292680_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.PublicDomainRegistry.com Registrar URL: http://www.publicdomainregistry.com Updated Date: 2017-07-27T03:33:56Z Creation Date: 2013-11-21T07:14:28Z Registry Expiry Date: 2017-11-21T07:14:28Z Registrar: PDR Ltd. d/b/a PublicDomainRegistry.com Registrar IANA ID: 303 Registrar Abuse Contact Email: abuse-contact@publicdomainregistry.com Registrar Abuse Contact Phone: +1.2013775952 Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Name Server: NS1.HOSTNOLOGY.COM Name Server: NS2.HOSTNOLOGY.COM DNSSEC: unsigned URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/ >>> Last update of whois database: 2017-08-23T13:44:46Z <<< For more information on Whois status codes, please visit https://icann.org/epp 作为过滤器。

所以$FILE_PATH$(?<=\.py)( |$)是用于(^|[\W])(?<file>(?:\p{Alpha}\:|/)[0-9 a-z_A-Z\-\\./]+)(?<=\.py)的正则表达式。资料来源:https://github.com/JetBrains/intellij-community/blob/d29c4fa1a73e03b852353186d792540150336b9f/platform/lang-api/src/com/intellij/execution/filters/RegexpFilter.java#L39 看看它是如何在那里允许空间的?

意味着它将抓取$FILE_PATH,因为它不指向真实文件,它将不会转换为链接。

因此,您可以将 isort 输出格式修改为具有明确文件路径边界的内容,或者在regexp中使用更加花哨的内容,例如正面外观,这将使您的过滤器看起来像这样: C:\dev\path\to\a\project\file.py Imports are incorrectly sorted.

如果提供的过滤器无法满足您的特定需求,则可以使用https://www.freeformatter.com/java-regex-tester.html来测试java regexp。