Whats New in V1.5.0?

What's New In Analyst4j V 1.5.0

Watch Demo

Version Comparison

Given that software metrics help us to evaluate various quality aspects of a system, comparing the measurements of two or more versions of the same system gives a new dimension to understand progress in quality. A system under development or maintenance goes through changes continuously, one way to ensure that the quality of code is not been compromised, would be to compare the quality of code, before and after changes. Analyst4j V1.0.0 had several quality analysis definitions with which we where able to judge the current quality of code, with Analyst4j V1.5.0 we can perform the analysis across several versions of the same system and visualize them as graphs.

For eg., use SEI Maintainability Index distribution graph to understand whether maintainability of a system has progressed.  The following quality analysis graph represents the distribution of Maintainability Index of JFreechart source across three versions.(jfreechart-0.9.15, jfreechart-1.0.1-pre1, jfreechart-1.0.1).

MI Version Comparison

View Point: Though there was a drop of "Maintainable Range" of files in jfreechart-1.0.1-pre1 compared to jfreechart-0.9.15, but the number of files in the "Maintainable Range" in jfreechart-1.0.1 release has improved considerably. Another observation is that the number of cases(files) in the other three categories of the analysis have more or less remained the same across the versions. This means that additions and changes have not deterred the quality of the system across these versions and quality of code is progressive.

On the other hand comparing the measurements of two or more similar systems would help to benchmark the quality of the systems compared with their peers.  For eg, comparing  JBoss with JOnAs source code would help to benchmark the quality of similar systems which would be very useful when you are evaluating several open source products  providing similar features. 

With Analyst4j V1.5.0 all quality analysis(distribution, comparison and custom analysis) can be visualized for one or more analyzed projects, be it different versions of the same system or different systems.


Change / Regression Analysis using version comparison

Analyzing regression or change in quality of a system could be a lot easier using software metrics than with any other methods. Measuring regression for a change in the system would justify the quality of work being carried out. Any refactoring or code cleaning effort if preceded and succeeded by such regression analysis would help us to evaluate that the system's progressiveness.

For eg., the following is an analysis of "Coupling Between Objects Vs Response of Class" across two version of Jfreechart(jfreechart-1.0.1-pre1 and jfreechart-1.0.1).

Coupling Vs Response

View Point:In graph the "red squares" represent a pre-release version of Jfreechart(jfreechart-1.0.1-pre1) while the "blue dots" represent a newer release version Jfreechart(jfreechart-1.0.1). To understand change on a higher level, it is enough to analyze that if a color ("blue dots") are prominent than the other colors ("red squares") then the system must have gone through major changes. As we can see in the above case "red squares" are more prominent than the "blue dots", so we can conclude that there has been more minor changes and less major changes in the code.

A closer analysis of the above graph reveals the kind of change a class has gone through between version. The following graph attempts to explain the same graph but more in detail.

Detailed CBO Vs RFC
View Point: CBO++ / CBO-- indicates there is increase/decrease in Coupling Between Objects and RFC++ / RFC-- indicates increase / decrease of Response for Class. Now if we observe the graph of "CBO Vs RFC" for two version of a system we understand what has changed with reference to CBO and RFC. 

While the former graph depicts change/regression on a higher level, the later depicts changes/regression at individual class level. With Analyst4jV1.5.0 you can perform such(built-in and custom) analysis to understand change/regression in quality effectively and more accurately. 


Multi Project Search Results Comparison

Analyst4j is the first eclipse plugin to provide a metrics based search facility. While it is useful and informative to find objects which match a particular quality attribute threshold, Analyst4jV1.5.0 improves further and allows you to run a search query across projects and provides a comparison graph based on the search results. This helps us to find whether a particular type of objects have increased or decreased across different version of a project.

For e.g., a search for the antipattern "Swiss Knife Classes" using the metrics "CBO, WMC and RFC" across four version of Jfreechart generated the following graph.

Search Definition

Swiss Knife Classes Search Query

Search Results across four version of Jfreechart

SKC Search Results

View Point: We can observe that the number of Swiss Knife Classes had increased from 4 to 7 between (jfreechart-0.9.15 and jfreechart-1.0.1-pre1) and had remained 7 in the release version (jfreechart-1.0.1) and increased again from 7 to 8 in the latest version(jfreechart-1.0.5). While increase in Swiss Knife Classes are not indicators of good quality, the change is minimum compared to the effort/improved functionality. Such graph helps to understand and justify changes in the system.

With Analyst4jV1.5.0 you can perform such analysis using 20+ industry standard software metrics and quickly understand the changes across versions of a system.


Visualize Problem Markers

Analyst4j V1.5.0 provides yet another unique feature to visualize and analyze problems reported by various plugins with reference to metrics based search results.

The "Problems View" of Eclipse is a centralized and effective problem reporting system for plugin providers, it is also very useful for developers and team leaders to analyze the issues reported by these plugins and Eclipse JDT. However one bottle neck when one attempts to fix the problems reported is that there are too many problems reported and it becomes difficult to plan or prioritize the maintenance activity. Analyst4j introduced the idea of prioritizing maintenance activities using software metrics, form a search query using a standard metric such as SEI Maintainability Index or Cyclomatic Complexity or metric of your choice and then assign priority based on the category, begin by fixing the problems reported in the code (category) of highest priority.

For eg., a search for the antipattern "Spaghetti Code" using "Essential Complexity and Cyclomatic Complexity" and visualize the problems reported by various plugins.

Spaghetti Code

View Point:FindBugs reports 11 problems and 4 Java Problem reported by Eclipse JDT on the code identified as Spaghetti Code.

Running across several versions of jfreechart

 

Across Versions


View Point:It can be observed that there are no surges in spaghetti-ness or problems reported.

Alternatively the "Problem Marker Visualization" feature can be used to justify the use of software metrics in software development and maintenance. Analyzing the problems reported for good and bad threshold of a metrics would reveal why metrics should be used.

For e.g, Comparing the "problems / bugs" reported for maintainable and unmaintainable code using SEI Maintainability Index.

 

MI  Bugs

 

View Point:It appears that there are more problems are reported in "maintainable code" than in "less maintainable code", but taking a second look at the ratio of problems vs cases reveals a fact that code with good SEI Maintainable Index(MI>65) have less problems / bugs than code with less Maintainability  Index.

 Source Version
 MI>65 *Problems/Cases Ratio
 MI<65 *Problems/Cases Ratio
jfreechart-0.9.15489/629  = 0.77 155/47 = 3.29
jfreechart-1.0.0-pre1
394/601 = 0.65
205/61 = 3.36
jfreechart-1.0.1
424/667 = 0.63
246/71 = 3.46

 * Problems reported by FindBugs

It can be clearly observed that there are more problems / bugs reported for code who's Maintainability Index is less than 65, therefore making sure MI is above 65 not only ensures maintainability but also avoids risk of introducing bugs.

Analyst4j V1.5.0 facilitates such quality analysis or metrics usage validation in conjunction with problems reported by various plugin provider.


Search View - Manage search queries.

Analyst4jV1.5.0 introduces a new 'Search View' to manage saved search queries. The 'Search View' makes it easier to work with search queries, multi project search analysis and marker visualization.

 

Search View

 


More Metrics

Enhance search capabilities with more useful metrics in Analyst4jV1.5.0.

  • Number of Anonymous Inner Classes In a Method. Can be used to identify event handler coding.
  • Recursive Methods. Quickly find these important but high risk methods.
  • No.Of Conditional Statements In a Method. Can be used to evaluate decision density when used in conjunction with No.Of Statements.
  • No.Of Statements in a Method. Can be used to find empty methods and as axis for comparing with other measurements.