1## @file 2# This file is used to parse exception items found by ECC tool 3# 4# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> 5# This program and the accompanying materials 6# are licensed and made available under the terms and conditions of the BSD License 7# which accompanies this distribution. The full text of the license may be found at 8# http://opensource.org/licenses/bsd-license.php 9# 10# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12# 13 14## 15# Import Modules 16# 17from Xml.XmlRoutines import * 18import Common.LongFilePathOs as os 19 20# ExceptionXml to parse Exception Node of XML file 21class ExceptionXml(object): 22 def __init__(self): 23 self.KeyWord = '' 24 self.ErrorID = '' 25 self.FilePath = '' 26 27 def FromXml(self, Item, Key): 28 self.KeyWord = XmlElement(Item, '%s/KeyWord' % Key) 29 self.ErrorID = XmlElement(Item, '%s/ErrorID' % Key) 30 self.FilePath = os.path.normpath(XmlElement(Item, '%s/FilePath' % Key)) 31 32 def __str__(self): 33 return 'ErrorID = %s KeyWord = %s FilePath = %s' %(self.ErrorID, self.KeyWord, self.FilePath) 34 35# ExceptionListXml to parse Exception Node List of XML file 36class ExceptionListXml(object): 37 def __init__(self): 38 self.List = [] 39 40 def FromXmlFile(self, FilePath): 41 XmlContent = XmlParseFile(FilePath) 42 for Item in XmlList(XmlContent, '/ExceptionList/Exception'): 43 Exp = ExceptionXml() 44 Exp.FromXml(Item, 'Exception') 45 self.List.append(Exp) 46 47 def ToList(self): 48 RtnList = [] 49 for Item in self.List: 50 #RtnList.append((Item.ErrorID, Item.KeyWord, Item.FilePath)) 51 RtnList.append((Item.ErrorID, Item.KeyWord)) 52 53 return RtnList 54 55 def __str__(self): 56 RtnStr = '' 57 if self.List: 58 for Item in self.List: 59 RtnStr = RtnStr + str(Item) + '\n' 60 return RtnStr 61 62# A class to check exception 63class ExceptionCheck(object): 64 def __init__(self, FilePath = None): 65 self.ExceptionList = [] 66 self.ExceptionListXml = ExceptionListXml() 67 self.LoadExceptionListXml(FilePath) 68 69 def LoadExceptionListXml(self, FilePath): 70 if FilePath and os.path.isfile(FilePath): 71 self.ExceptionListXml.FromXmlFile(FilePath) 72 self.ExceptionList = self.ExceptionListXml.ToList() 73 74 def IsException(self, ErrorID, KeyWord, FileID=-1): 75 if (str(ErrorID), KeyWord) in self.ExceptionList: 76 return True 77 else: 78 return False 79 80## 81# 82# This acts like the main() function for the script, unless it is 'import'ed into another 83# script. 84# 85if __name__ == '__main__': 86 El = ExceptionCheck('C:\\Hess\\Project\\BuildTool\\src\\Ecc\\exception.xml') 87 print El.ExceptionList 88