protected void processMessage()

in src/com/jetbrains/php/tools/quality/phpstan/PhpStanMessageProcessor.java [62:96]


  protected void processMessage(InputSource source) throws SAXException, IOException {
    PhpStanXmlMessageHandler messageHandler = (PhpStanXmlMessageHandler)getXmlMessageHandler(myFilePath);
    mySAXParser.parse(source, messageHandler);
    if (messageHandler.isStatusValid()) {
      if (myPsiFile != null) {
        List<ProblemDescription> list = messageHandler.getProblemList();
        if (list == null) return;
        for (ProblemDescription problem : list) {
          if (myProject.isDisposed()) return;
          Document document = ReadAction.compute(() -> PsiDocumentManager.getInstance(myPsiFile.getProject()).getDocument(myPsiFile));
          QualityToolMessage qualityToolMessage;
          if (document != null && problem.getLineNumber() - 1 > 0 && problem.getLineNumber() - 1 < document.getLineCount()) {
            qualityToolMessage = new QualityToolMessage(this, TextRange
              .create(document.getLineStartOffset(problem.getLineNumber() - 1) + problem.getColumn(),
                      document.getLineEndOffset(problem.getLineNumber() - 1)), problem.getSeverity(), problem.getMessage());
          }
          else {
            qualityToolMessage = new QualityToolMessage(this, problem.getLineNumber(), problem.getSeverity(), problem.getMessage());
          }
          if (lineMessages.add(problem)) {
            addMessage(qualityToolMessage);
          }
        }
      } else {
        final List<ProblemDescription> data = myProject.getUserData(PHPSTAN_ANNOTATOR_INFO);
        if (data != null) {
          data.addAll(messageHandler.getProblemList());
          myProject.putUserData(PHPSTAN_ANNOTATOR_INFO, data);
        }
        else {
          myProject.putUserData(PHPSTAN_ANNOTATOR_INFO, messageHandler.getProblemList());
        }
      }
    }
  }