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:
Laurent Pinchart
2026-04-07 16:47:00 +03:00
parent 63fd8476d8
commit 44da13f85f

View File

@@ -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,)