On Mon, 2002-02-25 at 04:16, Stephane Bailliez wrote:
> 
> Is there someone working on the metrics part ?

Jeff integrated JDepend last nigth. It is under a BSD license and has a
simple parser. I am going to use the JavaCC parser to do some other neat
things as well. I am also interested (most interested) in generating
visualizations of the metrics.

> I committed a description of metrics in xdocs that would be nice to see.
> I also started to see how we could do that with the visitors but not sure
> yet about a couple of things.

What I was planning with one of the visitors was to populate an small
model that represents a Java source file. Then once you have populated a
set of these classes that represent a source file (or classfile) then
perform the metrics on those. There are also many other possible uses
for a object model for a source file too.

> If we have to create something like code audit there is some need to enhance
> the parser to have waaaaaaay more concrete nodes and also add a couple of
> helper methods to these nodes.

The parser is simply there as a start, the only thing I've added is the
ability to reuse the parser. Same thing I did with the Velocity parser.
The parser will also require some work to trap whitespace properly, say
if we wanted to make a pretty printer.

> my parser skills are a bit rusty but if someone want to give it a shot I can
> provide the javadoc related to the ast nodes in webgain audit. That should
> give a rough idea of what is used.

I think that would be fine as regenerating the parser from the grammar
shouldn't affect the nodes and I don't think we'll be changing the names
of the productions in the grammar so that should be fine.

> As I see it there is probably a need for 2 parsers. Metrics does not need as
> much nodes as audit and I believe it will slow down the metrics like crazy -
> just pure guess - since we often need to iterate back and forth through the
> childrens of a node and there is no need to iterate through 1000 when we are
> interested only in 1% of it.

Take a look at JDepend we could definitely use that for metrics. The
java parser we have I intend to be a rigorous parser and I'm going to
add 1.4 support (i believe someone just did on the javacc list) and
support for aspectj. I would really like to start coming up with some
metrics for aspect oriented code. I'm going to the AOSD conference in
April so hopefully I'll get some cool ideas there.

> Stephane
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, February 25, 2002 6:52 AM
> > To: [EMAIL PROTECTED]
> > Subject: cvs commit: jakarta-turbine-maven/src/templates/build
> > build-metrics.xml Control.vm build.xml
> > 
> > 
> > brekke      02/02/24 21:51:50
> > 
> >   Modified:    .        build-bootstrap.xml
> >                src/templates/build Control.vm build.xml
> >   Added:       src/templates/build build-metrics.xml
> >   Log:
> >   Preliminary support for generating some source code metrics via
> >   <a 
> > href="http://www.clarkware.com/software/JDepend.html";>JDepend</a>.
> >   Currently you need to have the JDepend jar in your 
> > $ANT_HOME/lib directory.
> >   
> >   Added a build-metrics.xml template to be generated when the 
> > build system is
> >   gen'd.  Added convience target, metrics, to build.xml so 
> > one can just use:
> >   
> >   ant metrics
> >   
> >   If you define -Duse.jdepend.gui=1 on the command-line the 
> > JDepend swing ui
> >   will start up.  The default mode is to generate a 
> > jdepend-report.txt in the
> >   root directory.  I have two targets commented out which 
> > generate an xml report.
> >   One uses the jdepend ant task that is included in Ant 1.5 
> > which can format
> >   xml and the other just uses the xmlgui version of JDepend 
> > and will work
> >   regardless of the ant version.
> >   
> >   Revision  Changes    Path
> >   1.14      +2 -1      jakarta-turbine-maven/build-bootstrap.xml
> >   
> >   Index: build-bootstrap.xml
> >   ===================================================================
> >   RCS file: /home/cvs/jakarta-turbine-maven/build-bootstrap.xml,v
> >   retrieving revision 1.13
> >   retrieving revision 1.14
> >   diff -u -r1.13 -r1.14
> >   --- build-bootstrap.xml   24 Feb 2002 21:22:05 -0000      1.13
> >   +++ build-bootstrap.xml   25 Feb 2002 05:51:49 -0000      1.14
> >   @@ -36,7 +36,8 @@
> >    
> >        <!-- Remove the elements of past generations before creating
> >             the new one -->
> >   -    
> >   +
> >   +    <delete file="build-metrics.xml"/>
> >        <delete file="build-docs.xml"/>
> >        <delete file="build-test.xml"/>
> >        <delete file="build.xml"/>
> >   
> >   
> >   
> >   1.6       +1 -1      
> > jakarta-turbine-maven/src/templates/build/Control.vm
> >   
> >   Index: Control.vm
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-turbine-maven/src/templates/build/Control.vm,v
> >   retrieving revision 1.5
> >   retrieving revision 1.6
> >   diff -u -r1.5 -r1.6
> >   --- Control.vm    23 Feb 2002 04:01:49 -0000      1.5
> >   +++ Control.vm    25 Feb 2002 05:51:49 -0000      1.6
> >   @@ -1,4 +1,4 @@
> >   -#set ($buildElements = 
> > ["build-docs.xml","build-test.xml","build.xml","default.proper
> ties","LICENSE","README.txt"])
> >   +#set ($buildElements = ["build-metrics.xml", 
> > "build-docs.xml","build-test.xml","build.xml","default.propert
> > ies","LICENSE","README.txt"])
> >    
> >    $project
> >    $project.name
> >   
> >   
> >   
> >   1.14      +5 -0      
> > jakarta-turbine-maven/src/templates/build/build.xml
> >   
> >   Index: build.xml
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-turbine-maven/src/templates/build/build.xml,v
> >   retrieving revision 1.13
> >   retrieving revision 1.14
> >   diff -u -r1.13 -r1.14
> >   --- build.xml     23 Feb 2002 16:40:14 -0000      1.13
> >   +++ build.xml     25 Feb 2002 05:51:49 -0000      1.14
> >   @@ -366,6 +366,11 @@
> >      <!-- 
> > ================================================================== -->
> >    
> >      <target
> >   +    name="metrics">
> >   +    <ant antfile="build-metrics.xml"/>
> >   +  </target>
> >   +
> >   +  <target
> >        name="test">
> >        <ant antfile="build-test.xml"/>
> >      </target>
> >   
> >   
> >   
> >   1.1                  
> > jakarta-turbine-maven/src/templates/build/build-metrics.xml
> >   
> >   Index: build-metrics.xml
> >   ===================================================================
> >   <?xml version="1.0"?>
> >   
> >   <project name="$project.id" default="metrics" basedir=".">
> >   
> >   #include("build.properties.loading")
> >   
> >   #include("build.init.target")
> >   
> >     <!-- 
> > ================================================================== -->
> >     <!-- M E T R I C S                                        
> >               -->
> >     <!-- 
> > ================================================================== -->
> >   
> >     <target
> >       name="metrics"
> >       depends="init,jdepend-report,jdepend-gui"
> >       description="==> Gathers the code metrics">
> >   
> >     </target>
> >   
> >     <!-- 
> > ==============================================================
> > ========== -->
> >     <!-- J D E P E N D  R E P O R T  T A R G E T              
> >                     -->
> >     <!-- 
> > ==============================================================
> > ========== -->
> >     <target name="jdepend-report" unless="use.jdepend.gui">
> >   
> >       <!-- Once we start to use Ant 1.5, we can use the 
> > builtin jdepend target -->
> >       <!-- to generate our xml reports.  Until then we can 
> > use the xmlui.      -->
> >       <!-- 
> >       <jdepend format="xml" 
> > outputfile="${docs.src}/jdepend-report.xml">
> >         <sourcespath>
> >           <pathelement location="${src.dir}/java" />
> >         </sourcespath>
> >         <classpath location="${build.dest}" />
> >       </jdepend>
> >       -->
> >   
> >       <!-- This call will gen a xml report regardless of the 
> > version of ant. -->
> >       <!--
> >       <java classname="jdepend.xmlui.JDepend" fork="yes" 
> > failonerror="yes">
> >         <arg line="-file ${docs.src}/jdepend-report.xml 
> > ${src.dir}/java ${build.dest}"/>
> >         <classpath>
> >           <path refid="classpath"/>
> >           <pathelement location="./"/>
> >           <pathelement path="${java.class.path}" />
> >         </classpath>
> >       </java>
> >       -->
> >   
> >       <!-- For now we just creat a text report using the 
> > built in jdepend task. -->
> >       <jdepend outputfile="jdepend-report.txt">
> >         <sourcespath>
> >           <pathelement location="${src.dir}/java"/>
> >         </sourcespath>
> >         <classpath location="${build.dest}" />
> >       </jdepend>
> >   
> >     </target>
> >   
> >     <!-- 
> > ==============================================================
> > ========== -->
> >     <!-- J D E P E N D  G U I  T A R G E T                    
> >                     -->
> >     <!-- 
> > ==============================================================
> > ========== -->
> >     <target name="jdepend-gui" if="use.jdepend.gui">
> >       <java classname="jdepend.swingui.JDepend" fork="yes" 
> > failonerror="yes">
> >         <arg line="${src.dir}/java ${build.dest}"/>
> >         <classpath>
> >           <path refid="classpath"/>
> >           <pathelement location="./"/>
> >           <pathelement path="${java.class.path}" />
> >         </classpath>
> >       </java>
> >     </target>
> >   
> >   </project>
> >   
> >   
> >   
> > 
> > --
> > To unsubscribe, e-mail:   
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
-- 
jvz.

Jason van Zyl
[EMAIL PROTECTED]

http://tambora.zenplex.org


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to