11.10 Map
This commit is contained in:
53
FindBugsExcluder.py
Normal file
53
FindBugsExcluder.py
Normal file
@@ -0,0 +1,53 @@
|
||||
"""FindBugsExcluder.py
|
||||
Creates a filter file from the xml and text output of FindBugs
|
||||
To prepare, you must run
|
||||
findbugs -textui . > findbugs.txt
|
||||
findbugs -textui -xml . > findbugs.xml
|
||||
Once you've run this program you can then run
|
||||
findbugs -textui -exclude FindBugsFilter-auto.xml .
|
||||
To exclude the bugs that have been discovered.
|
||||
|
||||
The program includes the suggested changes with each exclusion,
|
||||
so you can go through FindBugsFilter-auto.xml and decide
|
||||
to fix things and remove their "Match" nodes.
|
||||
"""
|
||||
from xml.dom.minidom import parse
|
||||
import xml.dom
|
||||
import os, sys, re, pprint
|
||||
|
||||
xml_buglist = 'findbugs.xml' #'D:\\aaa-TIJ4\\code\\findbugs.xml'
|
||||
text_buglist = 'findbugs.txt' # 'D:\\aaa-TIJ4\\code\\findbugs.txt'
|
||||
findbugs_filter = 'FindBugsFilter-auto.xml' # 'D:\\aaa-TIJ4\\code\\FindBugsFilter-auto.xml'
|
||||
|
||||
def main():
|
||||
textbugs = [bug.split(':', 1) for bug in file(text_buglist)
|
||||
if bug.startswith("M ") or bug.startswith("H ")]
|
||||
textbugs = [(bug[0].split()[2], bug[1].strip()) for bug in textbugs]
|
||||
dom1 = parse(xml_buglist)
|
||||
dom2 = xml.dom.getDOMImplementation().createDocument(
|
||||
None, "FindBugsFilter", None)
|
||||
bugsDone = []
|
||||
for bugNode in [bug for bug in dom1.firstChild.childNodes
|
||||
if bug.nodeName == "BugInstance"]:
|
||||
for child in bugNode.childNodes:
|
||||
if child.nodeName == "Class":
|
||||
classname = child.attributes.item(0).value
|
||||
bugtype = bugNode.attributes.item(2).value
|
||||
if (bugtype, classname) in bugsDone:
|
||||
continue
|
||||
else:
|
||||
bugsDone.append((bugtype, classname))
|
||||
match = dom2.createElement("Match")
|
||||
match.setAttribute("class", classname)
|
||||
bugCode = dom2.createElement("BugCode")
|
||||
bugCode.setAttribute("name", bugtype)
|
||||
match.appendChild(bugCode)
|
||||
for textbug in textbugs:
|
||||
if textbug[0] == bugtype and classname in textbug[1]:
|
||||
match.appendChild(dom2.createComment(textbug[1]))
|
||||
dom2.documentElement.appendChild(match)
|
||||
break # out of inner for loop
|
||||
file(findbugs_filter, 'w').write(dom2.toprettyxml(' ', '\n'))
|
||||
|
||||
if __name__ == "__main__": main()
|
||||
|
||||
Reference in New Issue
Block a user