Cython 代码的 linting 选项

19 投票
4 回答
2798 浏览
提问于 2025-04-18 18:46

我有一个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的官方文档

撰写回答