Program: 48002
Project: 48002
Buggy source:
@Override public void perform(@Nonnull Run<?,?> run,@Nonnull FilePath filePath,@Nonnull Launcher launcher,@Nonnull TaskListener taskListener) throws InterruptedException, IOException {
  Map<String,String> envs=run instanceof AbstractBuild ? ((AbstractBuild)run).getBuildVariables() : Collections.<String,String>emptyMap();
  healthReports=createJacocoHealthReportThresholds();
  final PrintStream logger=taskListener.getLogger();
  FilePath[] matchedClassDirs=null;
  FilePath[] matchedSrcDirs=null;
  if (run.getResult() == Result.FAILURE || run.getResult() == Result.ABORTED) {
    return;
  }
  logger.println("String_Node_Str");
  EnvVars env=run.getEnvironment(taskListener);
  env.overrideAll(envs);
  if ((execPattern == null) || (classPattern == null) || (sourcePattern == null)) {
    if (run.getResult().isWorseThan(Result.UNSTABLE)) {
      return;
    }
    logger.println("String_Node_Str");
    run.setResult(Result.FAILURE);
    return;
  }
  logger.println("String_Node_Str" + execPattern + "String_Node_Str"+ classPattern+ "String_Node_Str"+ sourcePattern+ "String_Node_Str"+ "String_Node_Str");
  JacocoReportDir dir=new JacocoReportDir(run.getRootDir());
  List<FilePath> matchedExecFiles=Arrays.asList(filePath.list(resolveFilePaths(run,taskListener,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(filePath,taskListener,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(filePath,taskListener,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(run,healthReports,taskListener,dir,includes,excludes);
  action.getThresholds().ensureValid();
  logger.println("String_Node_Str" + action.getThresholds());
  run.getActions().add(action);
  logger.println("String_Node_Str");
  final CoverageReport result=action.getResult();
  if (result == null) {
    logger.println("String_Node_Str");
    run.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) {
      run.setResult(checkResult(action));
    }
  }
  return;
}

Fixed version (ground truth):
@Override public void perform(@Nonnull Run<?,?> run,@Nonnull FilePath filePath,@Nonnull Launcher launcher,@Nonnull TaskListener taskListener) throws InterruptedException, IOException {
  Map<String,String> envs=run instanceof AbstractBuild ? ((AbstractBuild)run).getBuildVariables() : Collections.<String,String>emptyMap();
  healthReports=createJacocoHealthReportThresholds();
  final PrintStream logger=taskListener.getLogger();
  FilePath[] matchedClassDirs=null;
  FilePath[] matchedSrcDirs=null;
  if (run.getResult() == Result.FAILURE || run.getResult() == Result.ABORTED) {
    return;
  }
  logger.println("String_Node_Str");
  EnvVars env=run.getEnvironment(taskListener);
  env.overrideAll(envs);
  if ((execPattern == null) || (classPattern == null) || (sourcePattern == null)) {
    if (run.getResult().isWorseThan(Result.UNSTABLE)) {
      return;
    }
    logger.println("String_Node_Str");
    run.setResult(Result.FAILURE);
    return;
  }
  logger.println("String_Node_Str" + execPattern + "String_Node_Str"+ classPattern+ "String_Node_Str"+ sourcePattern+ "String_Node_Str"+ "String_Node_Str");
  JacocoReportDir dir=new JacocoReportDir(run.getRootDir());
  if (run instanceof AbstractBuild) {
    execPattern=resolveFilePaths((AbstractBuild)run,taskListener,execPattern);
  }
  List<FilePath> matchedExecFiles=Arrays.asList(filePath.list(resolveFilePaths(run,taskListener,execPattern,env)));
  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(filePath,taskListener,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(filePath,taskListener,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(run,healthReports,taskListener,dir,includes,excludes);
  action.getThresholds().ensureValid();
  logger.println("String_Node_Str" + action.getThresholds());
  run.getActions().add(action);
  logger.println("String_Node_Str");
  final CoverageReport result=action.getResult();
  if (result == null) {
    logger.println("String_Node_Str");
    run.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) {
      run.setResult(checkResult(action));
    }
  }
  return;
}