Return-Path: X-Original-To: apmail-buildr-commits-archive@www.apache.org Delivered-To: apmail-buildr-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EBA447A9D for ; Sat, 29 Oct 2011 00:14:11 +0000 (UTC) Received: (qmail 21891 invoked by uid 500); 29 Oct 2011 00:14:11 -0000 Delivered-To: apmail-buildr-commits-archive@buildr.apache.org Received: (qmail 21868 invoked by uid 500); 29 Oct 2011 00:14:11 -0000 Mailing-List: contact commits-help@buildr.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@buildr.apache.org Delivered-To: mailing list commits@buildr.apache.org Received: (qmail 21861 invoked by uid 99); 29 Oct 2011 00:14:11 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 29 Oct 2011 00:14:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 29 Oct 2011 00:14:10 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 31600238888F for ; Sat, 29 Oct 2011 00:13:50 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1190700 - in /buildr/trunk: CHANGELOG addon/buildr/javancss.rake doc/more_stuff.textile Date: Sat, 29 Oct 2011 00:13:50 -0000 To: commits@buildr.apache.org From: donaldp@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111029001350.31600238888F@eris.apache.org> Author: donaldp Date: Sat Oct 29 00:13:49 2011 New Revision: 1190700 URL: http://svn.apache.org/viewvc?rev=1190700&view=rev Log: Add in a javancss extension and some basic documentation Added: buildr/trunk/addon/buildr/javancss.rake Modified: buildr/trunk/CHANGELOG buildr/trunk/doc/more_stuff.textile Modified: buildr/trunk/CHANGELOG URL: http://svn.apache.org/viewvc/buildr/trunk/CHANGELOG?rev=1190700&r1=1190699&r2=1190700&view=diff ============================================================================== --- buildr/trunk/CHANGELOG (original) +++ buildr/trunk/CHANGELOG Sat Oct 29 00:13:49 2011 @@ -1,5 +1,6 @@ 1.4.7 (Pending) * Added: Add a Checkstyle extension. +* Added: Add a JavaNCSS extension. * Change: Parameterize the the directory where the top level cobertura tasks will generate reports. Specify using Buildr::Cobertura.report_dir = '....' * Fixed: BUILDR-611 Buildr should not unnecessarily recompile Java files Added: buildr/trunk/addon/buildr/javancss.rake URL: http://svn.apache.org/viewvc/buildr/trunk/addon/buildr/javancss.rake?rev=1190700&view=auto ============================================================================== --- buildr/trunk/addon/buildr/javancss.rake (added) +++ buildr/trunk/addon/buildr/javancss.rake Sat Oct 29 00:13:49 2011 @@ -0,0 +1,155 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with this +# work for additional information regarding copyright ownership. The ASF +# licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +module Buildr + # Provides the javancss:html and javancss:xml tasks. + # Require explicitly using require "buildr/javancss". + module JavaNCSS + + class << self + + # The specs for requirements + def dependencies + [ + 'org.codehaus.javancss:javancss:jar:32.53', + 'javancss:ccl:jar:29.50', + 'javancss:jhbasic:jar:29.50' + ] + end + + def javancss(output_file, source_paths, options = {}) + dependencies = (options[:dependencies] || []) + self.dependencies + cp = Buildr.artifacts(dependencies).each(&:invoke).map(&:to_s) + + args = [] + args << "-all" + args << "-xml" + args << "-out" + args << output_file + args << "-recursive" + source_paths.each do |source_path| + args << source_path + end + + begin + Java::Commands.java 'javancss.Main', *(args + [{:classpath => cp, :properties => options[:properties], :java_args => options[:java_args]}]) + rescue => e + raise e if options[:fail_on_error] + end + end + end + + class Config + def enabled? + !!@enabled + end + + attr_writer :enabled + + def html_enabled? + File.exist?(self.style_file) + end + + attr_writer :config_directory + + def config_directory + @config_directory || project._(:source, :main, :etc, :javancss) + end + + attr_writer :report_dir + + def report_dir + @report_dir || project._(:reports, :javancss) + end + + attr_writer :fail_on_error + + def fail_on_error? + @fail_on_error.nil? ? false : @fail_on_error + end + + attr_writer :xml_output_file + + def xml_output_file + @xml_output_file || "#{self.report_dir}/javancss.xml" + end + + attr_writer :html_output_file + + def html_output_file + @html_output_file || "#{self.report_dir}/javancss.html" + end + + attr_writer :style_file + + def style_file + @style_file || "#{self.config_directory}/javancss2html.xsl" + end + + def source_paths + @source_paths ||= [self.project.compile.sources, self.project.test.compile.sources] + end + + protected + + def initialize(project) + @project = project + end + + attr_reader :project + + end + + module ProjectExtension + include Extension + + def javancss + @javancss ||= Buildr::JavaNCSS::Config.new(project) + end + + after_define do |project| + if project.javancss.enabled? + desc "Generate JavaNCSS xml report." + project.task("javancss:xml") do + puts "JavaNCSS: Analyzing source code..." + mkdir_p File.dirname(project.javancss.xml_output_file) + Buildr::JavaNCSS.javancss(project.javancss.xml_output_file, + project.javancss.source_paths.flatten.compact, + :fail_on_error => project.javancss.fail_on_error?) + end + + if project.javancss.html_enabled? + xml_task = project.task("javancss:xml") + desc "Generate JavaNCSS html report." + project.task("javancss:html" => xml_task) do + puts "JavaNCSS: Generating report" + mkdir_p File.dirname(project.javancss.html_output_file) + Buildr.ant "javancss" do |ant| + ant.xslt :in => project.javancss.xml_output_file, + :out => project.javancss.html_output_file, + :style => project.javancss.style_file + end + end + + end + end + end + end + end +end + +class Buildr::Project + include Buildr::JavaNCSS::ProjectExtension +end Modified: buildr/trunk/doc/more_stuff.textile URL: http://svn.apache.org/viewvc/buildr/trunk/doc/more_stuff.textile?rev=1190700&r1=1190699&r2=1190700&view=diff ============================================================================== --- buildr/trunk/doc/more_stuff.textile (original) +++ buildr/trunk/doc/more_stuff.textile Sat Oct 29 00:13:49 2011 @@ -833,6 +833,29 @@ The extension will include the source an If the xsl file named "checkstyle-report.xsl" is present in the configuration directory then a "checkstyle:html" task will be defined. The name of the xsl file can be overridden by the parameter "checkstyle.style_file". +h2(#javancss). JavaNCSS + +Checkstyle is integrated into Buildr through an extension. The extension adds the "javancss:xml" task that generates an xml report and may add a "javancss:html" task if an appropriate xsl is preset. A typical project that uses the extension may look something like; + +{% highlight ruby %} +require 'buildr/javancss' + +define "foo" do + project.version = "1.0.0" + + define "bar" do ... end + + javancss.enabled = true + javancss.config_directory = _('etc/javancss') + javancss.source_paths << project('bar')._(:source, :main, :java) + +end +{% endhighlight %} + +The extension will include the source and test directories of the project when invoking the javancss tool. These can be added to by the parameters "javancss.source_paths". + +By default checkstyle will look for all configuration files in the src/main/etc/javancss directory but this can be overriden by the setting the "javancss.config_directory" parameter. The "javancss:xml" task will be defined if the "javancss.enabled" property is set to true. If the xsl file named "javancss2html.xsl" is present in the configuration directory then a "javancss:html" task will be defined. The name of the xsl file can be overridden by the parameter "javancss.style_file". + h2(#jaxb_xjc). JAXB Xjc Compiler Buildr includes an extension that provides the ability to invoke jaxb xjc binding compiler. A typical project that uses the extension may look something like;