Autoencoders are neural networks that can learn meaningful representations of the data in an unsupervised way. There exist diverse variants of autoencoders, however, in practice the purpose of all variants is to learn to reconstruct a representative copy of the given input. The underlying principle is that the encoded representation captures salient features which are reflected in the reconstructed output and discards other, less important, thus providing dimensionality reduction and de-noising capabilities.

A typical autoencoder model has essentially two sets of layers — encoding and decoding layers — symmetrically built across the compression pipeline. The model produces an approximate, compressed…


This article is a spin-off piece from the paper “Do We Need Improved Code Quality Metrics?” by myself and Prof. Diomidis Spinellis.

Software metrics have always been on a roller-coaster ride. On one hand, researchers and practitioners have adopted metrics not only to reveal quality characteristics of their programs, but also to combine existing metrics into new ones, and use these to study more complex phenomena. On the other hand, metrics have drawn wide criticism. The majority of this criticism is related to completeness and soundness.

The first case covers the extent of completeness of the implementation details provided to…


Often, Designite’s audience asks — how Designite is different from other tools especially SonarQube and NDepend. My (shallow) answer to this question is that the focus on design and architecture granularity issues is lacking in other tools while for Designite they are first-class citizens.

Question on how Designite is different from other tools

To tackle the comparison appropriately, I took a large open-source software NHibernate, carried out analysis using Designite, NDepend, and SonarQube, and compared different aspects of a code quality analysis.

Analysis summary

All three tools present an analysis summary though the information differs. …


A Continuous Integration (CI) pipeline, such as GitHub Actions, makes tasks such as compiling and testing software easier and automated. Though you may integrate code quality analysis tools (such as SonarQube, Codacy, and CodeBeat) into your CI pipeline. However, your pipeline may still lack some or all of the following much needed edge depending upon your employed code quality analysis tool.

  1. A rich visualization for your code quality enabling you to comprehend your project and infer deeper issues.
  2. Trend analysis of your project’s code quality ranking and score.
  3. A relative code quality ranking compared to thousands of open-source projects giving…


If you are a big fan of build and test badges posted on your GitHub or any other hosting platform then keep reading; I am going to show how you can add code quality badge within your repository.

Software engineers are using badges within their open-source repositories to explicitly show the state of the build, test as well as test coverage. It helps not only developers working on the repositories but also users and potential contributors to the open-source repository.

Let me introduce you to QScored — An open platform for code quality and ranking. The platform enables you to…


Explore QScored platform features

Today, abundant source code repositories are available on code repository hosting platforms such as GitHub (128 million repositories in Feb 2020). However, a detailed code quality analysis information is not available for the hosted repositories unless we use an existing code quality analysis tool ourselves to analyze the desired repository. Also, even if one analyzes a set of repositories, a relative scale of code quality is non-trivial to establish. …


DesigniteJava plugin for IntelliJ IDEA in action

IntelliJ IDEA is one of the most commonly used IDEs for Java. The community as well as professional editions are actively used by programmers and researchers worldwide. Apart from a myriad of features for developing, testing, and debugging code, the IDE also provides extensive support for refactoring. You may specify which section of code you would like to refactor with a specific refactoring technique, and the IDE will take care of the rest.

However, how you identify what to refactor? Though an experienced programmer can often smell sections of his/her code to refactor, there are still many quality issues that…


Photo by William Daigneault on Unsplash

Recently, I was reading “Coders: The making of a new tribe and the remaking of the world” by Clive Thompson to write its review for Computing Reviews; you may find the review online (pay-walled). In the book, he takes the reader on a fascinating journey of the evolution of computing systems and software programmers. In one of the chapters, he tells the story of early programmers in the 50s and 60s. Mary Allen Wilkes was one of such not-so-known legends who studied philosophy and wanted to practice law but somehow landed at MIT as a software programmer to program IBM…


Code smells occur at all granularities. We may categorize smells based on their scope and impact. Specifically, smells arising within a local scope, typically within a method, could be referred to as implementation smells (such as empty catch block or magic number). Smells that involve properties of a class and the scope of impact comprises a set of classes then they are referred to as design smells (such as god class and multifaceted abstraction). …


Code smells indicate the presence of quality issues in source code. An excessive number of smells make a software system hard to evolve and maintain. In this article, we apply deep learning models based on CNN and RNN to detect code smells without extensive feature engineering, just by feeding the source code in tokenized form.

This article is derived from our paper “On the Feasibility of Transfer-learning Code Smells using Deep Learning” by Tushar Sharma, Vasiliki Efstathiou, Panos Louridas, and Diomidis Spinellis.

Refactoring for Software Design Smells — https://amzn.to/38qeC4C
Refactoring for Software Design Smells — https://amzn.to/38qeC4C
Refactoring for Software Design Smells: Managing Technical Debt

Following figure provides an overview of the setup. We download 1,072 C# repositories from GitHub. We use Designite

Tushar Sharma

Student of life; student for life. Researcher, Developer, Speaker, and (co-)author of 'Refactoring for Software Design Smells'. http://www.tusharma.in

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store