高级用法¶
自动化测试¶
您还可以执行 pycodestyle
从python代码测试。例如,这对于在项目中自动测试编码样式一致性非常有用:
import unittest
import pycodestyle
class TestCodeFormat(unittest.TestCase):
def test_conformance(self):
"""Test that we conform to PEP-8."""
style = pycodestyle.StyleGuide(quiet=True)
result = style.check_files(['file1.py', 'file2.py'])
self.assertEqual(result.total_errors, 0,
"Found code style errors (and warnings).")
还有一个检查单个文件的快捷方式:
import pycodestyle
fchecker = pycodestyle.Checker('testing/data/E27.py', show_source=True)
file_errors = fchecker.check_all()
print("Found %s errors (and warnings)" % file_errors)
配置测试¶
您可以配置自动 pycodestyle
以各种方式进行测试。
例如,可以将路径传递给 pycodestyle
应使用:
import pycodestyle
style = pycodestyle.StyleGuide(config_file='/path/to/tox.ini')
还可以显式设置特定选项:
style = pycodestyle.StyleGuide(ignore=['E501'])
跳过文件头¶
另一个例子与 feature request #143 :跳过文件开头和结尾的行数。这个用例很容易通过PEP8库的自定义包装器实现:
#!python
import pycodestyle
LINES_SLICE = slice(14, -20)
class StyleGuide(pycodestyle.StyleGuide):
"""This subclass of pycodestyle.StyleGuide will skip the first and last lines
of each file."""
def input_file(self, filename, lines=None, expected=None, line_offset=0):
if lines is None:
assert line_offset == 0
line_offset = LINES_SLICE.start or 0
lines = pycodestyle.readlines(filename)[LINES_SLICE]
return super(StyleGuide, self).input_file(
filename, lines=lines, expected=expected, line_offset=line_offset)
if __name__ == '__main__':
style = StyleGuide(parse_argv=True, config_file=True)
report = style.check_files()
if report.total_errors:
raise SystemExit(1)
此模块声明一个行窗口,该窗口在开始处跳过14行,在结束处跳过20行。如果末尾没有可跳过的行,则可以使用 LINES_SLICE = slice(14, None)
例如。
您可以将其保存在文件中,并使用与原始文件相同的选项 pycodestyle
.