使用正则表达式编写自己的linting规则
relint的Python项目详细描述
正则表达式linter
使用正则表达式编写自己的linting规则。
安装
pip install relint
用法
您可以在yaml文件中编写自己的规则,例如:
-name:No ToDopattern:"[tT][oO][dD][oO]"hint:Get it done right away!filename:-"*.py"-"*.js"error:false
name属性是您的linter的名称,pattern可以是 任何正则表达式。linter会对整个文件进行lint操作,因此 表达式可以匹配多行并包含换行符。
您可以通过以下方法缩小linter应该使用的文件类型 提供可选的filename属性。默认值是*。
可选的
以下命令将lint当前目录中的所有文件:
relint -c .relint.yml **
默认配置文件名是工作中的.relint.yaml。 目录,但您可以提供任何yaml或json文件。
如果您喜欢对更改的文件(缓存在git上)进行linting,可以使用以下选项 –差异[-d]:
git diff | relint my_file.py --diff
此选项对于预提交非常有用。下面是一个如何使用它的例子 使用pre-commit框架:
-repo:https://github.com/codingjoe/relintrev:0.5.0hooks:-id:relint
您可以在此存储库中找到relint-pre-commit.sh的示例。
样品
-name:db fixturespattern:"deftest_[^(]+\\([^)]*(customer|product)(,|\\))"hint:Use model_mommy recipies instead of db fixtures.filename:-"**/test_*.py"-name:model_mommy recipiespattern:"mommy\\.make\\("hint:Please use mommy.make_recipe instead of mommy.make.filename:-"**/test_*.py"-"conftest.py"-"**/conftest.py"-name:the database is lavapattern:"@pytest.fixture.*\\n[]*def[^(]+\\([^)]*(db|transactional_db)(,|\\))"hint:Please do not create db fixtures but model_mommy recipies instead.filename:-"*.py"-name:No logger in management commandspattern:"(logger|importlogging)"hint:"Pleasewritetoself.stdoutorself.stderrinfavorofusingalogger."filename:-"*/management/commands/*.py"