pyastgrep 与自定义 linting

主要观点:

  • 发布了 pyastgrep,是 astpath 的重写,可通过 XPath 搜索 Python 语法元素,既可作库又可作命令行工具。
  • 主要用于 linting 任务或强制执行惯例,有时其他方法失效时很有用。
  • 介绍了几种规则示例,如函数的布尔参数应是关键字参数、避免单字母循环变量、Django 特定的标签名与模板文件名匹配等。
  • 描述了识别坏模式并进行修复的方法,先插入坏和好的示例代码,通过 pyastdump 查看 AST,构造 XPath 表达式进行匹配,编写测试用例。
  • 给出了 assert_expected_pyastgrep_matches 实用函数的实现,强调要确保能找到“地球上的生命”即确保 XPath 表达式有效。
  • 提供了一些技巧,如 pyastgrep 严格在语法层面工作可能被别名影响,可使用 Mock 构造坏示例,可混合使用不同技术。
  • 总结语法搜索并非适用于所有工作,但是工具包的有力补充,可参考 pyastgrep 示例获取灵感。

关键信息:

  • pyastgrep:是 astpath 的重写,可搜索 Python 语法元素。
  • 规则示例:包括函数参数、循环变量、Django 标签等方面的规则。
  • 方法:插入示例代码、使用 pyastdump 和 XPath 表达式、编写测试用例。
  • 技巧:处理别名问题、使用 Mock、混合技术。
  • 结论:语法搜索有其作用,可参考示例。

重要细节:

  • 给出了各种规则的具体代码示例,如函数定义中的参数形式、循环变量的使用等。
  • 详细说明了 assert_expected_pyastgrep_matches 函数的实现过程和作用。
  • 提到了在不同操作系统下使用的命令(如 xsel、xclip、pbpaste、Get-Clipboard 等)。
  • 介绍了关于 Python AST 稳定性的注意事项。
  • 提供了相关讨论的链接(Lobsters 上的讨论)。
阅读 7
0 条评论