diff --git a/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.expected b/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.expected new file mode 100644 index 000000000000..787b07809ba6 --- /dev/null +++ b/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.expected @@ -0,0 +1,6 @@ +| UninitializedLocal.rb:17:18:17:18 | x | Local variable $@ may be used before it is initialized. | UninitializedLocal.rb:17:9:17:9 | x | x | +| UninitializedLocal.rb:26:10:26:15 | status | Local variable $@ may be used before it is initialized. | UninitializedLocal.rb:24:9:24:14 | status | status | +| UninitializedLocal.rb:39:10:39:10 | a | Local variable $@ may be used before it is initialized. | UninitializedLocal.rb:35:5:35:5 | a | a | +| UninitializedLocal.rb:40:10:40:10 | b | Local variable $@ may be used before it is initialized. | UninitializedLocal.rb:36:5:36:5 | b | b | +| UninitializedLocal.rb:45:10:45:10 | a | Local variable $@ may be used before it is initialized. | UninitializedLocal.rb:35:5:35:5 | a | a | +| UninitializedLocal.rb:46:10:46:10 | b | Local variable $@ may be used before it is initialized. | UninitializedLocal.rb:36:5:36:5 | b | b | diff --git a/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.qlref b/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.qlref new file mode 100644 index 000000000000..e37501dffbff --- /dev/null +++ b/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.qlref @@ -0,0 +1,2 @@ +query: queries/variables/UninitializedLocal.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.rb b/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.rb new file mode 100644 index 000000000000..572b2b5cb2ed --- /dev/null +++ b/ruby/ql/test/query-tests/variables/UninitializedLocal/UninitializedLocal.rb @@ -0,0 +1,49 @@ +def test_basic + puts x #$ MISSING: Alert +end + +def test_nil + x = foo.nil? #$ MISSING: Alert + puts x +end + +def test_condition + if x #$ MISSING: Alert + puts x #$ MISSING: Alert + end +end + +def test_nested_condition + if (x = 4 || x) #$ SPURIOUS: Alert + puts x + end +end + +def test_conditional_assignment + if false + status = i #$ MISSING: Alert + end + puts status #$ SPURIOUS: Alert + puts i #$ MISSING: Alert +end + +def get + raise SyntaxError +end + +def test_rescue_ensure + a = get() + b = c + 2 #$ MISSING: Alert +rescue SyntaxError + puts "rescue" + puts a #$ SPURIOUS: Alert + puts b #$ SPURIOUS: Alert + puts c #$ MISSING: Alert + puts "rescue end" +ensure + puts "ensure" + puts a #$ SPURIOUS: Alert + puts b #$ SPURIOUS: Alert + puts c #$ MISSING: Alert + puts "the end" +end \ No newline at end of file