Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Annlix
ShellCheck
提交
473bb666
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,发现更多精彩内容 >>
提交
473bb666
编写于
11月 13, 2013
作者:
V
Vidar Holen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support for checkstyle compatible xml output
上级
376d407e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
3 deletion
+45
-3
shellcheck.hs
shellcheck.hs
+45
-3
未找到文件。
shellcheck.hs
浏览文件 @
473bb666
...
...
@@ -16,6 +16,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
-}
import
Control.Monad
import
Data.Char
import
GHC.Exts
import
GHC.IO.Device
import
ShellCheck.Simple
...
...
@@ -65,6 +66,7 @@ parseArguments argv =
formats
=
Map
.
fromList
[
(
"json"
,
forJson
),
(
"gcc"
,
forGcc
),
(
"checkstyle"
,
forCheckstyle
),
(
"tty"
,
forTty
)
]
...
...
@@ -123,7 +125,7 @@ forJson options files = do
putStrLn
$
encodeStrict
$
comments
return
.
null
$
comments
--
-
Mimic GCC "file:line:col: (error|warning|note): message" format
-- Mimic GCC "file:line:col: (error|warning|note): message" format
forGcc
options
files
=
do
files
<-
mapM
process
files
return
$
and
files
...
...
@@ -137,7 +139,7 @@ forGcc options files = do
filename
,
":"
,
show
$
scLine
c
,
":"
,
show
$
scColumn
c
,
": "
,
case
scSeverity
c
of
case
scSeverity
c
of
"error"
->
"error"
"warning"
->
"warning"
_
->
"note"
,
...
...
@@ -145,7 +147,47 @@ forGcc options files = do
concat
.
lines
$
scMessage
c
,
" [SC"
,
show
$
scCode
c
,
"]"
]
-- Checkstyle compatible output. A bit of a hack to avoid XML dependencies
forCheckstyle
options
files
=
do
putStrLn
"<?xml version='1.0' encoding='UTF-8'?>"
putStrLn
"<checkstyle version='4.3'>"
statuses
<-
mapM
(
\
x
->
process
x
`
catch
`
report
)
files
putStrLn
"</checkstyle>"
return
$
and
statuses
where
process
file
=
do
comments
<-
commentsFor
file
putStrLn
(
formatFile
file
comments
)
return
$
null
comments
report
error
=
do
printErr
$
show
error
return
False
severity
"error"
=
"error"
severity
"warning"
=
"warning"
severity
_
=
"info"
attr
s
v
=
concat
[
s
,
"='"
,
escape
v
,
"' "
]
escape
msg
=
concatMap
escape'
msg
escape'
c
=
if
isOk
c
then
[
c
]
else
"&#"
++
(
show
$
ord
c
)
++
";"
isOk
x
=
any
(
$
x
)
[
isAsciiUpper
,
isAsciiLower
,
isDigit
,
(`
elem
`
" ./"
)]
formatFile
name
comments
=
concat
[
"<file "
,
attr
"name"
name
,
">
\n
"
,
concatMap
format
comments
,
"</file>"
]
format
c
=
concat
[
"<error "
,
attr
"line"
$
show
.
scLine
$
c
,
attr
"column"
$
show
.
scColumn
$
c
,
attr
"severity"
$
severity
.
scSeverity
$
c
,
attr
"message"
$
scMessage
c
,
attr
"source"
$
"ShellCheck.SC"
++
(
show
$
scCode
c
),
"/>
\n
"
]
commentsFor
file
=
liftM
shellCheck
$
readContents
file
readContents
file
=
if
file
==
"-"
then
getContents
else
readFile
file
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录