@@ -20,6 +20,7 @@ defmodule Sobelow do
2020 alias Sobelow.Config
2121 alias Sobelow.Vuln
2222 alias Sobelow.FindingLog
23+ alias Sobelow.MetaLog
2324 alias Mix.Shell.IO , as: MixIO
2425 # Remove directory structure check for release candidate
2526 # prior to 1.0
@@ -49,6 +50,7 @@ defmodule Sobelow do
4950 # off the test pipeline to avoid dumping warning
5051 # messages into the findings output.
5152 root_meta_files = get_meta_files ( root )
53+ template_meta_files = get_meta_templates ( root )
5254
5355 # If web_root ends with the app_name, then it is the
5456 # more recent version of Phoenix. Meaning, all files are
@@ -61,6 +63,9 @@ defmodule Sobelow do
6163 libroot_meta_files = if ! phx_post_1_2? , do: get_meta_files ( lib_root ) , else: [ ]
6264
6365 FindingLog . start_link ( )
66+ MetaLog . start_link ( )
67+
68+ MetaLog . add_templates ( template_meta_files )
6469
6570 # This is where the core testing-pipeline starts.
6671 #
@@ -242,6 +247,25 @@ defmodule Sobelow do
242247 end
243248 end
244249
250+ defp get_meta_templates ( root ) do
251+ ignored_files = get_env ( :ignored_files )
252+
253+ Utils . template_files ( root )
254+ |> Enum . reject ( & is_ignored_file ( & 1 , ignored_files ) )
255+ |> Enum . map ( & get_template_meta / 1 )
256+ |> Map . new ( )
257+ end
258+
259+ defp get_template_meta ( filename ) do
260+ meta_funs = Utils . get_meta_template_funs ( filename )
261+ raw = meta_funs . raw
262+
263+ {
264+ Utils . normalize_path ( filename ) ,
265+ % { raw: raw }
266+ }
267+ end
268+
245269 defp get_meta_files ( root ) do
246270 ignored_files = get_env ( :ignored_files )
247271
@@ -269,14 +293,13 @@ defmodule Sobelow do
269293 |> Enum . map ( & get_mod / 1 )
270294
271295 Enum . each ( mods -- skip_mods , fn mod ->
272- apply ( mod , :get_vulns , [ fun , meta_file , web_root , skip_mods ] )
296+ params = [ fun , meta_file , web_root , skip_mods ]
297+ apply ( mod , :get_vulns , params )
273298 end )
274299 end
275300
276301 defp get_fun_vulns ( fun , meta_file , web_root , mods ) do
277- Enum . each ( mods , fn mod ->
278- apply ( mod , :get_vulns , [ fun , meta_file , web_root ] )
279- end )
302+ get_fun_vulns ( { fun , [ ] } , meta_file , web_root , mods )
280303 end
281304
282305 defp combine_skips ( [ ] ) , do: [ ]
0 commit comments