mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-22 01:56:00 -04:00
Add pylint check for re.compile() alias
Ensure that Re() is used consistently across our code base.
This commit is contained in:
parent
9bad9491a1
commit
a8bf53411d
2 changed files with 48 additions and 2 deletions
|
|
@ -671,7 +671,7 @@ vulture:
|
|||
<<: *python_triggering_rules
|
||||
needs: []
|
||||
script:
|
||||
- vulture --exclude "*ans.py,conftest.py,isctest" --ignore-names "after_servers_start,bootstrap,pytestmark" bin/tests/system/
|
||||
- vulture --exclude "*ans.py,conftest.py,re_compile_checker.py,isctest" --ignore-names "after_servers_start,bootstrap,pytestmark" bin/tests/system/
|
||||
|
||||
ci-variables:
|
||||
<<: *precheck_job
|
||||
|
|
@ -780,7 +780,7 @@ pylint:
|
|||
script:
|
||||
- pylint --rcfile $CI_PROJECT_DIR/.pylintrc $(git ls-files '*.py' | grep -vE '(ans\.py|dangerfile\.py|^bin/tests/system/|^contrib/)')
|
||||
# Ignore Pylint wrong-import-position error in system test to enable use of pytest.importorskip
|
||||
- pylint --rcfile $CI_PROJECT_DIR/.pylintrc --disable=wrong-import-position $(git ls-files 'bin/tests/system/*.py' | grep -vE '(ans\.py|vulture_ignore_list\.py)')
|
||||
- pylint --rcfile $CI_PROJECT_DIR/.pylintrc --load-plugins re_compile_checker --disable=wrong-import-position $(git ls-files 'bin/tests/system/*.py' | grep -vE '(ans\.py|vulture_ignore_list\.py)')
|
||||
|
||||
reuse:
|
||||
<<: *precheck_job
|
||||
|
|
|
|||
46
bin/tests/system/re_compile_checker.py
Normal file
46
bin/tests/system/re_compile_checker.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# pylint: disable=unknown-option-value,re-compile-alias
|
||||
|
||||
import re
|
||||
|
||||
from astroid import nodes
|
||||
|
||||
from pylint.checkers import BaseRawFileChecker
|
||||
from pylint.lint import PyLinter
|
||||
|
||||
|
||||
class ReCompileChecker(BaseRawFileChecker):
|
||||
|
||||
name = "custom_raw"
|
||||
msgs = {
|
||||
"R9901": (
|
||||
"Replace re.compile() with Re() using `from re import compile as Re`",
|
||||
"re-compile-alias",
|
||||
(
|
||||
"Use a Re() alias instead of re.compile() by importing the "
|
||||
"re.compile() function as Re()"
|
||||
),
|
||||
),
|
||||
}
|
||||
options = ()
|
||||
|
||||
def process_module(self, node: nodes.Module) -> None:
|
||||
pattern = re.compile(r"re\.compile\(")
|
||||
with node.stream() as stream:
|
||||
for lineno, line in enumerate(stream):
|
||||
if pattern.search(line.decode("utf-8")):
|
||||
self.add_message("re-compile-alias", line=lineno)
|
||||
|
||||
|
||||
def register(linter: PyLinter) -> None:
|
||||
linter.register_checker(ReCompileChecker(linter))
|
||||
Loading…
Reference in a new issue