Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Annlix
ShellCheck
提交
83adcba8
S
ShellCheck
项目概览
Annlix
/
ShellCheck
与 Fork 源项目一致
Fork自
镜像 / koalaman / ShellCheck
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
ShellCheck
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
83adcba8
编写于
7月 19, 2015
作者:
V
Vidar Holen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Warn when nested loops have conflicting variable names.
上级
35fb5073
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
0 deletion
+28
-0
ShellCheck/Analytics.hs
ShellCheck/Analytics.hs
+28
-0
未找到文件。
ShellCheck/Analytics.hs
浏览文件 @
83adcba8
...
...
@@ -209,6 +209,7 @@ nodeChecks = [
,
checkInjectableFindSh
,
checkReadWithoutR
,
checkExportedExpansions
,
checkLoopVariableReassignment
]
...
...
@@ -3512,5 +3513,32 @@ checkUncheckedCd params root =
t
`
isUnqualifiedCommand
`
"set"
&&
"e"
`
elem
`
map
snd
(
getAllFlags
t
)
_
->
False
prop_checkLoopVariableReassignment1
=
verify
checkLoopVariableReassignment
"for i in *; do for i in *.bar; do true; done; done"
prop_checkLoopVariableReassignment2
=
verify
checkLoopVariableReassignment
"for i in *; do for((i=0; i<3; i++)); do true; done; done"
prop_checkLoopVariableReassignment3
=
verifyNot
checkLoopVariableReassignment
"for i in *; do for j in *.bar; do true; done; done"
checkLoopVariableReassignment
params
token
=
potentially
$
case
token
of
T_ForIn
{}
->
check
T_ForArithmetic
{}
->
check
_
->
Nothing
where
check
=
do
str
<-
loopVariable
token
next
<-
listToMaybe
$
filter
(
\
x
->
loopVariable
x
==
Just
str
)
path
return
$
do
warn
(
getId
token
)
2165
"This nested loop overrides the index variable of its parent."
warn
(
getId
next
)
2165
"This parent loop has its index variable overridden."
path
=
drop
1
$
getPath
(
parentMap
params
)
token
loopVariable
::
Token
->
Maybe
String
loopVariable
t
=
case
t
of
T_ForIn
_
s
_
_
->
return
s
T_ForArithmetic
_
(
TA_Sequence
_
[
TA_Binary
_
"="
(
TA_Expansion
_
[
T_Literal
_
var
])
_
])
_
_
_
->
return
var
_
->
fail
"not loop"
return
[]
runTests
=
$
(
[
|
$
(
forAllProperties
)
(
quickCheckWithResult
(
stdArgs
{
maxSuccess
=
1
})
)
|
])
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录