To maintain the code quality, all new code MUST be reviewed by developers manually. We propose automating this and reducing A LOOTTT OF time, energy and cost. Static Code Analyzer takes source code and suggests improvements such as loggers, comments, modularity. #HugeSavings
All of us started college around 2 weeks back (spring admits), It was the first time that we participated in a hackathon, and we have known each other for just a few days. All of us registered in the hackathon separately with no explicit intention to work with each other, but somehow ended up forming a team. After talking for some time, we learned that all of us have more 2+ yrs experience in cooperate company for different domains. The one thing that we had in common was that we had to do a code review for every change (minor or a whole new feature) before deploying it. To our surprise, there was no automation for this process whatsoever, so we thought, why not create one!!!
Static Code Analyzer takes a source code file as input (here, Python) and performs analysis on it to generate a report and analyzes it to generate a list of suggestions that can improve the code quality. This list contains checks like loggers, comments, dividing by zero, function modularity and using utils functions. The analysis report also contains certain metrics such as Maintainability index, lines of code and Halstead metrics.
We used the streamlit library because none of us knew front end, but we have a very strong background in backend, we used python to implement our project
Neither one of us had any experience in front end, so developing something visually decent enough was a challenge for us :p
For doing a code review, there are so many aspects that a reviewer should check starting from null checks to understandability to usability, covering all of them was difficult, we tried to do as many features or checks we could include, but we think, we have a long way to go. BUTTT, we believe that this is definitely a VERY BIG step in writing better code in every single company.
As we know that tech is used in every single company - whether it is a retail store, or a fashion store or a courier service. We are proud that we could find something that is for tech and is AGNOSTIC OF ANY DOMAIN, which means, our product can be used in ANY place where tech is used!!
We help developers and their managers to write better code, to not have a unseen break after the code is deployed(we all know how a missed null check makes us work through the weekends :( ). We are happy that we could implement at least some part of this during our very first hackathon.
Even though, we have done lot of code reviews during our cooperate experience, doing something like this was hard for us, because we had to make sure this works for any domain and not just web development, or just android/IOS development, or just ML, etc. This project helped us realize the differences as well as similarities in various technologies.
We even learnt how to use the multiple libraries available in python to use it to our advantage.We have mentioned libraries in detail below(Radon, Wordcloud, Ast etc).
Currently we have built this prototype for Python source code. Next, we can extend this functionality for multiple languages such as Java, Angular, React. Similarly, instead of static code analysis we can have dynamic code analysis that reviews it in real time. Another feature we can add is to use AI to suggest the logical variable names. Also, we can analyze all the files in the project folder to check dependencies between classes and objects.
We used python and streamlit library to create web app.
Have used other libraries like Radon which computes various code metrics, Wordcloud to show which words are the most frequent in the given code.
matplotlib to generate the charts used in Reserved tab.
plotly.express to visualize a variety of types of data.
altair for statistical visualization purpose
ast to generate Abtract Syntax tree.