Recently Renraku 1.0 was released, and since then it has already been integrated into Pharo 7.
The new version brings many usability improvements and implementation optimizations, and here is a little summary of what has been accomplished.
Global Rule Banning
Now each rule has a setting entry that can be used to disable (or enable) it for a complete image. Of course, as any setting rule bans can be persisted for the future images.
You don’t need to dig through the settings to ban a rule that you don’t want to see again. The “ban” action of critiques includes entries for global and persisted global banning.
Although there is a global ban, packages can enforce rules. For example, the Kernel package may force the “uncommented class” and “unclassified method” rules, so even if a developer banned the rules globally, they will still see critiques for these rules when working with the Kernel package.
Smart Error Handling
Renraku is not responsible for the rules that run on top of it. In fact, rules may come from various sources and this is a very powerful feature. On the other hand, Renraku has to assure that its users won’t be flooded with exceptions if one of the rules has a bug. Previously Renraku was ignoring all the exceptions by default and had a setting to pass all the exceptions originating from rules is a developer needs that.
In the new version of Renraku every exception is going to be reported with other properties. Every Exception Property stores the execution stack and can open a debugger on it if needed.
In case you need the old behaviors of skipping or passing all the exceptions, these options are available in the preferences.
Test Coverage Increased by 19%
Many Renraku details rely on system announcements, and installed source code making them tedious to test. But we worked hard to increase test coverage of the project.
Added Quick-Access Keys to Match Rules After Check Map
In the rules that use pattern code, one can perform an after-match check on the matched node and the dictionary with wildcard node matches. I.e. if you have a
`var variable you had to search the dictionary for an
RBPatternVariable named: '`var', and now you can just search for
Deprecated Functionality Removed
Originally there were rule subclasses dedicated to checking only classes or methods, this was a poor decision and they were deprecated and removed.
*critic* methods were removed in favor of the ones with
*critique* signature. The
basicCheck methods of the rules present in Renraku were removed, as they were a part of SmallLint-Renraku transition.
Major Deduplication Refactoring
Renraku instruments multiple entities such as classes methods and behaviors with similar functionality, which brings a certain level of duplication to the system. In Pharo 7 the situation got even worse because Traits and Behaviors stopped using common functionality from a trait. As the result, we extracted a common functionality into a single delegate.
Minor Fixes Here and There
Some people found bugs, so we fixed them.
Finally there is also a short video tutorial, in which I tried to demonstrate how these functionalities worked.
Any kind of feedback, both regarding the video tutorial and the Renraku 1.0 release, would be much appreciated as there is still much room for improvement!
P.S. and here’s a screenshot from the Renraku repository commits page that depicts the progress of the summer: