how it works


I. What QScored offers?

QScored offers the following key features to you.

  • Code quality ranking: QScored assigns a quality score based on the architecture, design, and implementation smells detected in each of the uploaded projects. Based on the computed quality score, QScored assigns a quality ranking to each project in its corpus.

  • Visualize software: QScored allows you to visualize many code quality aspects including interactive dependency graph, treemap view showing relative code quality and size, various smells along with their cause, frequency, and location, as well as code quality metrics at class and method granularity.

  • Quality badges: QScored lets you show-off your development skills by offering you a badge that you may include on your website or your repository home on GitHub. As you expect, any change in quality ranking will be taken care and updated by QScored.


II. How does it work?

QScored builds its corpus in two ways. First, a user can upload the analyzed information generated from Designite or any compatible tool. Second, QScored agent is a program that keeps downloading open-source repositories from GitHub, analyzing them using Designite tools, and uploading the analyzed information to QScored. When a new project (or a new version of an existing project) is uploaded, QScored calculates its quality score. Periodically (currently every week), QScored computes quality ranking for all the projects in its corpus. The lower the quality score, the better the project is from code quality perspective.


II.a. How one can upload his/her project's code quality information?

If you would like to upload your project's code quality information, obviously, you have to generate it. You may generate it using Designite (for C# projects), DesigniteJava (for Java projects), or any other compatible tools (for now, none). Both the tools (Designite and DesigniteJava) provide options to generate XML file containing results of analysis results. The analysis results contain detected smells (implementation, design, and architecture) as well as various metrics.

Designite (C#)

For Designite, click on "Export analysis result" and select XML as the export file format. Make sure that you select "Export to one file" option.

For Designite console application, use the following command to do the same.

  DesigniteConsole.exe "c:\path\to\solution\file.sln" −X "C:\output\analysisResults.xml"
DesigniteJava (Java)

For DesigniteJava application, use the following command to do the same. Please ensure that you use DesigniteJava Enterprise edition.

  java -jar DesigniteJava.jar -i "c:\path\to\project\code" −o "C:\path\to\output\folder" -f XML

II.b. How quality score and ranking is computed?

QScored computes quality score by using detected smells at architecture, design, and implementation granularities. For this computation, QScored requires a total number of architecture, design, and implementation smells individually for a project along with total lines of code. First, QScored computes individual normalized smell density (i.e., the total number of smells per thousand lines of code) for all the three granularities. Then, a weighted sum of the computed smell densities is taken. Currently, QScored uses 0.5 for architecture, 0.3 for design, and 0.2 weight for implementation smell density. The weighted sum is the quality score of the project.

Periodically (currently once every week), QScored ranks all the projects in the corpus based on their quality score. Lower the quality score, better the software in terms of code quality. Hence, a project with the lowest quality score is assigned the first rank, and so on.


III. How to access QScored programmatically?

You may use QScored APIs to upload a project (or a new version) as well as obtain your project's quality score and ranking. You will need an API key for the same that you may obtain from QScored website. If you are a researcher, you may need to fetch quality scores of many open-source projects. QScored offers a mechanism for that too.


IV. What about privacy?

You have an option to keep your project's data and identity hidden from other users when you upload code quality information for a new project. Specifically, "open access" field is offered to you during the upload. If you check the box then your project will be visible to the other users otherwise your project will be ranked but it will always be hidden from other users. Also, QScored offers deletion of a project as well as your account. We do not keep your information once you decide to delete it.