This page will describe the different metrics that are available and tracked by Sonar. We will cover the following topics.
Code duplication is very hard to define. It generally falls within one of these definitions.
Again, Sonar has the tools for you to see these duplicated blocks.
This metric tells you how many cycles exist between different Java packages. A cycle is defined as a circular dependency between two packages, one depending on the other and vice versa.
Let's take the example of a program developed with the Domain Driven Design pattern. We start off with 3 layers.
Transaction logic is put in the service layer. Starts absorbing business rules. So we push it down further into the model. Service layer seems pristine and focuses on one thing.
But then more requirements come in. Model relationships must be implemented. (ie. Line items vs. orders) We want to find all line items for a given order. The model starts depending on repository
Service -> Repo -> Model -> Repo
Sonar calls these Directory Tangle Index. Anything above the downwards diagonal is a circular dependency.
Click on one of the red value in the cycle matrix. It will highlight the offending counterpart in the corresponding package.
A list of files is displayed. These are where the dependencies must be cut.
It is the cyclomatic complexity, also known as McCabe metric. Whenever the control flow of a function splits, the complexity counter gets incremented by one. Each function has a minimum complexity of 1.
Or. A measurement of the intricacy of a program module based on the number of repetitive cycles or loops that are made in the program logic. It is used as a general measure of complexity for software quality control as well as to determine the number of testing procedures
public void process(Car myCar){ // +1 if(myCar.isNotMine()){ // +1 return; // +1 } car.paint("red"); car.changeWheel(); while(car.hasGazol() && car.getDriver().isNotStressed()){ // +2 car.drive(); } return; } |
Each project has a complexity analysis tool. ie: kettle-core.