Program: 101251
Project: 101251
Buggy source:
public void run() throws IOException {
  FileUtils.mkdir(outputDir.getAbsolutePath());
  @SuppressWarnings("String_Node_Str") final List<File> tests=FileUtils.getFiles(baseDir,includes,excludes);
  if (tests.isEmpty()) {
    logger.warn("String_Node_Str");
    return;
  }
  logger.info("String_Node_Str",tests.size());
  threadCount=Math.min(threadCount,tests.size());
  logger.info("String_Node_Str",threadCount);
  logger.info("String_Node_Str",outputStrategy);
  if (!includeInlineScripts) {
    noInstrumentPatterns.add(inlineScriptRe);
    noInstrumentPatterns.add("String_Node_Str");
    noInstrumentPatterns.add("String_Node_Str");
  }
  if (!noInstrumentPatterns.isEmpty()) {
    logger.info("String_Node_Str",StringUtils.join(noInstrumentPatterns,"String_Node_Str"));
  }
  final Set<Pattern> ignorePatterns=createPatterns();
  final ExecutorService executorService=Executors.newFixedThreadPool(threadCount);
  final CompletionService<RunStats> completionService=new ExecutorCompletionService<RunStats>(executorService);
  for (  final File test : tests) {
    completionService.submit(new Callable<RunStats>(){
      @Override public RunStats call(){
        logger.info("String_Node_Str",test.getAbsoluteFile().toURI().normalize().getPath());
        try {
          final RunStats runStats=runTest(test,ignorePatterns);
          if (runStats == RunStats.EMPTY) {
            logger.warn("String_Node_Str",test);
          }
 else           if (outputStrategy.contains(OutputStrategy.PER_TEST)) {
            writeRunStats(runStats);
          }
          return runStats;
        }
 catch (        final IOException e) {
          return RunStats.EMPTY;
        }
      }
    }
);
  }
  final List<RunStats> allRunStats=Lists.newLinkedList();
  try {
    for (    final File test : tests) {
      try {
        final Future<RunStats> future=completionService.take();
        final RunStats runStats=future.get();
        allRunStats.add(runStats);
      }
 catch (      final Exception e) {
        logger.warn("String_Node_Str",test.getAbsolutePath(),e.getMessage());
        logger.debug(e.getMessage(),e);
      }
    }
  }
  finally {
    executorService.shutdown();
  }
  logger.info("String_Node_Str");
  if (outputStrategy.contains(OutputStrategy.TOTAL)) {
    final RunStats totalStats=new RunStats(new File(outputDir,reportName),"String_Node_Str");
    if (sourcesToPreload != null) {
      @SuppressWarnings("String_Node_Str") final List<File> filesToPreload=FileUtils.getFiles(baseDir,sourcesToPreload,null);
      final WebClient webClient=localClient.get();
      final ScriptInstrumenter instrumenter=new ScriptInstrumenter(webClient.getJavaScriptEngine().getContextFactory(),coverageVariableName);
      for (      final File file : filesToPreload) {
        instrumenter.preProcess(null,org.apache.commons.io.FileUtils.readFileToString(file),"String_Node_Str" + file.getAbsolutePath(),0,null);
      }
      for (      final ScriptData data : instrumenter.getScriptDataList()) {
        final FileStats fileStats=getFileStatsFromScriptData(emptyCoverageMapOfFiles,data);
        totalStats.add(fileStats);
      }
    }
    for (    final RunStats runStats : allRunStats) {
      if (runStats != RunStats.EMPTY) {
        for (        final FileStats fileStats : runStats) {
          totalStats.add(fileStats);
        }
      }
    }
    writeRunStats(totalStats);
  }
}

Fixed version (ground truth):
public void run() throws IOException {
  FileUtils.mkdir(outputDir.getAbsolutePath());
  @SuppressWarnings("String_Node_Str") final List<File> tests=FileUtils.getFiles(baseDir,includes,excludes);
  if (tests.isEmpty()) {
    logger.warn("String_Node_Str");
    return;
  }
  logger.info("String_Node_Str",tests.size());
  threadCount=Math.min(threadCount,tests.size());
  logger.info("String_Node_Str",threadCount);
  logger.info("String_Node_Str",outputStrategy);
  if (!includeInlineScripts) {
    noInstrumentPatterns.add(inlineScriptRe);
    noInstrumentPatterns.add("String_Node_Str");
    noInstrumentPatterns.add("String_Node_Str");
  }
  if (!noInstrumentPatterns.isEmpty()) {
    logger.info("String_Node_Str",StringUtils.join(noInstrumentPatterns,"String_Node_Str"));
  }
  final Set<Pattern> ignorePatterns=createPatterns();
  final ExecutorService executorService=Executors.newFixedThreadPool(threadCount);
  final CompletionService<RunStats> completionService=new ExecutorCompletionService<RunStats>(executorService);
  for (  final File test : tests) {
    completionService.submit(new Callable<RunStats>(){
      @Override public RunStats call(){
        logger.info("String_Node_Str",test.getAbsoluteFile().toURI().normalize().getPath());
        try {
          final RunStats runStats=runTest(test,ignorePatterns);
          if (runStats == RunStats.EMPTY) {
            logger.warn("String_Node_Str",test);
          }
 else           if (outputStrategy.contains(OutputStrategy.PER_TEST)) {
            writeRunStats(runStats);
          }
          return runStats;
        }
 catch (        final IOException e) {
          return RunStats.EMPTY;
        }
      }
    }
);
  }
  final List<RunStats> allRunStats=Lists.newLinkedList();
  try {
    for (    final File test : tests) {
      try {
        final Future<RunStats> future=completionService.take();
        final RunStats runStats=future.get();
        allRunStats.add(runStats);
      }
 catch (      final Exception e) {
        logger.warn("String_Node_Str",test.getAbsolutePath(),e.getMessage());
        logger.debug(e.getMessage(),e);
      }
    }
  }
  finally {
    executorService.shutdown();
  }
  logger.info("String_Node_Str");
  if (outputStrategy.contains(OutputStrategy.TOTAL)) {
    final RunStats totalStats=new RunStats(new File(outputDir,reportName),"String_Node_Str");
    if (sourcesToPreload != null) {
      @SuppressWarnings("String_Node_Str") final List<File> filesToPreload=FileUtils.getFiles(baseDir,sourcesToPreload,null);
      final WebClient webClient=localClient.get();
      final ScriptInstrumenter instrumenter=new ScriptInstrumenter(webClient.getJavaScriptEngine().getContextFactory(),coverageVariableName);
      for (      final File file : filesToPreload) {
        instrumenter.preProcess(null,org.apache.commons.io.FileUtils.readFileToString(file),"String_Node_Str" + file.getAbsolutePath(),0,null);
      }
      for (      final ScriptData data : instrumenter.getScriptDataList()) {
        final Map<Integer,Double> coverageData=Maps.newHashMap();
        for (        final Integer lineNumber : data.getLineNumbersOfAllStatements()) {
          coverageData.put(lineNumber,0D);
        }
        final FileStats fileStats=getFileStatsFromScriptData(coverageData,data);
        totalStats.add(fileStats);
      }
    }
    for (    final RunStats runStats : allRunStats) {
      if (runStats != RunStats.EMPTY) {
        for (        final FileStats fileStats : runStats) {
          totalStats.add(fileStats);
        }
      }
    }
    writeRunStats(totalStats);
  }
}