utils: checkstyle.py: Add commit checkers
Add a new category of checkers that operate on a whole commit. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
ba3278a749
commit
bf7981f2bc
1 changed files with 35 additions and 7 deletions
|
@ -296,6 +296,30 @@ class ClassRegistry(type):
|
||||||
return newclass
|
return newclass
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Commit Checkers
|
||||||
|
#
|
||||||
|
|
||||||
|
class CommitChecker(metaclass=ClassRegistry):
|
||||||
|
subclasses = []
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#
|
||||||
|
# Class methods
|
||||||
|
#
|
||||||
|
@classmethod
|
||||||
|
def checkers(cls):
|
||||||
|
for checker in cls.subclasses:
|
||||||
|
yield checker
|
||||||
|
|
||||||
|
|
||||||
|
class CommitIssue(object):
|
||||||
|
def __init__(self, msg):
|
||||||
|
self.msg = msg
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Style Checkers
|
# Style Checkers
|
||||||
#
|
#
|
||||||
|
@ -721,25 +745,29 @@ def check_style(top_level, commit):
|
||||||
print(commit.title)
|
print(commit.title)
|
||||||
print(separator)
|
print(separator)
|
||||||
|
|
||||||
|
issues = 0
|
||||||
|
|
||||||
|
# Apply the commit checkers first.
|
||||||
|
for checker in CommitChecker.checkers():
|
||||||
|
for issue in checker.check(commit, top_level):
|
||||||
|
print('%s%s%s' % (Colours.fg(Colours.Yellow), issue.msg, Colours.reset()))
|
||||||
|
issues += 1
|
||||||
|
|
||||||
# Filter out files we have no checker for.
|
# Filter out files we have no checker for.
|
||||||
patterns = set()
|
patterns = set()
|
||||||
patterns.update(StyleChecker.all_patterns())
|
patterns.update(StyleChecker.all_patterns())
|
||||||
patterns.update(Formatter.all_patterns())
|
patterns.update(Formatter.all_patterns())
|
||||||
files = [f for f in commit.files() if len([p for p in patterns if fnmatch.fnmatch(os.path.basename(f), p)])]
|
files = [f for f in commit.files() if len([p for p in patterns if fnmatch.fnmatch(os.path.basename(f), p)])]
|
||||||
if len(files) == 0:
|
|
||||||
print("Commit doesn't touch source files, skipping")
|
|
||||||
return 0
|
|
||||||
|
|
||||||
issues = 0
|
|
||||||
for f in files:
|
for f in files:
|
||||||
issues += check_file(top_level, commit, f)
|
issues += check_file(top_level, commit, f)
|
||||||
|
|
||||||
if issues == 0:
|
if issues == 0:
|
||||||
print("No style issue detected")
|
print("No issue detected")
|
||||||
else:
|
else:
|
||||||
print('---')
|
print('---')
|
||||||
print("%u potential style %s detected, please review" % \
|
print("%u potential %s detected, please review" %
|
||||||
(issues, 'issue' if issues == 1 else 'issues'))
|
(issues, 'issue' if issues == 1 else 'issues'))
|
||||||
|
|
||||||
return issues
|
return issues
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue