private void handleExceptionTag()

in fxcop-agent/src/jetbrains/buildServer/fxcop/agent/FxCopFileProcessor.java [262:311]


  private void handleExceptionTag() {
    if (myCurrentPass != PassType.ISSUES) {
      return;
    }
    
    final String keyword = myStream.getAttribute("Keyword");
    final String kind = myStream.getAttribute("Kind");
    final String treatAsWarning = myStream.getAttribute("TreatAsWarning");

    String type = null, message = null, stacktrace = null;
    while (myStream.hasMoreChildren()) {
      myStream.moveDown();

      if (myStream.getNodeName().equals("Type")) {
        type = reformatInOneLine(myStream.getValue());
      }

      if (myStream.getNodeName().equals("ExceptionMessage")) {
        message = reformatInOneLine(myStream.getValue());
      }

      if (myStream.getNodeName().equals("StackTrace")) {
        stacktrace = myStream.getValue();
      }

      myStream.moveUp();
    }

    final boolean warningMessage = treatAsWarning != null && treatAsWarning.equals("True");
    final StringBuilder descr = new StringBuilder("FxCop " + (warningMessage ? "warning" : "error") + ":");

    if (keyword != null) {
      descr.append(" Keyword=").append(keyword);
    }
    if (kind != null) {
      descr.append(" Kind=").append(kind);
    }
    if (type != null) {
      descr.append(" Type=").append(type);
    }
    if (message != null) {
      descr.append(" ").append(message);
    }
    if (stacktrace != null) {
      final String lineSeparator = System.getProperty("line.separator");
      descr.append(lineSeparator).append(stacktrace);
    }

    myLogger.warning(descr.toString());
  }