module Buildr::Pmd
Provides the pmd:xml
and pmd:html
tasks.
Require explicitly using require 'buildr/pmd'
.
Public Class Methods
dependencies()
click to toggle source
The specs for requirements
# File addon/buildr/pmd.rb, line 25 def dependencies %w( net.sourceforge.pmd:pmd-core:jar:6.11.0 net.sourceforge.pmd:pmd-java:jar:6.11.0 net.sourceforge.pmd:pmd-java8:jar:6.11.0 jaxen:jaxen:jar:1.1.6 commons-io:commons-io:jar:2.6 com.beust:jcommander:jar:1.72 org.ow2.asm:asm:jar:7.1 com.google.code.gson:gson:jar:2.8.5 net.java.dev.javacc:javacc:jar:5.0 net.sourceforge.saxon:saxon:jar:9.1.0.8 org.apache.commons:commons-lang3:jar:3.8.1 org.antlr:antlr4-runtime:jar:4.7 ) end
pmd(rule_set_files, format, output_file_prefix, source_paths, options = {})
click to toggle source
# File addon/buildr/pmd.rb, line 42 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) args = [] args << '-no-cache' args << '-shortnames' args << '-rulesets' << rule_sets.join(',') args << '-format' << format args << '-reportfile' << "#{output_file_prefix}.#{format}" files = [] source_paths.each do |src| files += Dir["#{src}/**/*.java"] if File.directory?(src) end files = files.sort.uniq Tempfile.open('pmd') do |tmp| tmp.write files.join(',') args << '-filelist' << tmp.path.to_s end begin Java::Commands.java 'net.sourceforge.pmd.PMD', *(args + [{:classpath => cp, :properties => options[:properties], :java_args => options[:java_args]}]) rescue Exception => e raise e if options[:fail_on_error] end end