Program: 48013
Project: 48013
Buggy source:
@SuppressWarnings("String_Node_Str") @Override public boolean perform(AbstractBuild<?,?> build,Launcher launcher,BuildListener listener) throws InterruptedException, IOException {
  final PrintStream logger=listener.getLogger();
  FilePath[] matchedClassDirs=null;
  FilePath[] matchedSrcDirs=null;
  if (build.getResult() == Result.FAILURE || build.getResult() == Result.ABORTED) {
    return true;
  }
  logger.println("String_Node_Str");
  EnvVars env=build.getEnvironment(listener);
  env.overrideAll(build.getBuildVariables());
  try {
    healthReports=new JacocoHealthReportThresholds(Integer.parseInt(minimumClassCoverage),Integer.parseInt(maximumClassCoverage),Integer.parseInt(minimumMethodCoverage),Integer.parseInt(maximumMethodCoverage),Integer.parseInt(minimumLineCoverage),Integer.parseInt(maximumLineCoverage),Integer.parseInt(minimumBranchCoverage),Integer.parseInt(maximumBranchCoverage),Integer.parseInt(minimumInstructionCoverage),Integer.parseInt(maximumInstructionCoverage),Integer.parseInt(minimumComplexityCoverage),Integer.parseInt(maximumComplexityCoverage));
  }
 catch (  NumberFormatException nfe) {
    healthReports=new JacocoHealthReportThresholds(0,0,0,0,0,0,0,0,0,0,0,0);
  }
  if ((execPattern == null) || (classPattern == null) || (sourcePattern == null)) {
    if (build.getResult().isWorseThan(Result.UNSTABLE)) {
      return true;
    }
    logger.println("String_Node_Str");
    build.setResult(Result.FAILURE);
    return true;
  }
  logger.println("String_Node_Str" + execPattern + "String_Node_Str"+ classPattern+ "String_Node_Str"+ sourcePattern+ "String_Node_Str"+ "String_Node_Str");
  JacocoReportDir dir=new JacocoReportDir(build);
  List<FilePath> matchedExecFiles=Arrays.asList(build.getWorkspace().list(resolveFilePaths(build,listener,execPattern)));
  logger.println("String_Node_Str" + execPattern + "String_Node_Str"+ matchedExecFiles.size());
  logger.print("String_Node_Str");
  dir.addExecFiles(matchedExecFiles);
  logger.print("String_Node_Str" + Util.join(matchedExecFiles,"String_Node_Str"));
  matchedClassDirs=resolveDirPaths(build,listener,classPattern);
  logger.print("String_Node_Str" + classPattern + "String_Node_Str");
  for (  FilePath file : matchedClassDirs) {
    dir.saveClassesFrom(file);
    logger.print("String_Node_Str" + file);
  }
  matchedSrcDirs=resolveDirPaths(build,listener,sourcePattern);
  logger.print("String_Node_Str" + sourcePattern + "String_Node_Str");
  for (  FilePath file : matchedSrcDirs) {
    dir.saveSourcesFrom(file);
    logger.print("String_Node_Str" + file);
  }
  logger.println("String_Node_Str");
  String[] includes={};
  if (inclusionPattern != null) {
    includes=inclusionPattern.split("String_Node_Str");
    logger.println("String_Node_Str" + Arrays.toString(includes));
  }
  String[] excludes={};
  if (exclusionPattern != null) {
    excludes=exclusionPattern.split("String_Node_Str");
    logger.println("String_Node_Str" + Arrays.toString(excludes));
  }
  final JacocoBuildAction action=JacocoBuildAction.load(build,rule,healthReports,listener,dir,includes,excludes);
  action.getThresholds().ensureValid();
  logger.println("String_Node_Str" + action.getThresholds());
  build.getActions().add(action);
  logger.println("String_Node_Str");
  final CoverageReport result=action.getResult();
  if (result == null) {
    logger.println("String_Node_Str");
    build.setResult(Result.FAILURE);
  }
 else {
    logger.println("String_Node_Str" + result.getClassCoverage().getPercentage() + "String_Node_Str"+ result.getMethodCoverage().getPercentage()+ "String_Node_Str"+ result.getLineCoverage().getPercentage()+ "String_Node_Str"+ result.getBranchCoverage().getPercentage()+ "String_Node_Str"+ result.getInstructionCoverage().getPercentage());
    result.setThresholds(healthReports);
    if (changeBuildStatus) {
      build.setResult(checkResult(action));
    }
  }
  return true;
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Override public boolean perform(AbstractBuild<?,?> build,Launcher launcher,BuildListener listener) throws InterruptedException, IOException {
  final PrintStream logger=listener.getLogger();
  FilePath[] matchedClassDirs=null;
  FilePath[] matchedSrcDirs=null;
  if (build.getResult() == Result.FAILURE || build.getResult() == Result.ABORTED) {
    return true;
  }
  logger.println("String_Node_Str");
  EnvVars env=build.getEnvironment(listener);
  env.overrideAll(build.getBuildVariables());
  try {
    healthReports=new JacocoHealthReportThresholds(Integer.parseInt(minimumClassCoverage),Integer.parseInt(maximumClassCoverage),Integer.parseInt(minimumMethodCoverage),Integer.parseInt(maximumMethodCoverage),Integer.parseInt(minimumLineCoverage),Integer.parseInt(maximumLineCoverage),Integer.parseInt(minimumBranchCoverage),Integer.parseInt(maximumBranchCoverage),Integer.parseInt(minimumInstructionCoverage),Integer.parseInt(maximumInstructionCoverage),Integer.parseInt(minimumComplexityCoverage),Integer.parseInt(maximumComplexityCoverage));
  }
 catch (  NumberFormatException nfe) {
    healthReports=new JacocoHealthReportThresholds(0,0,0,0,0,0,0,0,0,0,0,0);
  }
  if ((execPattern == null) || (classPattern == null) || (sourcePattern == null)) {
    if (build.getResult().isWorseThan(Result.UNSTABLE)) {
      return true;
    }
    logger.println("String_Node_Str");
    build.setResult(Result.FAILURE);
    return true;
  }
  logger.println("String_Node_Str" + execPattern + "String_Node_Str"+ classPattern+ "String_Node_Str"+ sourcePattern+ "String_Node_Str"+ "String_Node_Str");
  JacocoReportDir dir=new JacocoReportDir(build);
  List<FilePath> matchedExecFiles=Arrays.asList(build.getWorkspace().list(resolveFilePaths(build,listener,execPattern)));
  logger.println("String_Node_Str" + execPattern + "String_Node_Str"+ matchedExecFiles.size());
  logger.print("String_Node_Str");
  dir.addExecFiles(matchedExecFiles);
  logger.print("String_Node_Str" + Util.join(matchedExecFiles,"String_Node_Str"));
  matchedClassDirs=resolveDirPaths(build,listener,classPattern);
  logger.print("String_Node_Str" + classPattern + "String_Node_Str");
  for (  FilePath file : matchedClassDirs) {
    dir.saveClassesFrom(file);
    logger.print("String_Node_Str" + file);
  }
  matchedSrcDirs=resolveDirPaths(build,listener,sourcePattern);
  logger.print("String_Node_Str" + sourcePattern + "String_Node_Str");
  for (  FilePath file : matchedSrcDirs) {
    dir.saveSourcesFrom(file);
    logger.print("String_Node_Str" + file);
  }
  logger.println("String_Node_Str");
  String[] includes={};
  if (inclusionPattern != null) {
    includes=inclusionPattern.split(DIR_SEP);
    logger.println("String_Node_Str" + Arrays.toString(includes));
  }
  String[] excludes={};
  if (exclusionPattern != null) {
    excludes=exclusionPattern.split(DIR_SEP);
    logger.println("String_Node_Str" + Arrays.toString(excludes));
  }
  final JacocoBuildAction action=JacocoBuildAction.load(build,rule,healthReports,listener,dir,includes,excludes);
  action.getThresholds().ensureValid();
  logger.println("String_Node_Str" + action.getThresholds());
  build.getActions().add(action);
  logger.println("String_Node_Str");
  final CoverageReport result=action.getResult();
  if (result == null) {
    logger.println("String_Node_Str");
    build.setResult(Result.FAILURE);
  }
 else {
    logger.println("String_Node_Str" + result.getClassCoverage().getPercentage() + "String_Node_Str"+ result.getMethodCoverage().getPercentage()+ "String_Node_Str"+ result.getLineCoverage().getPercentage()+ "String_Node_Str"+ result.getBranchCoverage().getPercentage()+ "String_Node_Str"+ result.getInstructionCoverage().getPercentage());
    result.setThresholds(healthReports);
    if (changeBuildStatus) {
      build.setResult(checkResult(action));
    }
  }
  return true;
}