示例#1
0
  public static void doPMD(PMDConfiguration configuration) {

    // Load the RuleSets
    long startLoadRules = System.nanoTime();
    RuleSetFactory ruleSetFactory = RulesetsFactoryUtils.getRulesetFactory(configuration);

    RuleSets ruleSets =
        RulesetsFactoryUtils.getRuleSets(
            configuration.getRuleSets(), ruleSetFactory, startLoadRules);
    if (ruleSets == null) return;

    Set<Language> languages = getApplicableLanguages(configuration, ruleSets);
    List<DataSource> files = getApplicableFiles(configuration, languages);

    long reportStart = System.nanoTime();
    try {
      Renderer renderer = configuration.createRenderer();
      List<Renderer> renderers = new LinkedList<Renderer>();
      renderers.add(renderer);

      renderer.setWriter(IOUtil.createWriter(configuration.getReportFile()));
      renderer.start();

      Benchmarker.mark(Benchmark.Reporting, System.nanoTime() - reportStart, 0);

      RuleContext ctx = new RuleContext();

      processFiles(configuration, ruleSetFactory, files, ctx, renderers);

      reportStart = System.nanoTime();
      renderer.end();
      renderer.flush();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }