:param filename: Path to Cppcheck dump file
(self, filename)
| 1220 | """ |
| 1221 | |
| 1222 | def __init__(self, filename): |
| 1223 | """ |
| 1224 | :param filename: Path to Cppcheck dump file |
| 1225 | """ |
| 1226 | self.language = None |
| 1227 | self.filename = filename |
| 1228 | self.rawTokens = [] |
| 1229 | self.platform = None |
| 1230 | self.suppressions = [] |
| 1231 | self.files = [] # source files for elements occurred in this configuration |
| 1232 | |
| 1233 | platform_done = False |
| 1234 | rawtokens_done = False |
| 1235 | suppressions_done = False |
| 1236 | |
| 1237 | # Parse general configuration options from <dumps> node |
| 1238 | # We intentionally don't clean node resources here because we |
| 1239 | # want to serialize in memory only small part of the XML tree. |
| 1240 | for event, node in ElementTree.iterparse(self.filename, events=('start', 'end')): |
| 1241 | if platform_done and rawtokens_done and suppressions_done: |
| 1242 | break |
| 1243 | if node.tag == 'dumps': |
| 1244 | self.language = node.get('language') |
| 1245 | if node.tag == 'platform' and event == 'start': |
| 1246 | self.platform = Platform(node) |
| 1247 | platform_done = True |
| 1248 | elif node.tag == 'rawtokens' and event == 'end': |
| 1249 | for rawtokens_node in node: |
| 1250 | if rawtokens_node.tag == 'file': |
| 1251 | self.files.append(rawtokens_node.get('name')) |
| 1252 | elif rawtokens_node.tag == 'tok': |
| 1253 | tok = Token(rawtokens_node) |
| 1254 | tok.file = self.files[int(rawtokens_node.get('fileIndex'))] |
| 1255 | self.rawTokens.append(tok) |
| 1256 | rawtokens_done = True |
| 1257 | elif node.tag == 'suppressions' and event == 'end': |
| 1258 | for suppressions_node in node: |
| 1259 | self.suppressions.append(Suppression(suppressions_node)) |
| 1260 | suppressions_done = True |
| 1261 | |
| 1262 | global current_dumpfile_suppressions |
| 1263 | current_dumpfile_suppressions = self.suppressions |
| 1264 | |
| 1265 | # Set links between rawTokens. |
| 1266 | for i in range(len(self.rawTokens)-1): |
| 1267 | self.rawTokens[i+1].previous = self.rawTokens[i] |
| 1268 | self.rawTokens[i].next = self.rawTokens[i+1] |
| 1269 | |
| 1270 | @property |
| 1271 | def configurations(self): |
nothing calls this directly
no test coverage detected