Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
94050401
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,体验更适合开发者的 AI 搜索 >>
提交
94050401
编写于
1月 22, 2014
作者:
J
Justin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #432 from presidentbeef/parse_all_of_gemfile_lock
Get all gem versions from Gemfile.lock
上级
177c2fb5
959d64a9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
29 deletion
+25
-29
lib/brakeman/processors/gem_processor.rb
lib/brakeman/processors/gem_processor.rb
+12
-20
test/tests/brakeman.rb
test/tests/brakeman.rb
+13
-9
未找到文件。
lib/brakeman/processors/gem_processor.rb
浏览文件 @
94050401
...
...
@@ -5,7 +5,7 @@ class Brakeman::GemProcessor < Brakeman::BaseProcessor
def
initialize
*
args
super
@gem_name_version
=
/^\s*([-_+.A-Za-z0-9]+) \((\w(\.\w+)*)\)/
@tracker
.
config
[
:gems
]
||=
{}
end
...
...
@@ -13,9 +13,8 @@ class Brakeman::GemProcessor < Brakeman::BaseProcessor
process
src
if
gem_lock
get_rails_version
gem_lock
get_json_version
gem_lock
get_i18n_version
gem_lock
process_gem_lock
gem_lock
@tracker
.
config
[
:rails_version
]
=
@tracker
.
config
[
:gems
][
:rails
]
elsif
@tracker
.
config
[
:gems
][
:rails
]
=~
/(\d+.\d+.\d+)/
@tracker
.
config
[
:rails_version
]
=
$1
end
...
...
@@ -48,24 +47,17 @@ class Brakeman::GemProcessor < Brakeman::BaseProcessor
exp
end
# Supports .rc2 but not ~>, >=, or <=
def
get_version
name
,
gem_lock
if
gem_lock
=~
/\s
#{
name
}
\((\w(\.\w+)*)\)(?:\n|\r\n)/
$1
end
end
def
get_rails_version
gem_lock
@tracker
.
config
[
:rails_version
]
=
get_version
(
"rails"
,
gem_lock
)
end
def
get_json_version
gem_lock
@tracker
.
config
[
:gems
][
:json
]
=
get_version
(
"json"
,
gem_lock
)
@tracker
.
config
[
:gems
][
:json_pure
]
=
get_version
(
"json_pure"
,
gem_lock
)
def
process_gem_lock
gem_lock
gem_lock
.
each_line
do
|
line
|
set_gem_version
line
end
end
def
get_i18n_version
gem_lock
@tracker
.
config
[
:gems
][
:i18n
]
=
get_version
(
"i18n"
,
gem_lock
)
# Supports .rc2 but not ~>, >=, or <=
def
set_gem_version
line
if
line
=~
@gem_name_version
@tracker
.
config
[
:gems
][
$1
.
to_sym
]
=
$2
end
end
end
test/tests/brakeman.rb
浏览文件 @
94050401
...
...
@@ -205,10 +205,14 @@ class ConfigTests < Test::Unit::TestCase
end
class
GemProcessorTests
<
Test
::
Unit
::
TestCase
FakeTracker
=
Struct
.
new
(
:config
)
FakeTracker
=
Struct
.
new
(
:config
,
:options
)
def
assert_version
version
,
name
,
msg
=
nil
assert_equal
version
,
@tracker
[
:config
][
:gems
][
name
],
msg
end
def
setup
@tracker
=
FakeTracker
.
new
({}
)
@tracker
=
FakeTracker
.
new
({}
,
{})
@gem_processor
=
Brakeman
::
GemProcessor
.
new
@tracker
@eol_representations
=
[
"
\r\n
"
,
"
\n
"
]
@gem_locks
=
@eol_representations
.
inject
({})
{
|
h
,
eol
|
...
...
@@ -216,13 +220,13 @@ class GemProcessorTests < Test::Unit::TestCase
}
end
def
test_get_version
@gem_locks
.
each
do
|
eol
,
gem_lock
|
assert_equal
"4.3.1"
,
@gem_processor
.
get_version
(
"erubis"
,
gem_lock
),
"Couldn't match gemlock with eol:
#{
eol
}
}"
assert_equal
"3.2.1"
,
@gem_processor
.
get_version
(
"paperclip"
,
gem_lock
),
"Couldn't match gemlock with eol:
#{
eol
}
"
assert_equal
"3.2.1.rc2"
,
@gem_processor
.
get_version
(
"rails"
,
gem_lock
),
"Couldn't match gemlock with eol:
#{
eol
}
"
assert_equal
"1.1"
,
@gem_processor
.
get_version
(
"simplecov"
,
gem_lock
),
"Couldn't match gemlock with eol:
#{
eol
}
"
def
test_gem_lock_parsing
@gem_locks
.
each
do
|
eol
,
gem_lock
|
@gem_processor
.
process_gems
Sexp
.
new
(
:block
),
gem_lock
assert_version
"4.3.1"
,
:erubis
,
"Couldn't match gemlock with eol:
#{
eol
}
"
assert_version
"3.2.1"
,
:paperclip
,
"Couldn't match gemlock with eol:
#{
eol
}
"
assert_version
"3.2.1.rc2"
,
:rails
,
"Couldn't match gemlock with eol:
#{
eol
}
"
assert_version
"1.1"
,
:simplecov
,
"Couldn't match gemlock with eol:
#{
eol
}
"
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录