示例#1
0
 /**
  * Performs validation of the input source files.
  *
  * @param sources Input source files.
  * @param path Base path.
  */
 @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
 public void validate(final Collection<DataSource> sources, final String path) {
   this.config.setRuleSets("com/qulice/pmd/ruleset.xml");
   final Report report = new Report();
   report.addListener(this.listener);
   this.context.setReport(report);
   for (final DataSource source : sources) {
     final String name = source.getNiceFileName(false, path);
     this.context.setSourceCodeFilename(name);
     this.context.setSourceCodeFile(new File(name));
     this.validateOne(source);
   }
 }
  /**
   * @param parser Parser
   * @param dataSources List<DataSource>
   * @param debug boolean
   * @throws IOException
   */
  private static void parseStress(Parser parser, List<DataSource> dataSources, boolean debug)
      throws IOException {

    long start = System.currentTimeMillis();

    for (DataSource dataSource : dataSources) {
      parser.parse(
          dataSource.getNiceFileName(false, null),
          new InputStreamReader(dataSource.getInputStream()));
    }

    if (debug) {
      long end = System.currentTimeMillis();
      long elapsed = end - start;
      System.out.println("That took " + elapsed + " ms");
    }
  }
  /**
   * @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);
      }
    }
  }