1
0

Compare commits

...

3 Commits

Author SHA1 Message Date
40e9e7575b Formatting 2024-02-29 13:35:12 +01:00
60e26aa2e4 Main 2024-02-29 13:35:02 +01:00
721b96bcb7 Improvements 2024-02-29 13:33:12 +01:00

43
main.py
View File

@ -1,4 +1,3 @@
import re import re
import subprocess import subprocess
import argparse import argparse
@ -6,26 +5,36 @@ import argparse
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('project') parser.add_argument('project')
RULES_MAIN= [ RULES_MAIN = [
r"\b(System\.out\.println)\b", 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*[^n ][^e][^w]",
r"^\s*var\b\s*\w*\s*=\s*\r", r"^\s*var\b\s*\w*\s*=\s*\r",
] ]
DUMB_WORDS = [ DUMB_WORDS = [
'derp', 'herp', 'fjerp', 'todo', 'attempts to', 'derp',
'herp',
'fjerp',
'todo',
'attempts to',
'actual', 'actual',
'technically',
'so',
"big integer",
# Misspelled words # Misspelled words
'concatinate', # Concatenate 'concatinate', # Concatenate
] ]
def re_select(options): def re_select(options):
return r'(?:' + r'|'.join(options) + r')' return r'(?:' + r'|'.join(options) + r')'
def re_delimit(rule): def re_delimit(rule):
return r'\b' + rule + r'\b' return r'\b' + rule + r'\b'
def re_case_insensitive_sub(m): def re_case_insensitive_sub(m):
m = m.group(0) m = m.group(0)
l = m.lower() l = m.lower()
@ -33,28 +42,39 @@ def re_case_insensitive_sub(m):
if l == u == m: if l == u == m:
return m return m
else: else:
return '['+l+u+']' return '[' + l + u + ']'
def re_case_insensitive(rule): def re_case_insensitive(rule):
return re.sub(r'\w', re_case_insensitive_sub, rule) return re.sub(r'\w', re_case_insensitive_sub, rule)
def re_sentence(sentence):
words = sentence.split(' ')
re = '\s+'.join(re_case_insensitive(w) for w in words)
return re
RE_DOC_COULD_BE_LINK = r'^(\s*(?:\/\*\*|\*).*)(\b[A-Z][a-z]\w*[A-Z]\w*)([ ,.])' RE_DOC_COULD_BE_LINK = r'^(\s*(?:\/\*\*|\*).*)(\b[A-Z][a-z]\w*[A-Z]\w*)([ ,.])'
RULES_BOTH = [ RULES_BOTH = [
r"\.size\(\)\s*[=!<]=\s*0" , r"\.size\(\)\s*[=!<]=\s*0",
r"\b(hasSize\(0\))\b" , r"\b(hasSize\(0\))\b",
r"\b(\.size\(\)\)\.isEqualTo\()\b" , r"\b(\.size\(\)\)\.isEqualTo\()\b",
r"\.get\([^)(]+\)\)\.isEqualTo", r"\.get\([^)(]+\)\)\.isEqualTo",
r"\.isEqualTo\((List|Map|Set)\.of\(",
r"\bCollectors\.toMap\b", r"\bCollectors\.toMap\b",
r"\bCollectors\.toList\b", r"\bCollectors\.toList\b",
re_delimit(re_select([re_case_insensitive(w) for w in DUMB_WORDS])), re_delimit(re_select([re_sentence(w) for w in DUMB_WORDS])),
#RE_DOC_COULD_BE_LINK, #RE_DOC_COULD_BE_LINK,
] ]
def construct_cmd(rules, target):
def construct_cmd(rules: list[str], target: str) -> list[str]:
return ['ag', '--java', '(' + re_select(rules) + ')', target] return ['ag', '--java', '(' + re_select(rules) + ')', target]
if __name__ == '__main__':
def main():
args = parser.parse_args() args = parser.parse_args()
target = args.project target = args.project
@ -65,3 +85,6 @@ if __name__ == '__main__':
if result1.returncode == 0 or result2.returncode == 0: if result1.returncode == 0 or result2.returncode == 0:
exit(1) exit(1)
if __name__ == '__main__':
main()