code: def parse_reports(self, reports):
          
          violations_dict = defaultdict(list)
          for report in reports:
              if self.expression.flags & re.MULTILINE:
                  matches = (match for match in
                             re.finditer(self.expression, report))
              else:
                  matches = (self.expression.match(line) for line in
                             report.split('\n'))
              for match in matches:
                  if match is not None:
                      src, line_number, message = match.groups()
                      # Transform src to a relative path, if it isn't already
                      src = os.path.relpath(src)
                      violation = Violation(int(line_number), message)
                      violations_dict[src].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