Hi Simon,
The correction of some rules can be automated (eg Rule Unnecessary "= true" or Variable not reference) -> add transformation to these rules.
Yes, that would be nice.
Some rules such as Spelling rules (eg comments Method: Checks for spelling errors in method comments., 7088 problems) are not very interesting and could be removed (or treated differently?)
I like them, but if you don't want the spelling rules you don't have to load or run them. One thing to improve here would be the spell checker: Critics only uses a decent spell checker on OS X, where the one from the platform is available through a primitive. On all other platforms a very stupid spell checker based on a word-list is used.
Adding an indice of difficulty to correct the rule: - Level of automation for the correction of the rule (automatic, semi-automatic, â¦).
Actually this information is there: rules correct automatically if the rule is a subclass of RBTransformationRule.
- Scope of the rule (block, method, class â¦).
Not sure what you mean, but you can scope the rules to any RBEnvironment (see http://www.lukas-renggli.ch/blog/programmatically-run-lint).
Other costs could be - cost of applying (may be the rule requires to compute something else, or if a rule has 50000 hits, it generates an extra cost to analyze the results) - cost of NOT applying the rule (if it could detect a bug and we don' t apply it ...)
There is something like this in RBLintRule>>#severity. The severity is shown as an icon in OB.
Adding a manifest to manage/mark falses positive: - one manifest (a class) by package. - Manifest: exclusion of class/method of the package for rules or for all the rules. - Exclusion of rules for the package.
See http://www.lukas-renggli.ch/blog/ignoring-lint-rules. Also many years ago I wrote some infrastructure to run critics rules as part of the tests, what essentially served as a runnable manifest. The code is in http://source.lukas-renggli.ch/essential.html, but it likely needs some fixes to make it work in a recent version of Pharo.
One could also think on how to efficiently visualize the results of smallLint ...
See for example the SmallLint results of Seaside 3.0 run by Jenkins: http://jenkins.lukas-renggli.ch/job/Seaside%203.0/791/checkstyleResult/. Cheers, Lukas -- Lukas Renggli www.lukas-renggli.ch