Update pmd addon to support downloading rule files as an artifact.
Project: http://git-wip-us.apache.org/repos/asf/buildr/repo Commit: http://git-wip-us.apache.org/repos/asf/buildr/commit/e7f6ce48 Tree: http://git-wip-us.apache.org/repos/asf/buildr/tree/e7f6ce48 Diff: http://git-wip-us.apache.org/repos/asf/buildr/diff/e7f6ce48 Branch: refs/heads/master Commit: e7f6ce487ffb5fdb5e555b364d2b189a45ce8cfd Parents: 85be90c Author: Peter Donald <[email protected]> Authored: Mon Sep 22 08:57:46 2014 +1000 Committer: Peter Donald <[email protected]> Committed: Mon Sep 22 08:57:46 2014 +1000 ---------------------------------------------------------------------- CHANGELOG | 5 +++-- addon/buildr/pmd.rb | 23 +++++++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/buildr/blob/e7f6ce48/CHANGELOG ---------------------------------------------------------------------- diff --git a/CHANGELOG b/CHANGELOG index 672644f..a4d5894 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ 1.4.21 (Pending) -* Fixed : Update pmd addon to use pmd version 5.1.3. -* Fixed : BUILDR-702 - Retain Unix permission flags when merging +* Added: Update pmd addon to support downloading rule files as an artifact. +* Change: Update pmd addon to use pmd version 5.1.3. +* Fixed: BUILDR-702 - Retain Unix permission flags when merging zip files into another zip or tar archive. Submitted by Pepijn Van Eeckhoudt. 1.4.20 (2014-08-23) http://git-wip-us.apache.org/repos/asf/buildr/blob/e7f6ce48/addon/buildr/pmd.rb ---------------------------------------------------------------------- diff --git a/addon/buildr/pmd.rb b/addon/buildr/pmd.rb index ba42a07..5110e62 100644 --- a/addon/buildr/pmd.rb +++ b/addon/buildr/pmd.rb @@ -38,12 +38,22 @@ module Buildr 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_set_files.join(',') do + 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' @@ -85,7 +95,12 @@ module Buildr attr_writer :rule_set_files def rule_set_files - @rule_set_files ||= ['rulesets/java/basic.xml', 'rulesets/java/imports.xml', 'rulesets/java/unusedcode.xml', 'rulesets/java/finalizers.xml', 'rulesets/java/braces.xml'] + @rule_set_files ||= (self.rule_set_artifacts.empty? ? ['rulesets/java/basic.xml', 'rulesets/java/imports.xml', 'rulesets/java/unusedcode.xml', 'rulesets/java/finalizers.xml', 'rulesets/java/braces.xml'] : []) + end + + # Support specification of rule sets that are distributed as part of a maven repository + def rule_set_artifacts + @rule_set_artifacts ||= [] end attr_writer :rule_set_paths @@ -140,12 +155,12 @@ module Buildr if project.pmd.enabled? desc 'Generate pmd xml report.' project.task('pmd:rule:xml') do - Buildr::Pmd.pmd(project.pmd.rule_set_files, 'xml', project.pmd.output_file_prefix, project.pmd.flat_source_paths, :rule_set_paths => project.pmd.rule_set_paths) + Buildr::Pmd.pmd(project.pmd.rule_set_files, 'xml', project.pmd.output_file_prefix, project.pmd.flat_source_paths, :rule_set_paths => project.pmd.rule_set_paths, :rule_set_artifacts => project.pmd.rule_set_artifacts) end desc 'Generate pmd html report.' project.task('pmd:rule:html') do - Buildr::Pmd.pmd(project.pmd.rule_set_files, 'html', project.pmd.output_file_prefix, project.pmd.flat_source_paths, :rule_set_paths => project.pmd.rule_set_paths) + Buildr::Pmd.pmd(project.pmd.rule_set_files, 'html', project.pmd.output_file_prefix, project.pmd.flat_source_paths, :rule_set_paths => project.pmd.rule_set_paths, :rule_set_artifacts => project.pmd.rule_set_artifacts) end desc 'Generate pmd cpd xml report.'
