Source code quality monitoring

Having a single quality profile of a software system by performing a code health check is helpful when the critical parts of a software needs to be identified and its quality needs to be improved. On the other hand, there are many reasons in favor of continuously monitoring the quality attributes.

  • The software metrics become much more meaningful, when their change in time is also considered. E.g. 20% for code duplication coverage is high, but the situation would be much worse if the percentage would be continuously increasing.
  • By continuous monitoring, the development processes can also be validated. E.g. newly appearing coding rule violations indicate that the process was not followed by the developer - the appropriate tools were not used, the eventual code review phases were neglected, etc.
  • Analyzing metric tendencies can help in identifying process deficiencies.
  • In many cases, during the initial assessment a large amount of problems are detected whose elimination is absolutely hopeless. In these cases, focusing only on the newly appeared issues is the only possible way. Continuous monitoring assures that the quality of the system does not decrease further.

The SourceInventory Shell is a framework based on J2EE architecture which serves for storing and tracking metrical and structural information of hierarchical entities. Consequently, it can be used for storing results of source code analysis performed on sequential versions of a software system. This way, the analysis results will be available back in time and many sophisticated queries can be performed in order to get an insight into the attributes and their changes.

The SourceInventory - BuildEngine bundle provides modules for managing, scheduling and governing the analysis processes of multiple software systems. The framework automatically checks the source code out of any supported CMS system, analyzes the source code, uploads the results into the central SQL database repository, generates and sends appropriate reports to the developers and managers. A real-life scenario is to integrate the framework into the nightly builds, in which case an up-to-date quality report of the system is be available at any time.