@@ -25,18 +25,18 @@ defmodule Credo.Check.Warning.ForbiddenModule do
25
25
26
26
@ impl Credo.Check
27
27
def run ( % SourceFile { } = source_file , params ) do
28
- modules = Params . get ( params , :modules , __MODULE__ )
29
-
30
- modules =
31
- if Keyword . keyword? ( modules ) do
32
- Enum . map ( modules , fn { key , value } -> { Name . full ( key ) , value } end )
33
- else
34
- Enum . map ( modules , fn key -> { Name . full ( key ) , nil } end )
35
- end
28
+ forbidden_modules =
29
+ params
30
+ |> Params . get ( : modules, __MODULE__ )
31
+ |> Enum . map ( fn
32
+ { key , value } -> { Name . full ( key ) , value }
33
+ key -> { Name . full ( key ) , nil }
34
+ end )
35
+ |> Map . new ( )
36
36
37
37
Credo.Code . prewalk (
38
38
source_file ,
39
- & traverse ( & 1 , & 2 , modules , IssueMeta . for ( source_file , params ) )
39
+ & traverse ( & 1 , & 2 , forbidden_modules , IssueMeta . for ( source_file , params ) )
40
40
)
41
41
end
42
42
@@ -58,6 +58,7 @@ defmodule Credo.Check.Warning.ForbiddenModule do
58
58
Enum . reduce ( aliases , issues , fn { :__aliases__ , meta , module } , issues ->
59
59
full_module = Name . full ( [ base_alias , module ] )
60
60
module = Name . full ( module )
61
+
61
62
put_issue_if_forbidden ( issues , issue_meta , meta , full_module , forbidden_modules , module )
62
63
end )
63
64
@@ -67,21 +68,15 @@ defmodule Credo.Check.Warning.ForbiddenModule do
67
68
defp traverse ( ast , issues , _ , _ ) , do: { ast , issues }
68
69
69
70
defp put_issue_if_forbidden ( issues , issue_meta , meta , module , forbidden_modules , trigger ) do
70
- forbidden_module_names = Enum . map ( forbidden_modules , & elem ( & 1 , 0 ) )
71
-
72
- if found_module? ( forbidden_module_names , module ) do
71
+ if Map . has_key? ( forbidden_modules , module ) do
73
72
[ issue_for ( issue_meta , meta , module , forbidden_modules , trigger ) | issues ]
74
73
else
75
74
issues
76
75
end
77
76
end
78
77
79
- defp found_module? ( forbidden_module_names , module ) do
80
- Enum . member? ( forbidden_module_names , module )
81
- end
82
-
83
78
defp issue_for ( issue_meta , meta , module , forbidden_modules , trigger ) do
84
- message = message ( forbidden_modules , module ) || "The `#{ trigger } ` module is not allowed."
79
+ message = forbidden_modules [ module ] || "The `#{ trigger } ` module is not allowed."
85
80
86
81
format_issue (
87
82
issue_meta ,
@@ -91,11 +86,4 @@ defmodule Credo.Check.Warning.ForbiddenModule do
91
86
column: meta [ :column ]
92
87
)
93
88
end
94
-
95
- defp message ( forbidden_modules , module ) do
96
- Enum . find_value ( forbidden_modules , fn
97
- { ^ module , message } -> message
98
- _ -> nil
99
- end )
100
- end
101
89
end
0 commit comments