1. Home
  2. Docs
  3. Release notes
  4. CLEVR Dev Suite
  5. 1.4

1.4

Introduced in version 1.4 (3 February 2020)

Rule improvements

Here at ACR HQ, we are constantly testing how the rules are working on real Mendix projects. With this release, a number of small changes to existing rules are coming. As a result of these changes, the number of violations is reduced by 40-70%.

Now, probably you are wondering why would it be a good thing for a review tool to find fewer violations? The answer is simple: The goal of ACR is to report violations that are meaningful and something that should be fixed. Therefore the focus has been on reducing false positives and other pointless violations. Bellow is a full list of changes:

IMPORTANT: To apply these changes the rule settings have to be updated for all apps. This was done automatically with the release.

  • System objects should not be created directly – changed severity to critical (was major) and moved to reliability.
  • Custom error handling should be logged – changed severity to major (was critical) and moved to maintainability.
  • Scheduled events should be executed with reasonable delay – changed severity to critical (was major).
  • Missing error message for validation rules or blue associations & Missing entity validation error message – add settings for languages to be ignored.
  • Only short actions should be used in a loop – split up rule into three different rules. One for commit/delete actions, one for database retrieves and one for all other long-running actions. Severity is configured for each case separately. Added configuration for what is considered short/long actions.
  • Microflow should commit at the end – added configuration for what is considered short/long actions.
  • Microflow should be simple (Mansystems complexity) – split up into two (Extremely complex and Complex) with different severities. The Complex microflow has received a setting to ignore the violation if documentation is present.
  • Microflow should be simple (cyclomatic complexity) – disabled by default, instead, we recommend the Mansystems complexity.
  • Microflow should not apply entity access – added boolean setting to allow ignoring microflows called from client (for multi-tenant apps).
  • Complex microflows should have documentation – raised the default threshold that marks microflows as complex from 20 to 30.
  • Log message with hard-coded log node – added setting to allow hard-coded names as long as they appear more than N times (to avoid typos).
  • Microflow should be named based on usage – completely revamped into separate rules for different components: scheduled events, entity event handlers, published services, system microflows, sub and validation microflows, and calculated attributes. Each rule can be individually switched on or off.
  • Password policy – changed default length to 8. In hindsight 10 was an overkill.
  • Short circuit logic – only signals a validation if the expression would throw a null pointer exception.
  • Project role should have at most one module role per module – moved to performance (from maintainability).
  • Positive conditions should be preferred when retrieving data – turned off by default (too many pointless validations).
  • Declared variables should be used – eliminated some false positives.
  • Multi-level hierarchy – changed logic to only violate for persistent entities.
  • Flows should only be modeled right and down – instead of considering pixel locations it is now looking at flow points. Flows should go out from the right or down and should go in from left or up. This makes it much more forgiving.
  • Entity should have a maximum of N reference set associations – changed logic to violate only for persistent entities.
  • Roles should be checked for security – added a setting to ignore web service users.
  • Events should be triggered when doing a commit – added a boolean setting to ignore the violation if an annotation is present.
  • Project Module Amount – added a boolean setting to ignore app store modules.
  • Most prefix rules are now case insensitive so that Enum and ENUM are both fine.

Improvements

  • When opening the violations page now by default ACR filters out app store modules and sorts the rules ascending by number of violations.
  • On the revisions page, it is now possible to see if a revision has blocker or critical violations or if the revision has not been reviewed with the latest settings. On the same page added user thumbnails and user names instead of emails if available.