arch-unit-build-plugin-core icon indicating copy to clipboard operation
arch-unit-build-plugin-core copied to clipboard

Support for freezing rules

Open tduchateau-pro opened this issue 1 year ago • 1 comments

Summary

A new configuration point for ConfigurableRules could be very useful to specify whether a rule is frozen or not. See https://www.archunit.org/userguide/html/000_Index.html#_freezing_arch_rules for reference documentation.

I'm particularly interested in this feature in the Gradle plugin, but this feature could totally benefit the Maven plugin as well, which is why I've created this request here.

Type of Issue

It is a :

  • [ ] bug
  • [x] request
  • [ ] question regarding the documentation

Motivation

When it comes to implementing ArchUnit in existing projects, the Freezing rules feature is very useful for implementing an iterative approach.

As it is, I haven't found any workaround other than declaring each rule twice, once "normally", and once wrapping it with FreezingArchRule.freeze(rule). By doing this, it is then possible to decide in the plugin configuration whether to use the "normal" rule or the frozen rule. In the meantime, if anyone sees a better workaround, don't hesitate to share :-)

A new configuration point in ConfigurableRules seems to me more appropriate for deciding whether a rule is frozen or not. WDYT?

Current Behavior

archUnit {
   configurableRules=[
      configurableRule(
         "com.societegenerale.commons.plugin.rules.NoAutowiredFieldTest", 
         applyOn("com.package","main")
      ),
   ]
}

Expected Behavior

archUnit {
   configurableRules=[
      configurableRule(
         "com.societegenerale.commons.plugin.rules.NoAutowiredFieldTest", 
         applyOn("com.package","main"),
         true <== true for frozen, false otherwise, defaults to false
      ),
   ]
}

Your Environment

  • Version used:

    • com.societegenerale.commons:arch-unit-gradle-plugin:2.9.5
    • com.societegenerale.commons:arch-unit-build-plugin-core:2.9.5
  • OS and version: MacOS Ventura (13.5.1)

tduchateau-pro avatar Sep 07 '23 07:09 tduchateau-pro

have you seen https://github.com/societe-generale/arch-unit-maven-plugin#using-archunitproperties-file , which points to https://github.com/societe-generale/arch-unit-maven-plugin/issues/37#issuecomment-792115469 ?

I haven't looked at this recently, and I won't have time any time soon, but maybe that helps you ?

vincent-fuchs avatar Nov 15 '23 16:11 vincent-fuchs