Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
社会瑞弟呀
brakeman
提交
c7bb69d2
B
brakeman
项目概览
社会瑞弟呀
/
brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c7bb69d2
编写于
4月 17, 2012
作者:
O
oreoshake
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
New loop logic - moar correct
上级
c2a843c8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
9 deletion
+15
-9
lib/brakeman/differ.rb
lib/brakeman/differ.rb
+15
-9
未找到文件。
lib/brakeman/differ.rb
浏览文件 @
c7bb69d2
# extracting the diff logic to it's own class for consistency
c
urrently handles
# extracting the diff logic to it's own class for consistency
. C
urrently handles
# an array of Brakeman::Warnings or plain hash representations.
class
Brakeman::Differ
DEFAULT_HASH
=
{
:new
=>
[],
:fixed
=>
[]}
...
...
@@ -23,11 +23,18 @@ class Brakeman::Differ
# second pass to cleanup any vulns which have changed in line number only
# Horrible O(n^2) performance. Keep n small :-/
def
second_pass
(
warnings
)
warnings
[
:new
].
each_with_index
do
|
new_warning
,
new_warning_id
|
# keep track of the number of elements deleted because the index numbers
# won't update as the list is modified
elements_deleted_offset
=
0
# dup this list since we will be deleting from it and the iterator gets confused
warnings
[
:new
].
dup
.
each_with_index
do
|
new_warning
,
new_warning_id
|
warnings
[
:fixed
].
each_with_index
do
|
fixed_warning
,
fixed_warning_id
|
if
matches_except_line
new_warning
,
fixed_warning
warnings
[
:new
].
delete_at
new_warning_id
warnings
[
:fixed
].
delete_at
fixed_warning_id
if
eql_except_line_number
new_warning
,
fixed_warning
warnings
[
:new
].
delete_at
(
new_warning_id
-
elements_deleted_offset
)
elements_deleted_offset
+=
1
warnings
[
:fixed
].
delete_at
(
fixed_warning_id
)
break
end
end
end
...
...
@@ -35,7 +42,7 @@ class Brakeman::Differ
warnings
end
def
matches_except_line
new_warning
,
fixed_warning
def
eql_except_line_number
new_warning
,
fixed_warning
# can't do this ahead of time, as callers may be expecting a Brakeman::Warning
if
new_warning
.
is_a?
Brakeman
::
Warning
new_warning
=
new_warning
.
to_hash
...
...
@@ -43,10 +50,9 @@ class Brakeman::Differ
end
new_warning
.
keys
.
reject
{
|
k
,
v
|
k
==
:line
}.
each
do
|
attr
|
if
new_warning
[
attr
]
!=
fixed_warning
[
attr
]
return
false
end
return
false
if
new_warning
[
attr
]
!=
fixed_warning
[
attr
]
end
true
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录