Why would an arbitrary rating by an automated system have a “real meaning”? This isn't some universal truth passed down from heavens, it's just an estimate on the very subjective matter of code quality.
A Lint report is only as good as the programmer interpreting it. For each issue detected we can decide:
- Does this constitute a real problem? If so, fix it.
- Is this a potential problem which is acceptable in this context? If so, leave it. Or possibly add annotations in the code to skip this section.
- Is this code of debatable quality, but it follows the project's general style? If so, leave it. If possible, edit your analysis tool's configuration to ignore this type of issue.
Changing code solely in order to game some metric is futile, as it usually just hides the real problem. One common example is trying to reduce the complexity of a function by moving some code blocks into helpers. This can be good (when each helper has a clearly defined job) and encourage code re-use. But it can also mean that code that was previously located directly in the context where it was used now sprawls all over the place: essentially, spaghetti code instead of useful abstraction.
Especially complexity metrics should sometimes not be reduced. Humans and computers understand the complexity of a piece of code differently, most evident in
case-like constructs which have higher complexity as one might expect, and dispatch tables that hide equal complexity of a switch inside a data structure. Optimize for a human reader of the code.
In the case of your review: You made some good changes, you made some debatable changes. And you added hundreds of lines, and some new files. Are you sure this actually made the code easier to understand? Note for example the absence of documentation to understand what your new abstractions do. Did you make the changes this way because you wanted to make that software more stable, feature rich, and easier to develop? Or did you just want to hide complexity from an analysis tool?
Any fool can write code that a computer can understand.
Good programmers write code that humans can understand.
– Martin Fowler