add support for context_options: warn instead of error, and specify allowed couplings#47
add support for context_options: warn instead of error, and specify allowed couplings#47jonklein wants to merge 1 commit intocuriosum-dev:mainfrom
Conversation
…allowed couplings
|
Hi @jonklein! Thank you for PR :) We will review it soon! |
|
Hi @jonklein! First of all, we would like to thank you for your contribution!
[
{ModuleA, [{:func_name, :arity, [...contexts]}]}
]where:
config :contexted,
contexts: [[MyApp.Account, MyApp.Book], [MyApp.Location, MyApp.Account]]In the above example, we would enforce cross-referencing checks only between We would like to hear your thoughts on these proposals. If you have any questions, please let us know! :) |
First of all, thank you for this library - I had been considering building something similar myself, but now I don’t have to.
This pull request adds two pieces of functionality around the context boundary detection, with the goal of helping more gradual enforcement for existing projects which might have a lot of inter-context dependencies. Both are configured via a new “context_options” key in the contexted config.
First, add support for a
levelconfig. If this key is set to :warn, the compiler will emit a warning instead a compile-time exception. It also adds the line/file to the emitted message.Second, add a way to configure “allowed” couplings via the
allowconfig. If a coupling is allowed, then no warning/exception will be triggered. This key is a list of{calling_context_module, [allowed_called_module, ...]}.The following example shows a configuration for two contexts where couplings trigger warnings rather than exceptions, and MyApp.Documents is explicitly permitted to call MyApp.Accounts.