Git Product home page Git Product logo

iulianoroberto / softwarestaticanalyzer Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 15.49 MB

Software Static Analyzer is a python base tool to evaluate the evolution of software quality in the years, on the base of metrics value, presence of clones and other factor of static analysis of source code.

Python 100.00%
clone-coding metrics metrics-visualization software-engineering software-metrics technical-debt

softwarestaticanalyzer's Introduction

Software Static Analyzer

Software Static Analyzer is a python base tool to evaluate the evolution of software quality in the years, on the base of metrics value, presence of clones and other factor of static analysis of source code. This tool takes advantage of the features provided by Nicad, Ck and Sonarqube.

alt text

Features

The main features are:

  • Filter the list of commits made to the repository by selecting a commit for each year of publication (the last of the year). This is necessary to determine the viewpoints of the analysis.
  • Determine for each viewpoints:
    • Metrics value;
    • Number of clones;
    • Issue presence.
  • Generate summary graphs of the data produced.

Install Guide

Note that is is strongly recommended to use Ubuntu 22.04 or other Lubuntu version.

Prerequisites

Nicad for clone detection

Nicad is a flexible TXL-based hybrid language-sensitive / text comparison software clone detection system developed by James R. Cordy and Chanchal K. Roy, originally based on Chanchal's PhD thesis work. NiCad6 is a significantly new implementation with many important improvements and optimizations.

You need to install Nicad on main directory of the project. You Should creates a directory called "Nicad" on main directory of the project and put in its all files of Nicad installation.

For installation of Nicad see the guide on website.

CK for calculate code metrics

CK calculates class-level and method-level code metrics in Java projects by means of static analysis (i.e. no need for compiled code). Currently, it contains a large set of metrics, including the famous CK.

You need to install CK on main directory of the project. You Should creates a directory called "CK_tools" on main directory of the project and put in its all files of CK installation (including jar file).

For installation of CK see the guide on website.

Configuration

Insert in directory called "project_to_analize" the repository of software that you eant analyze. You can clone from GitHub the repositories that you want in this directory by "git clone" command.

Launch

Open the script by IDE, set the right paths in the code, and launch "main.py" file.

Preview

First set of metrics value variation for year

alt text

Second set of metrics value variation for year

alt text

WMC value variation for class

alt text

FIN value variation for class

alt text

Viewpoints

alt text

Commits pubblication for month

alt text

Issues table

alt text

Clone detection

alt text

softwarestaticanalyzer's People

Contributors

gabriele-ciccotelli avatar iulianoroberto avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.