Reading & Understanding Codacy’s Reporting Feature
This blog post on Codacy’s reporting feature was originally written by Dishant Khanna. Dishant is a student at the Bharati Vidyapeeth’s College of Engineering, in New Delhi, and is currently undertaking a summer internship at Google Summer of Code on the Engelsystem project of FOSSASIA, one of the largest Open Source organizations in the world. Dishant also writes on his blog and has a GitHub account. With his permission, we’re sharing Dishant’s blog post here for Codacy readers.
To begin understanding reports, let’s start with what Codacy is.
What is Codacy?
Codacy is an automated code review tool that helps developers save time in code reviews and to tackle technical debt. It centralizes customizable code patterns and enforces them within engineering teams. Codacy tracks new issues by severity level for every commit and pull request.
It can be integrated with the GitHub repository to review every commit and pull request in terms of quality and errors. It checks code style, security, duplication, complexity and coverage on every change while tracking code quality throughout your sprints.
You can integrate Codacy in your private/public repository by going here. Sign up with your Github account and follow the steps mentioned. More information regarding GitHub integration can be found here.
Features of Codacy:
- Save time in code reviews
- Integrated in your workflow
- Track your project quality evolution
Codacy reporting
Below shows an image of what a Codacy dashboard looks like. To evaluate a project we should know what are the“Software Metrics”.
A software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are the numbers obtained by the application of metrics), often the two terms are used as synonymous. Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development. The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in the schedule and budget planning, cost estimation, quality assurance testing, software debugging, software performance optimization, and optimal personnel task assignments.
A Codacy Dashboard provides answer to the following 3 main things:
- What is the state of your projects code quality?
- How is it evolving throughout time?
- What are the hotspots in your code?
Component of the Dashboard:
- Introduction: The Dashboard is the central screen of any project on Codacy.
- Project Certification: After running a complete on the project or the GitHub repository, Codacy provides an overall grade to the project from A-F. The grade depends on the following parameters.
- Error Prone
- Code Complexity
- Code Style
- Unused Code
- Security
- Compatibility
- Documentation
- Performance
- Issues Breakdown: Issues breakdown represents the different issues from different areas in a pictorial representation. It provides a quick overview of the total number of issues in the repository and the breakdown per category.
- Users can click on the specific category for more details.
- Code Coverage: If you setup the code coverage on your repository, you will be able to see the overall covered percentage on the dashboard. It will also show the files with the worst code coverage allowing you to directly jump to the file to see the details.
- Goals: Users can define individual goals to remove errors and get better grades for their projects.
- Historic data: Codacy dashboard also provides an analysis of the Historic data, so as to keep a track of the progress on improving the code, milestones covered in reaching the goal.
Codacy provides a nice dashboard showing the metrics. Codacy saves hours in code review and code quality monitoring, from small teams to big companies. And as the Codacy team itself says “LOVED BY DEVELOPERS”, being a developer I wouldn’t deny this statement. It helped a lot in improving the code quality of my project Engelsystem.