AntennaPod/.github/workflows/errorPrinter.py

49 lines
2.4 KiB
Python

#!/bin/python
from xml.dom import minidom
import os.path
import glob
from pathlib import Path
if os.path.isfile('app/build/reports/lint-results-playDebug.xml'):
dom = minidom.parse('app/build/reports/lint-results-playDebug.xml')
issues = dom.getElementsByTagName('issue')
for issue in issues:
locations = issue.getElementsByTagName('location')
for location in locations:
print(location.attributes['file'].value + ":" + location.attributes['line'].value + " " + issue.attributes['summary'].value)
print("::error file=" + location.attributes['file'].value
+ ",line=" + location.attributes['line'].value
+ ",endLine=" + location.attributes['line'].value
+ ",title=Lint::" + issue.attributes['summary'].value + ". " + issue.attributes['explanation'].value.replace('\n', ' '))
print()
if os.path.isfile('build/reports/checkstyle/checkstyle.xml'):
dom = minidom.parse('build/reports/checkstyle/checkstyle.xml')
files = dom.getElementsByTagName('file')
for f in files:
errors = f.getElementsByTagName('error')
for error in errors:
print(f.attributes['name'].value + ":" + error.attributes['line'].value + " " + error.attributes['message'].value)
print("::error file=" + f.attributes['name'].value
+ ",line=" + error.attributes['line'].value
+ ",endLine=" + error.attributes['line'].value
+ ",title=Checkstyle::" + error.attributes['message'].value)
print()
for filename in glob.iglob('**/build/reports/spotbugs/*.xml', recursive=True):
filenamePath = Path(filename)
dom = minidom.parse(filename)
instance = dom.getElementsByTagName('BugInstance')
for inst in instance:
lines = inst.getElementsByTagName('SourceLine')
longMessage = inst.getElementsByTagName('LongMessage')[0].firstChild.nodeValue
for line in lines:
if "primary" in line.attributes:
print(line.attributes['sourcepath'].value + ": " + longMessage)
print("::error file=" + str(filenamePath.parent.parent.parent.parent.absolute()) + "/src/main/java/" + line.attributes['sourcepath'].value
+ ",line=" + line.attributes['start'].value
+ ",endLine=" + line.attributes['end'].value
+ ",title=SpotBugs::" + longMessage.replace('\n', ' '))
print()