def extractXml(prjPfx, filename): print "Parsing %s" % filename try: f = open(filename, "rb") except IOError: # A broken symlink could cause this to be unopenable even though the directory entry exists print "Cannot open %s" % filename return "" text = f.read() if filename.startswith(prjPfx): filename = filename[len(prjPfx):] xmltxt = "<%s name='%s' language='text'>" % ( TagFile, filename) + text + "</%s>" % TagFile try: xml = microdom.parseString(xmltxt) except microdom.ExpatError, e: print "File %s: XML ERROR '%s'" % (filename, str(e)) f = open("error.xml", "wb") f.write(xmltxt) f.close() print "Errored file written to 'error.xml'" # print xmltxt pdb.set_trace()
def comments2MicroDom(comments, filename): """<fn>Convert a list of (line number,comment) to an xml doc</fn>""" xml = "<%s name='%s' language='c++'>" % (TagFile, filename) + "\n".join( comments) + "</%s>" % TagFile try: dom = microdom.parseString(xml) except microdom.ExpatError, e: print "File: %s: XML ERROR!" % filename, str(e) try: print "Clause: %s" % comments[e.lineno - 1] except: pass pdb.set_trace()
def extractXml(prjPfx, filename): print "Parsing %s" % filename f = open(filename, "rb") text = f.read() if filename.startswith(prjPfx): filename = filename[len(prjPfx):] xmltxt = "<%s name='%s' language='text'>" % ( TagFile, filename) + text + "</%s>" % TagFile try: xml = microdom.parseString(xmltxt) except microdom.ExpatError, e: print "XML ERROR!", str(e) print str(xml) pdb.set_trace()
def comments2MicroDom(comments, filename): """<fn>Convert a list of (line number,comment) to an xml doc</fn>""" xml = "<%s name='%s' language='c++'>" % (TagFile, filename) + "\n".join( comments) + "</%s>" % TagFile try: dom = microdom.parseString(xml) except microdom.ExpatError, e: print "Error: %s (error XML written to error.xml)" % str(e) print "> %s(%d)unknown()" % (filename, e.lineno) try: print "-> %s" % comments[e.lineno - 1] except: pass # write the bad xml out to an analysis file f = open("error.xml", "w") f.write(xml) f.close() raise
def comments2MicroDom(comments, filename): """?<fn>Convert a list of (line number,comment) to an xml doc</fn>""" # Add a line num attribute to all xml tags text = [] pat = re.compile("<(\w+)") for (line, comment) in comments: #print "c2md:", line,comment newcomment = re.sub(pat, lambda x, y=line: addLineAttr(x, y), comment) text.append(newcomment) #print text xml = "<%s name='%s' language='python'>" % (TagFile, filename) + "".join( text) + "</%s>" % TagFile try: dom = microdom.parseString(xml) except microdom.ExpatError, e: print "XML ERROR!", str(e) print str(xml) raise