Tools
I love tools - as a user and as a deverloper, especially the tools that concern software quality. On this page, I lists the tools that either I developed from scratch or made a major contribution.
1. Designite
Designite is a software design quality assessment tool for C# and Java. It offers various features to help identify issues contributing to technical debt and improve the design quality of the analyzed software system.
Key features
- Detects 7 architecture smells
- Detects 20 design smells
- Detects 11 implementation smells
- Computes various OO code metrics
- Provides smell trend analysis of Git repositories
- Many visualization aids including (smell) treemap, and (smell) sunburst
- Detects code duplication
- Allows customization of analysis
Visit the tool's website for more details. Software engineering researchers may request a free fully-functional Academic license of this tool.
Rohit Tiwari also contributed to this tool (specifically, in code clone detector and SonarQube plug-in components).
Relevant publications
- Tushar Sharma, Paramvir Singh, Diomidis Spinellis. “An empirical investigation on the relationship between design and architecture smells”, Empirical Software Engineering 25, 4020–4068 (2020). https://doi.org/10.1007/s10664-020-09847-2. Preprint
- Tushar Sharma, Vasiliki Efstathiou, Panos Louridas, Diomidis Spinellis, "Code Smell Detection by Deep Learning and Transfer Learning", Mar 2021, Accepted in Journal of Systems and Software. Preprint
- Tushar Sharma, Marios Fragkoulis, and Diomidis Spinellis. "House of Cards: Code Smells in Open-Source C# Repositories. in ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). 424-429. 10.1109/ESEM.2017.57.
- Tushar Sharma, "Designite: A Customizable Tool for Smell Mining in C# Repositories" to appear in SATToSE, Madrid during 7-9 June 2017.
- Tushar Sharma, Pratibha Mishra, and Rohit Tiwari. Designite: a software design quality assessment tool. In Proceedings of the 1st International Workshop on Bringing Architectural Design Thinking into Developers' Daily Activities (BRIDGE '16).
2. DesigniteJava
DesigniteJava is a code quality assessment tool for code written in Java. It detects numerous architecture, design, and implementation smells that show maintainability issues present in the analyzed code. It also computes many commonly used object-oriented metrics. It helps you reduce technical debt and improve maintainability of your software. We offer two editions-Enterprise and Community.
Visit the tool's page for more details.
Visit GitHub repository
Star
Fork
Antonis Gkortzis, Theodore Stassinopoulos, and Alexandra Chaniotakis also have contributed to the Community edition of the tool.
Relevant publications
- Tushar Sharma. Multi-faceted Code Smell Detection at Scale using DesigniteJava 2.0. MSR (Data/Tools track) 2024. Preprint
- Tushar Sharma, Vasiliki Efstathiou, Panos Louridas, Diomidis Spinellis, "Code Smell Detection by Deep Learning and Transfer Learning", Mar 2021, Accepted in Journal of Systems and Software. Preprint
- Tushar Sharma, Paramvir Singh, Diomidis Spinellis. “An empirical investigation on the relationship between design and architecture smells”, Empirical Software Engineering 25, 4020–4068 (2020). https://doi.org/10.1007/s10664-020-09847-2. Preprint
3. QScored
QScored is an open platform for code quality ranking and visualization. The key features offered by the platform are summarized below.
- An open platform: QScored is an open and free platform that provides code quality information for a large number of open-source repositories (more than 12,000 at the time of writing this text and increasing) analyzed from existing tools. Moreover, you may upload code quality analysis report of your projects to the platform to determine a quality score and a relative quality ranking.
- Quality ranking: QScored computes a quality score and a relative quality rank for all of its hosted projects based on the detected smells at different granularities.
- Language-agnostic code quality visualization: QScored offers a detailed code quality visualization that includes a dependency graph among components, smells distribution among projects' components by their types and their location, and code quality metrics view for the entire project. Furthermore, the platform publishes the XML template that provides a common information exchange format so that the analysis report of other tools, apart from that are used by QScored presently, complying to the template can also be uploaded to the platform.
- REST APIs: The platform offers a set of REST APIs to upload code analysis reports as well as to search a set of projects based on various parameters.
- Quality badges: Software development teams may utilize the quality badges indicating quality score and rank of their project and put it within their repository web-page.
QScored has been discontinued from Jan 2023.
Relevant publications
- Vishvajeet Thakur, Maroune Kessentini, Tushar Sharma. "QScored: An Open Platform for Code Quality Ranking and Visualization", Accepted in ICSME Tool Demo track, July 2020. Preprint
- Tushar Sharma, Marouane Kessentini. "QScored: A Large Dataset of Code Smells and Quality Metrics", MSR 2021 (Data showcase track). Preprint
4. Puppeteer
Puppeteer is a design configuration smell detection tool for Puppet code. It detects 11 design configuration smells.
It is an open-source tool; you may access the code via GitHub repo page. My colleague at AUEB Marios Fragkoulis also contributed to this tool.
You may find more details about the catalog of configuration smells here.
Relevant publications
- Tushar Sharma, Marios Fragkoulis, and Diomidis Spinellis. 2016. Does your configuration code smell?. In Proceedings of the 13th International Conference on Mining Software Repositories (MSR '16).
5. Augur
Augur is a Change Impact Analysis tool written in C# and realized as a Visual Studio extension. It infers semantic and environment dependencies along with data and control dependencies among source code entities across six granularities. Additionally, Augur understands Change Impact Query Language, a novel query language that we proposed in the below paper for impact analysis, to support inter-granular CIA queries with batch querying feature.
This tool is developed when I was in Siemens (Corporate Research, Bangalore). My colleague at Siemens Elroy DSilva and a few interns, Kishan Kesavan and Amit Patil, also contributed to this tool.
Relevant publications
- Tushar Sharma and Girish Suryanarayana, "Augur: Incorporating Hidden Dependencies and Variable Granularity in Change Impact Analysis," IEEE 16th International Working Conference on Source Code Analysis and Manipulation (SCAM), Raleigh, NC, 2016, pp. 73-78.
doi: 10.1109/SCAM.2016.32
6. DbDeo
DbDeo is a tool that detects smells in database code. Currently, it detects 10 database schema smells.
It is an open-source tool; you may access the code via GitHub repo page. My colleague at AUEB Marios Fragkoulis also contributed to this tool.
Relevant publications
- Tushar Sharma, Marios Fragkoulis, Stamatia Rizou, Magiel Bruntink, and Diomidis Spinellis. 2018. Smelly relations: measuring and understanding database schema quality. In Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP '18). ACM, New York, NY, USA, 55-64. DOI: https://doi.org/10.1145/3183519.3183529
7. SlideQ
SlideQ is a presentation smell detection tool realized as a plug-in for Microsoft Powerpoint. It detects 8 presentation smells.
It is an open-source tool; you may access the code via Github repo page. Rohit Tiwari made a major contribution to this tool.
If you are wondering about presentation smells, here is my attempt to document them in the form of a catalog.