Program: 101255
Project: 101255
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 Collection<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) {
      logger.info("String_Node_Str",sourcesToPreloadEncoding);
      @SuppressWarnings("String_Node_Str") final List<File> filesToPreload=FileUtils.getFiles(baseDir,sourcesToPreload,null);
      logger.info("String_Node_Str",filesToPreload.size());
      final WebClient webClient=localClient.get();
      final ScriptInstrumenter instrumenter=new ScriptInstrumenter(webClient.getJavaScriptEngine().getContextFactory(),coverageVariableName);
      for (      final File file : filesToPreload) {
        final String source=CharStreams.toString(Files.newReaderSupplier(file,Charset.forName(sourcesToPreloadEncoding)));
        instrumenter.preProcess(null,source,"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,0.0);
        }
        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);
  }
}

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 Collection<Pattern> ignorePatterns=createPatterns();
  final RunStats totalStats=new RunStats(new File(outputDir,reportName),"String_Node_Str");
  if (outputStrategy.contains(OutputStrategy.TOTAL) && sourcesToPreload != null) {
    logger.info("String_Node_Str",sourcesToPreloadEncoding);
    @SuppressWarnings("String_Node_Str") final List<File> filesToPreload=FileUtils.getFiles(baseDir,sourcesToPreload,null);
    logger.info("String_Node_Str",filesToPreload.size());
    final WebClient webClient=localClient.get();
    final ScriptInstrumenter instrumenter=new ScriptInstrumenter(webClient.getJavaScriptEngine().getContextFactory(),coverageVariableName);
    for (    final File file : filesToPreload) {
      logger.debug("String_Node_Str",file);
      final String source=CharStreams.toString(Files.newReaderSupplier(file,Charset.forName(sourcesToPreloadEncoding)));
      instrumenter.preProcess(null,source,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,0.0);
      }
      final FileStats fileStats=getFileStatsFromScriptData(coverageData,data);
      totalStats.add(fileStats);
    }
  }
  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)) {
    for (    final RunStats runStats : allRunStats) {
      if (runStats != RunStats.EMPTY) {
        for (        final FileStats fileStats : runStats) {
          totalStats.add(fileStats);
        }
      }
    }
    writeRunStats(totalStats);
  }
}