nccgroup/sobelow

error handler block in parse.ex throws on syntax error

オープン

#105 opened on 2022/02/08

 (7 件のコメント) (0 件のリアクション) (0 人の担当者)Elixir (119 件のフォーク)batch import
backlogbuggood first issue

Repository metrics

Stars
 (1,780 個のスター)
PR merge metrics
 (30d に merged PR はありません)

説明

The following error handling block in lib/sobelow/parse.ex is incorrectly destructuring the line parameter: https://github.com/nccgroup/sobelow/blob/master/lib/sobelow/parse.ex#L45_L51

When scanning my code which contained a syntax error, the line variable was a list instead of a number, looking like this:

[line: 123, column: 456]

This in turn causes the IO.puts line to throw as it can't convert a list to a string.

I fixed this locally by changing the error handling block to the following:

{:error, {line, err, _}} ->
  if Application.get_env(:sobelow, :strict) do
    if is_list(line) do
      IO.puts(:stderr, "#{filepath}:#{line[:line]}:#{line[:column]}}: #{err}")
    else
      IO.puts(:stderr, "#{filepath}:#{line}: #{err}")
    end
    System.halt(2)
  else
    {}
  end

Happy to submit a PR with any feedback you may have.

コントリビューターガイド