共计 1909 个字符,预计需要花费 5 分钟才能阅读完成。
【导语】:Shell 动态剖析工具,无需运行就能发现 sh/bash 的语法、类型等谬误。
简介
ShellCheck 是基于 GPLv3 协定的 shell 脚本动态剖析工具,能够为 bash/sh shell 脚本提供正告和倡议:
ShellCheck 的指标是:
- 指出导致 shell 呈现奇怪谬误音讯的典型初学者语法问题。
- 指出导致 shell 行为异样和违反直觉的典型中级语义问题。
- 指出可能导致高级用户的其余工作脚本在将来状况下失败的奥妙正告、极其状况和谬误。
我的项目地址是:
https://github.com/koalaman/s…
应用办法
通过网页官网
能够将 shell 脚本代码黏贴到官网检测页面上,能够即时取得反馈:
https://www.shellcheck.net
通过终端命令
能够下载 shellcheck,并在终端命令中执行 shellcheck 命令检测脚本:
通过编辑器
- 在 VIM 中应用 ALE、Neomake、Syntastic 插件:
- 在 Emacs 中应用 Flycheck、Flymake 插件:
- 在 Sublime 中应用 SublimeLinter
- 在 VSCode 中应用 vscode-shellcheck
在构建或测试平台中
ShellCheck 次要用于交互式应用,但也能够增加到构建或测试套件中,它应用了标准规范的退出代码,因而只需增加 shellcheck 命令作为流程的一部分即可。
例如在 Makefile 文件中:
check-scripts:
# Fail if any of these files have warnings
shellcheck myscripts/*.sh
或者在 Tarvis CI 的 .travis.yml 文件中:
script:
# Fail if any of these files have warnings
- shellcheck myscripts/*.sh
事后装置了 ShellCheck 并可用应用的服务和平台如下:
- Travis CI
- Codacy
- Code Climate
- Code Factor
- CircleCI
- Github(仅限 Linux)
装置
通过包管理器进行本地装置使最简略高效的办法
# 在带有 Cabal 的零碎上(装置到~/.cabal/bin):cabal update
cabal install ShellCheck
# 在具备 Stack(装置到~/.local/bin)的零碎上:stack update
stack install ShellCheck
# 在基于 Debian 的发行版上:sudo apt install shellcheck
# 在基于 Arch Linux 的发行版上:pacman -S shellcheck
# 在基于 Gentoo 的发行版上:emerge --ask shellcheck
# 在基于 EPEL 的发行版上:sudo yum -y install epel-release
sudo yum install ShellCheck
# 在基于 Fedora 的发行版上:dnf install ShellCheck
# 在 FreeBSD 上:pkg install hs-ShellCheck
# 在带有 Homebrew 的 macOS (OS X) 上:brew install shellcheck
# 在 OpenBSD 上:pkg_add shellcheck
# 在 openSUSE 上:zypper in ShellCheck
# 在 Solus 上:eopkg install shellcheck
# 在 Windows 上(通过 Chocolatey):C:\> choco install shellcheck
# 在 Windows 上(通过 scoop):C:\> scoop install shellcheck
# 通过 Docker:docker run --rm -v "$PWD:/mnt" koalaman/shellcheck:stable myscript
# Or :v0.4.7 for that version, or :latest for daily builds
pre-commit
要通过 pre-commit 运行 ShellCheck,增加 hooks 到 .pre-commit-config.yaml 文件中:
repos:
- repo: https://github.com/koalaman/shellcheck-precommit
rev: v0.7.2
hooks:
- id: shellcheck
# args: ["--severity=warning"] # Optionally only show errors and warnings
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。
正文完