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]>
