From fa72e56346eef895bd42b3c15b013f590c9eb717 Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Fri, 1 Sep 2023 13:56:25 +0200 Subject: [PATCH] My personal style --- main.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..21b7957 --- /dev/null +++ b/main.py @@ -0,0 +1,67 @@ + +import re +import subprocess +import argparse + +parser = argparse.ArgumentParser() +parser.add_argument('project') + +RULES_MAIN= [ + r"\b(System\.out\.println)\b", + r"^\s*var\b\s*\w*\s*=\s*[^n ][^e][^w]", + r"^\s*var\b\s*\w*\s*=\s*\r", +] + +DUMB_WORDS = [ + 'derp', 'herp', 'fjerp', 'todo', 'attempts to', + 'actual', + + # Misspelled words + 'concatinate', # Concatenate +] + +def re_select(options): + return r'(?:' + r'|'.join(options) + r')' + +def re_delimit(rule): + return r'\b' + rule + r'\b' + +def re_case_insensitive_sub(m): + m = m.group(0) + l = m.lower() + u = m.upper() + if l == u == m: + return m + else: + return '['+l+u+']' + +def re_case_insensitive(rule): + return re.sub(r'\w', re_case_insensitive_sub, rule) + +RE_DOC_COULD_BE_LINK = r'^(\s*(?:\/\*\*|\*).*)(\b[A-Z][a-z]\w*[A-Z]\w*)([ ,.])' + +RULES_BOTH = [ + r"\.size\(\)\s*[=!<]=\s*0" , + r"\b(hasSize\(0\))\b" , + r"\b(\.size\(\)\)\.isEqualTo\()\b" , + r"\.get\([^)(]+\)\)\.isEqualTo", + r"\bCollectors\.toMap\b", + r"\bCollectors\.toList\b", + re_delimit(re_select([re_case_insensitive(w) for w in DUMB_WORDS])), + #RE_DOC_COULD_BE_LINK, +] + +def construct_cmd(rules, target): + return ['ag', '--java', '(' + re_select(rules) + ')', target] + +if __name__ == '__main__': + args = parser.parse_args() + + target = args.project + + result1 = subprocess.run(construct_cmd(RULES_MAIN, target + '/main')) + result2 = subprocess.run(construct_cmd(RULES_BOTH, target)) + + if result1.returncode == 0 or result2.returncode == 0: + exit(1) +