utils: checkstyle: Add license commit checker
Add a checker, based on the reuse tool, to detect files without a valid license. The tool is optional, the checker will be skipped when not available. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
This commit is contained in:
@@ -453,6 +453,31 @@ class HeaderAddChecker(CommitChecker):
|
||||
return issues
|
||||
|
||||
|
||||
class LicenseChecker(CommitChecker):
|
||||
commit_types = (Commit, StagedChanges, Amendment)
|
||||
dependencies = ('reuse',)
|
||||
|
||||
missing_license_regex = re.compile(r'^(.*): no license identifier$')
|
||||
|
||||
@classmethod
|
||||
def check(cls, commit, top_level):
|
||||
issues = []
|
||||
|
||||
ret = subprocess.run(['reuse', 'lint-file'] + commit.files('AR'),
|
||||
stdout=subprocess.PIPE)
|
||||
|
||||
for line in ret.stdout.decode('utf-8').splitlines():
|
||||
match = LicenseChecker.missing_license_regex.match(line)
|
||||
if not match:
|
||||
continue
|
||||
|
||||
filename = match.group(1)
|
||||
issue = CommitIssue(f'File {filename} has no license identifier')
|
||||
issues.append(issue)
|
||||
|
||||
return issues
|
||||
|
||||
|
||||
class TitleChecker(CommitChecker):
|
||||
commit_types = (Commit,)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user