/** * @param languageVersion LanguageVersion * @param ruleSet RuleSet * @param dataSources List<DataSource> * @param results Set<RuleDuration> * @param debug boolean * @throws PMDException * @throws IOException */ private static void stress( LanguageVersion languageVersion, RuleSet ruleSet, List<DataSource> dataSources, Set<RuleDuration> results, boolean debug) throws PMDException, IOException { for (Rule rule : ruleSet.getRules()) { if (debug) { System.out.println("Starting " + rule.getName()); } RuleSet working = new RuleSet(); working.addRule(rule); RuleSets ruleSets = new RuleSets(working); PMDConfiguration config = new PMDConfiguration(); config.setDefaultLanguageVersion(languageVersion); RuleContext ctx = new RuleContext(); long start = System.currentTimeMillis(); Reader reader = null; for (DataSource dataSource : dataSources) { reader = new InputStreamReader(dataSource.getInputStream()); ctx.setSourceCodeFilename(dataSource.getNiceFileName(false, null)); new SourceCodeProcessor(config).processSourceCode(reader, ruleSets, ctx); IOUtil.closeQuietly(reader); } long end = System.currentTimeMillis(); long elapsed = end - start; results.add(new RuleDuration(elapsed, rule)); if (debug) { System.out.println("Done timing " + rule.getName() + "; elapsed time was " + elapsed); } } }