| name | shell-check |
| description | ShellCheck静态分析技能:使用ShellCheck进行Shell脚本代码质量分析,检测语法错误、潜在缺陷、代码风格问题 |
ShellCheck Shell脚本静态分析技能
工具位置
SHELLCHECK=/usr/bin/shellcheck
执行流程
步骤1:确定脚本文件
SCRIPT_FILE=script.sh
SCRIPT_DIR=scripts/
步骤2:执行分析
$SHELLCHECK script.sh
$SHELLCHECK scripts/*.sh
$SHELLCHECK --shell=bash script.sh
$SHELLCHECK --shell=sh script.sh
$SHELLCHECK --shell=dash script.sh
$SHELLCHECK --shell=ksh script.sh
步骤3:指定输出格式
$SHELLCHECK --format=json script.sh > shellcheck.json
$SHELLCHECK --format=json1 script.sh > shellcheck-detail.json
$SHELLCHECK --format=checkstyle script.sh > shellcheck.xml
$SHELLCHECK --format=gcc script.sh
$SHELLCHECK --format=quiet script.sh
步骤4:生成报告
使用模板 templates/report.md 输出分析报告。
常用参数
| 参数 | 描述 | 示例 |
|---|
-s, --shell | 指定Shell方言 | --shell=bash |
-S, --severity | 最小严重级别 | --severity=error |
-e, --exclude | 排除特定警告 | -e SC2086,SC2034 |
-i, --include | 只包含特定警告 | -i SC2086,SC2034 |
-a, --check-sourced | 检查source的文件 | --check-sourced |
-x, --external-sources | 允许外部source | --external-sources |
-o, --enable | 启用可选检查 | --enable=all |
-f, --format | 输出格式 | --format=json |
严重级别
| 级别 | 描述 |
|---|
error | 错误,必须修复 |
warning | 警告,建议修复 |
info | 信息,可选修复 |
style | 风格,可选修复 |
排除警告
行内排除
echo $var
echo $var
echo $var
命令行排除
$SHELLCHECK -e SC2086,SC2034 script.sh
$SHELLCHECK -i SC2086 script.sh
配置文件(.shellcheckrc)
disable=SC2086
shell=bash
source-path=SCRIPTDIR
enable=require-variable-braces
常用可选检查
| 检查项 | 描述 |
|---|
require-variable-braces | 要求变量使用大括号 |
add-default-case | case语句需要默认分支 |
quote-safe-variables | 引用安全的变量 |
useless-use-of-cat | 检测无用的cat使用 |
典型使用场景
| 场景 | 命令 |
|---|
| 快速检查 | $SHELLCHECK --severity=error script.sh |
| 完整检查 | $SHELLCHECK --enable=all --severity=style script.sh |
| CI集成 | $SHELLCHECK --format=gcc --severity=warning scripts/*.sh |
| 检查sourced文件 | $SHELLCHECK --check-sourced --source-path=scripts script.sh |
最佳实践
- 始终用双引号引用变量
- 优先使用
[[ ]]而非[ ]
- 优先使用
$( )而非反引号
- 检查cd等命令的返回值
- 脚本开头设置
set -e
技能版本: 1.0.0
工具版本: ShellCheck 0.10.0
适用项目: Shell脚本(bash/sh/dash/ksh)