import re from gitlint.rules import CommitRule, RuleViolation class BadSignedOffBy(CommitRule): name = "bad-signed-off-by" id = "UC3" # These are individuals, by email address, who chose to go by a one-word name. exceptions = ["anthonyhkf@google.com"] def validate(self, commit): violations = [] sobs = [ x for x in commit.message.body if x.startswith("Signed-off-by:") ] for sob in sobs: match = re.search("Signed-off-by: (.*) <(.*)>", sob) if not match: violations.append( RuleViolation(self.id, "Invalid Signed-off-by format", sob) ) continue if ( len(match.group(1).split()) <= 1 and match.group(2) not in self.exceptions ): violations.append( RuleViolation( self.id, "Signed-off-by user has too few words; likely user id instead of legal name?", sob, ) ) continue return violations