docs: @Override
    public void processReport(final SensorContext context, File report) throws XMLStreamException {
      LOG.debug("Parsing 'Cppcheck V1' format");
      StaxParser parser = new StaxParser(new StaxParser.XmlStreamHandler() {
        /**
         * {@inheritDoc}
         */
        @Override
        public void stream(SMHierarchicCursor rootCursor) throws XMLStreamException {
  
          try {
            rootCursor.advance(); // results
          } catch (com.ctc.wstx.exc.WstxEOFException eofExc) {
            throw new EmptyReportException("Cannot read cppcheck report (format V1)", eofExc);
          }
  
          try {
            SMInputCursor errorCursor = rootCursor.childElementCursor("error"); // error
            while (errorCursor.getNext() != null) {
              String file = errorCursor.getAttrValue("file");
              String line = errorCursor.getAttrValue("line");
              String id = errorCursor.getAttrValue("id");
              String msg = errorCursor.getAttrValue("msg");
  
              if (file != null) {
                file = file.replace('\\', '/');
              }
  
              if ("*".equals(file)) {
                // findings on project level
                file = null;
                line = null;
              }
  
              if (isInputValid(id, msg)) {
                CxxReportIssue issue = new CxxReportIssue(id, file, line, msg);
                sensor.saveUniqueViolation(context, issue);
              } else {
                LOG.warn("Skipping invalid violation: '{}'", msg);
              }
            }
          } catch (RuntimeException e) {
            throw new XMLStreamException("processReport failed", e);
          }
        }
  
        private boolean isInputValid(String id, String msg) {
          return !id.isEmpty() && msg != null && !msg.isEmpty();
        }
      });
  
      parser.parse(report);
    }