Cython 代码的 linting 选项
我有一个Cython模块,想要按照PEP8的风格来检查代码,但是在Cython的cdef
语法上,pylint
出现了语法错误。有没有人能给个建议,怎么在Cython代码中保持Python的编码标准呢?
4 个回答
0
接着 @j-mulet 的回答,给大家一个有用的例子,就是 Pandas 有自己的 cython.cfg 文件,这个文件里包含了一些专门针对 Cython 的规则,用来在 .pyx 文件中查找。
[flake8]
filename = *.pyx,*.pxd
select = E501,E302,E203,E111, ...
然后你可以告诉 flake8 这个文件在哪里:
$ flake8 -config <path-to-cython.cfg>
1
截至2022年,你可以使用 cython-lint 这个工具。
安装方法是:
$ pip install cython-lint
或者你可以把它当作预提交钩子来使用:
- repo: https://github.com/MarcoGorelli/cython-lint
rev: v0.10.1
hooks:
- id: cython-lint
5
虽然不是基于命令行的,但PyCharm声称支持Cython。可惜的是,这个功能只在付费的“专业版”中提供。
4
我使用的是Sublime Text编辑器,并且安装了SublimeLinter的Flake8插件。
我的Flake8配置如下:
"flake8": {
"@disable": false,
"args": [
"--doctests"
],
"builtins": "",
"excludes": [],
"ignore": "",
"ignore_match": {
"pyx": [
"SyntaxError"
]
},
"jobs": "1",
"max-complexity": 7,
"max-line-length": null,
"select": "",
"show-code": false
},
"ignore_match"这个键是用来定义一些正则表达式的,目的是让某些错误在检查时被忽略。
在这个例子中,我用它来忽略.pyx文件中的语法错误。你可以根据自己的需要定义新的表达式。
抱歉,因为这不是一个专门针对Cython的检查工具,只是一个小技巧,让Python的检查工具变得更有用。
更多信息可以查看SublimeLinter的官方文档。