Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Annlix
ShellCheck
提交
376d407e
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,发现更多精彩内容 >>
提交
376d407e
编写于
11月 13, 2013
作者:
V
Vidar Holen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added gcc compatible output for editor integrations
上级
2e13cedc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
31 addition
and
18 deletion
+31
-18
Makefile
Makefile
+1
-1
shellcheck.hs
shellcheck.hs
+30
-17
未找到文件。
Makefile
浏览文件 @
376d407e
...
...
@@ -2,7 +2,7 @@
GHCFLAGS
=
-O9
all
:
shellcheck
jsoncheck
.tests
all
:
shellcheck .tests
: Done
shellcheck
:
regardless
...
...
shellcheck.hs
浏览文件 @
376d407e
...
...
@@ -52,21 +52,19 @@ parseArguments argv =
(
opts
,
files
,
[]
)
->
if
not
$
null
files
then
return
$
Just
(
opts
,
map
specials
files
)
return
$
Just
(
opts
,
files
)
else
do
printErr
"No files specified.
\n
"
printErr
$
usageInfo
header
options
return
$
Nothing
(
_
,
_
,
errors
)
->
do
printErr
$
(
unlines
errors
)
++
"
\n
"
++
usageInfo
header
options
printErr
$
(
concat
errors
)
++
"
\n
"
++
usageInfo
header
options
return
Nothing
where
specials
"-"
=
"/dev/stdin"
specials
x
=
x
formats
=
Map
.
fromList
[
(
"json"
,
forJson
),
(
"gcc"
,
forGcc
),
(
"tty"
,
forTty
)
]
...
...
@@ -88,15 +86,8 @@ forTty options files = do
colorComment
level
comment
=
(
ansi
$
colorForLevel
level
)
++
comment
++
clear
doFile
path
=
do
let
actualPath
=
if
path
==
"-"
then
"/dev/stdin"
else
path
exists
<-
doesFileExist
actualPath
if
exists
then
do
contents
<-
readFile
actualPath
doInput
path
contents
else
do
colorFunc
<-
getColorFunc
printErr
(
colorFunc
"error"
$
"No such file: "
++
actualPath
)
return
False
contents
<-
readContents
path
doInput
path
contents
doInput
filename
contents
=
do
let
fileLines
=
lines
contents
...
...
@@ -128,13 +119,35 @@ forTty options files = do
-- This totally ignores the filenames. Fixme?
forJson
options
files
=
do
comments
<-
liftM
concat
$
mapM
process
files
comments
<-
liftM
concat
$
mapM
commentsFor
files
putStrLn
$
encodeStrict
$
comments
return
.
null
$
comments
--- Mimic GCC "file:line:col: (error|warning|note): message" format
forGcc
options
files
=
do
files
<-
mapM
process
files
return
$
and
files
where
process
file
=
do
script
<-
readFile
file
return
$
shellCheck
script
comments
<-
commentsFor
file
mapM_
(
putStrLn
.
format
file
)
comments
return
$
null
comments
format
filename
c
=
concat
[
filename
,
":"
,
show
$
scLine
c
,
":"
,
show
$
scColumn
c
,
": "
,
case
scSeverity
c
of
"error"
->
"error"
"warning"
->
"warning"
_
->
"note"
,
": "
,
concat
.
lines
$
scMessage
c
,
" [SC"
,
show
$
scCode
c
,
"]"
]
commentsFor
file
=
liftM
shellCheck
$
readContents
file
readContents
file
=
if
file
==
"-"
then
getContents
else
readFile
file
getOption
[]
_
def
=
def
getOption
((
Flag
var
val
)
:
_
)
name
_
|
name
==
var
=
val
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录