Program: 47986
Project: 47986
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();
  EnvVars env=run.getEnvironment(taskListener);
  env.overrideAll(envs);
  healthReports=createJacocoHealthReportThresholds(env);
  if (run.getResult() == Result.FAILURE || run.getResult() == Result.ABORTED) {
    return;
  }
  final PrintStream logger=taskListener.getLogger();
  logger.println("String_Node_Str");
  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"));
  FilePath[] 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);
  }
  FilePath[] 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) {
    String expandedInclusion=env.expand(inclusionPattern);
    includes=expandedInclusion.split(DIR_SEP);
    logger.println("String_Node_Str" + Arrays.toString(includes));
  }
  String[] excludes={};
  if (exclusionPattern != null) {
    String expandedExclusion=env.expand(exclusionPattern);
    excludes=expandedExclusion.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.addAction(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));
    }
  }
}

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();
  EnvVars env=run.getEnvironment(taskListener);
  env.overrideAll(envs);
  healthReports=createJacocoHealthReportThresholds(env);
  if (run.getResult() == Result.FAILURE || run.getResult() == Result.ABORTED) {
    return;
  }
  final PrintStream logger=taskListener.getLogger();
  logger.println("String_Node_Str");
  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"));
  FilePath[] 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);
  }
  FilePath[] 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) {
    String expandedInclusion=env.expand(inclusionPattern);
    includes=expandedInclusion.split(DIR_SEP);
    logger.println("String_Node_Str" + Arrays.toString(includes));
  }
  String[] excludes={};
  if (exclusionPattern != null) {
    String expandedExclusion=env.expand(exclusionPattern);
    excludes=expandedExclusion.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.addAction(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));
    }
  }
}