code: private void checkForLoggerParam() {
          if (Values.CONSTRUCTOR.equals(getNameConstantOperand())) {
              String cls = getClassConstantOperand();
              if ((cls.startsWith("java/") || cls.startsWith("javax/")) && cls.endsWith("Exception")) {
                  String sig = getSigConstantOperand();
                  List<String> types = SignatureUtils.getParameterSignatures(sig);
                  if (types.size() <= stack.getStackDepth()) {
                      for (int i = 0; i < types.size(); i++) {
                          String parmSig = types.get(i);
                          if (Values.SIG_JAVA_LANG_STRING.equals(parmSig)) {
                              OpcodeStack.Item item = stack.getStackItem(types.size() - i - 1);
                              String cons = (String) item.getConstant();
                              if ((cons != null) && cons.contains("{}")) {
                                  bugReporter.reportBug(new BugInstance(this, BugType.LO_EXCEPTION_WITH_LOGGER_PARMS.name(), NORMAL_PRIORITY).addClass(this)
                                          .addMethod(this).addSourceLine(this));
                                  break;
                              }
                          }
                      }
                  }
              }
          }
      }
docs: looks for slf4j calls where an exception is passed as a logger parameter, expecting to be substituted for a {} marker. As slf4j just passes the exception
  down to the message generation itself, the {} marker will go unpopulated.