使用 ShellCheck 对 shell 脚本进行静态代码分析 - 预定义规则

Posted

技术标签:

【中文标题】使用 ShellCheck 对 shell 脚本进行静态代码分析 - 预定义规则【英文标题】:Static code analysis using ShellCheck for shell script - predefined rules 【发布时间】:2017-10-29 18:46:09 【问题描述】:

我正在尝试使用 Shellcheck 对 shell 脚本进行静态代码分析。我想知道用于执行分析的规则。我在哪里可以买到它们?

下面是我得到的简单 helloworld 程序的示例输出:

In C:\Users\~\Desktop\hello.sh line 1:
#!/bin/sh
         ^-- SC1017: Literal carriage return. Run script through tr -d '\r' .


In C:\Users\~\Desktop\hello.sh line 2:
# This is a comment!
                    ^-- SC1017: Literal carriage return. Run script through tr -d '\r' .

【问题讨论】:

ShellCheck wiki 看起来是个不错的起点。 【参考方案1】:

这是 ShellCheck 中使用的所有规则的list。

我建议您使用DeepSource 对Shell 脚本运行分析。 DeepSource 检测到 210 多个问题,并为您提供自动修复这些问题的选项。

如果您使用 DeepSource,那么您无需在任何地方寻找规则信息,因为 DeepSource 让您可以选择查看它检测到的每个问题的描述以及您应该解决该问题的原因。

【讨论】:

以上是关于使用 ShellCheck 对 shell 脚本进行静态代码分析 - 预定义规则的主要内容,如果未能解决你的问题,请参考以下文章

在CentOS系统上安装shell脚本检查工具shellcheck

如何在传递 ShellCheck 时通过环境变量将 glob 传递给 shell 脚本

Centos安装shellcheck的方法

在 PhpStorm 中再次启用 Shellcheck

转: 两个 Shell 网站: explainshell 和 shellcheck

无法弄清楚如何解决 shellcheck 投诉,即在从另一个脚本启动一个脚本时我不应该使用 glob 作为命令