ShellCheck 0.9 现已推出,它是 shell 脚本的静态分析器

ShellCheck 0.9项目已经发布,开发了一个用于shell脚本静态分析的系统,支持识别脚本中的错误,同时考虑到bash、sh、ksh和dash的特性。 该项目代码是用 Haskell 编写的,并根据 GPLv3 许可证分发。 提供了与 Vim、Emacs、VSCode、Sublime、Atom 以及支持 GCC 兼容错误报告的各种框架集成的组件。

ShellCheck 0.9 现已推出,它是 shell 脚本的静态分析器

它支持识别代码中的语法错误(导致解释器在执行时显示错误)和语义问题(导致执行不会中断,但脚本行为发生异常)。 该分析器还可以识别在某些情况下可能导致故障的瓶颈、不明显的问题和陷阱。

在检测到的错误类别中,我们可以注意到转义特殊字符并将其用引号引起来的问题、条件表达式中的错误、命令的不正确使用、处理时间和日期的问题以及初学者的典型语法错误。 例如,比较“[[ $foo==0 ]]”时不存在空格、“var = 42”存在空格或赋值“$foo=42”时存在$符号、变量的使用不带引号“echo $1”,表示“tr -cd '[a-zA-Z0-9]'”中额外的方括号,

此外,它还支持输出改进代码风格、消除可移植性问题和提高脚本可靠性的建议。 例如,建议使用语法“$((..))”代替“echo $[1+2]”,构造“rm -rf”$STEAMROOT/”*”将被标记为不安全如果变量 $STEAMROOT 不填,则能够删除根目录,并且使用“echo {1..10}”会突出显示与 dash 和 sh 不兼容。

在新版本中:

  • 添加了对“local readonly foo”等表达式的警告。
  • 添加了有关不可用命令的警告。
  • 添加了有关“declare x=1 y=$x”反向链接的警告。
  • 如果 $? 添加了警告用于打印echo、printf、[ ]、[[ ]]和test的返回码。
  • 添加了删除 ((..))inarray[((idx))]=val 的建议。
  • 添加了在算术上下文中连接双括号的建议。
  • 添加了删除表达式 a[(x+1)]=val 中括号的建议。

来源: opennet.ru

添加评论