code: def parse_reports(self, reports):
          
          violations_dict = defaultdict(list)
          for report in reports:
              xml_document = cElementTree.fromstring("".join(report))
              bugs = xml_document.findall(".//BugInstance")
              for bug in bugs:
                  category = bug.get('category')
                  short_message = bug.find('ShortMessage').text
                  line = bug.find('SourceLine')
                  if line.get('start') is None or line.get('end') is None:
                      continue
                  start = int(line.get('start'))
                  end = int(line.get('end'))
                  for line_number in range(start, end+1):
                      error_str = "{}: {}".format(category, short_message)
                      violation = Violation(line_number, error_str)
                      filename = GitPathTool.relative_path(
                          line.get('sourcepath'))
                      violations_dict[filename].append(violation)
  
          return violations_dict
docs: Args:
              reports: list[str] - output from the report
          Return:
              A dict[Str:Violation]
              Violation is a simple named tuple Defined above