module Buildr::Pmd

Provides the pmd:rule:xml, pmd:rule:html, pmd:cpd:xml and pmd:cpd:html tasks.

Require explicitly using require 'buildr/pmd'.

Public Class Methods

cpd(format, output_file_prefix, source_paths, options = {}) click to toggle source
# File addon/buildr/pmd.rb, line 60
def cpd(format, output_file_prefix, source_paths, options = {})
  dependencies = (options[:dependencies] || []) + self.dependencies
  cp = Buildr.artifacts(dependencies).each(&:invoke).map(&:to_s)
  minimum_token_count = options[:minimum_token_count] || 100
  encoding = options[:encoding] || 'UTF-8'

  puts 'PMD-CPD: Analyzing source code...'
  mkdir_p File.dirname(output_file_prefix)

  Buildr.ant('cpd-report') do |ant|
    ant.taskdef :name=> 'cpd', :classpath => cp.join(';'), :classname => 'net.sourceforge.pmd.cpd.CPDTask'
    ant.cpd :format => format, :minimumTokenCount => minimum_token_count, :encoding => encoding, :outputFile => "#{output_file_prefix}.#{format}" do
      source_paths.each do |src|
        ant.fileset :dir=> src, :includes=>'**/*.java' if File.directory?(src)
      end
    end

  end
end
dependencies() click to toggle source

The specs for requirements

# File addon/buildr/pmd.rb, line 26
def dependencies
  %w(net.sourceforge.pmd:pmd:jar:5.1.3 jaxen:jaxen:jar:1.1.1 commons-io:commons-io:jar:2.2 com.beust:jcommander:jar:1.27 asm:asm:jar:3.2)
end
pmd(rule_set_files, format, output_file_prefix, source_paths, options = {}) click to toggle source
# File addon/buildr/pmd.rb, line 30
def pmd(rule_set_files, format, output_file_prefix, source_paths, options = {})
  dependencies = (options[:dependencies] || []) + self.dependencies
  cp = Buildr.artifacts(dependencies).each(&:invoke).map(&:to_s)
  (options[:rule_set_paths] || []).each {|p| cp << p}

  rule_sets = rule_set_files.dup

  Buildr.artifacts(options[:rule_set_artifacts] || []).each do |artifact|
    a = artifact.to_s
    dirname = File.dirname(a)
    rule_sets << a[dirname.length + 1, a.length]
    cp << File.dirname(a)
    artifact.invoke
  end

  puts 'PMD: Analyzing source code...'
  mkdir_p File.dirname(output_file_prefix)

  Buildr.ant('pmd-report') do |ant|
    ant.taskdef :name=> 'pmd', :classpath => cp.join(';'), :classname => 'net.sourceforge.pmd.ant.PMDTask'
    ant.pmd :shortFilenames => true, :rulesetfiles => rule_sets.join(',') do
      ant.formatter :type => format, :toFile => "#{output_file_prefix}.#{format}"
      source_paths.each do |src|
        ant.fileset :dir=> src, :includes=>'**/*.java' if File.directory?(src)
      end
    end

  end
end