Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
ee7d87e6
B
Brakeman
项目概览
李少辉-开发者
/
Brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
Brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ee7d87e6
编写于
9月 13, 2012
作者:
J
Justin Collins
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fix_array_indexing_AGAIN'
上级
c6d0962c
fdceaac8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
165 addition
and
3 deletion
+165
-3
lib/brakeman/processors/alias_processor.rb
lib/brakeman/processors/alias_processor.rb
+3
-3
test/tests/test_alias_processor.rb
test/tests/test_alias_processor.rb
+162
-0
未找到文件。
lib/brakeman/processors/alias_processor.rb
浏览文件 @
ee7d87e6
...
...
@@ -450,11 +450,11 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
#
#Returns the value inside the array, if possible.
def
process_array_access
target
,
args
if
args
.
length
==
1
and
integer?
args
[
0
]
index
=
args
[
0
][
1
]
if
args
.
length
==
1
and
integer?
args
.
first
index
=
args
.
first
.
value
#Have to do this because first element is :array and we have to skip it
target
[
1
..-
1
][
index
+
1
]
target
[
1
..-
1
][
index
]
else
nil
end
...
...
test/tests/test_alias_processor.rb
0 → 100644
浏览文件 @
ee7d87e6
class
AliasProcessorTests
<
Test
::
Unit
::
TestCase
def
assert_alias
expected
,
original
if
RUBY_VERSION
=~
/^1\.9/
original_sexp
=
Ruby19Parser
.
new
.
parse
original
expected_sexp
=
Ruby19Parser
.
new
.
parse
expected
else
original_sexp
=
RubyParser
.
new
.
parse
original
expected_sexp
=
RubyParser
.
new
.
parse
expected
end
processed_sexp
=
Brakeman
::
AliasProcessor
.
new
.
process_safely
original_sexp
result
=
processed_sexp
.
last
assert_equal
expected_sexp
,
result
end
def
test_addition
assert_alias
'10'
,
<<-
RUBY
x = 1 + 2 + 3
x += 4
x
RUBY
end
def
test_simple_math
assert_alias
'42'
,
<<-
RUBY
x = 8 * 5
y = 32 / 8
y -= 2
x += y
x
RUBY
end
def
test_concatentation
assert_alias
"'Hello world!'"
,
<<-
RUBY
x = "Hello"
y = x + " "
z = y + "world!"
z
RUBY
end
def
test_string_append
assert_alias
"'hello world'"
,
<<-
RUBY
x = ""
x << "hello" << " " << "world"
x
RUBY
end
def
test_array_index
assert_alias
"'cookie'"
,
<<-
RUBY
dessert = ["fruit", "pie", "ice cream"]
dessert << "cookie"
dessert[1] = "cake"
dessert[1]
index = 2
index = index + 1
dessert[index]
RUBY
end
def
test_array_negative_index
assert_alias
"'ice cream'"
,
<<-
RUBY
dessert = ["fruit", "pie", "ice cream"]
dessert << "cookie"
dessert[1] = "cake"
dessert[1]
index = -3
index = 1 + index
dessert[index]
RUBY
end
def
test_array_append
assert_alias
'[1, 2, 3]'
,
<<-
RUBY
x = [1]
x << 2 << 3
x
RUBY
end
def
test_hash_index
assert_alias
"'You say goodbye, I say :hello'"
,
<<-
RUBY
x = {:goodbye => "goodbye cruel world" }
x[:hello] = "hello world"
x.merge! :goodbye => "You say goodbye, I say :hello"
x[:goodbye]
RUBY
end
def
test_obvious_if
assert_alias
"'Yes!'"
,
<<-
RUBY
condition = true
if condition
x = "Yes!"
else
x = "No!"
end
x
RUBY
end
def
test_if
assert_alias
"'Awesome!' or 'Else awesome!'"
,
<<-
RUBY
if something
x = "Awesome!"
elsif something_else
x = "Else awesome!"
end
x
RUBY
end
def
test_or_equal
assert_alias
'10'
,
<<-
RUBY
x.y = 10
x.y ||= "not this!"
x.y
RUBY
end
def
test_unknown_hash
assert_alias
'1'
,
<<-
RUBY
some_hash[:x] = 1
some_hash[:x]
RUBY
end
def
test_global
assert_alias
'1'
,
<<-
RUBY
$x = 1
$x
RUBY
end
def
test_class_var
assert_alias
'1'
,
<<-
RUBY
@@x = 1
@@x
RUBY
end
def
test_constant
assert_alias
'1'
,
<<-
RUBY
X = 1
X
RUBY
end
def
test_addition_chained
assert_alias
'y + 5'
,
<<-
RUBY
x = y + 2 + 3
x
RUBY
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录