主要观点:
- 发布了 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 上的讨论)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。