Refining Code Critics; my first month on the GSoC’21
It’s been a month since I started coding my project Refining Code Critics at Google Summer of Code with Pharo Consortium. Time has passed so quickly! I will limit my experience until now in three words:
- Challenging: understanding the rules engine, learning about Spec, CriticBrowser migration, and looking for the best way to refactor code were some of the challenges that I encountered at the time; And I am sure, I will find more. Although, the best part of the day is when you overcome these challenges!
- Amazing: everything I’ve learned, the people I’ve met, the powerful programming language Pharo, and last but not least my precious debugger.
- Funny: I really believe that issues and bugs are alive. I solve one of them, and then it appears in a new section during migration. As well, challenging is also part of having fun, right?
To my great fortune, the community and my mentors have been on my side along the way; Well, let’s get to the most interesting part: coding!
Work package 1 — Improving Descriptions
The goal of this work package was to review and improve all the code critiques and rules descriptions. There were cases where meaningful descriptions were not provided or updated, according to the logic of the rule issue#9450 issue#9308 ; As well as others, they didn’t need it issue#9312, issue#9310, issue#9309.
This first work package let me:
- Identify critiques that apply transformation and provide refactoring.
- Apply CriticBrowser to check every rule and critiques. This allowed me to identify some improvements to the CriticBrowser’s UI.
- Learn about Renraku (framework for defining and processing quality rules) and understand broadly rules engine.
Work package 2— Critic Browser migration
CriticBrowser uses a deprecated version of SpecCore (framework in Pharo for describing user interfaces). As a result, implementing the new improvements in work package 3 directly was not feasible, due to the fact that it will implement widgets from the new Spec2. Thus, I created my own repository named Tool-CritiqueBrowser to do migration, working about work package 3 on it.
Do you want to try the CritiqueBrowser running on Spec2?
You can install the tool by going to my repo and following the steps in the Readme; Once you install it, you can start:
Work package 3— Enhancing Code critiques global browser
Another objective was to enhance the CriticBrowser. It is a graphical tool that shows all code critiques existing in the system. With this browser developers will be able to search all the instances of a given code critic in their package or the system, so they can address them; I am currently working on this work package. The most notable enhancements to this package are:
- Replacing old code comparison tool Image1 to the latest and more advanced code comparison tool that Pharo provides (split code difference view) using SpDiffPresenter:
- Replacing old select view for packages and rules (e.g. select packages, classes of RewriteToolsSet).
That’s all so far! The main aim of this post is to arouse your curiosity on what you can do with Renraku and Spec. Of course, I hope to have encouraged you to join the Pharo community and start programming cool stuff like I’m doing!
Let me know, if you would like more details or making examples about Renraku and Spec in next blogs to help you gain confidence :) Thank you for reading, any comment or suggestion is welcome.
-Ale