fabriciocolombo / sonar-delphi

SonarQube Delphi Plugin
91 stars 46 forks source link

Fixed CountRule and ClassPerFileRule #23

Closed Teloah closed 8 years ago

Teloah commented 8 years ago

ClassPerFileRule should mark all classes after the first one as violations, but it ignored every other class. It was because the counter was reset after adding a violation. It worked like this:

TMyClass1 <- the counter increases to 1
TMyClass2 <- a violation is added, the counter resets to 0
TMyClass3 <- the counter increases to 1
TMyClass4 <- a violation is added, the counter resets to 0
etc.

After setting reset = false; number of violations suddenly increased to huge numbers. For a simple test with 5 classes, 21 violation was registered instead of 4. It was because of a bug in CountRule. After the limit was exceeced, a violation was added to every node, not just to those that match the search criteria. So I turned shouldCheck into a guard clause that returns immediately if the node does not match.

Also I removed Object dataRef instance variable from CountRule, because it seems unused.

fabriciocolombo commented 8 years ago

Good catch. Thank you.