当前位置:  开发笔记 > 编程语言 > 正文

是否有一个静态分析工具,如Lint或Perl :: Critic for shell脚本?

如何解决《是否有一个静态分析工具,如Lint或Perl::Criticforshell脚本?》经验,为你挑选了3个好方法。

是否有任何shell(特别是bash或ksh)检查程序可以测试shell脚本的样式,最佳实践,命名约定等?(像Lint for C,或Perl :: Critic for Perl.)

我知道使用ksh你可以通过运行来进行语法检查,ksh -n script.ksh但我希望的不仅仅是sytax检查 - 解析/分析实际代码的东西?

我可能运气不好,但我想这并没有伤害.



1> u0b34a0f6ae..:

我发现了shellcheck:它测试引用中的常见错误以及您忽略的其他内容("因为它有效").


@Shurane - 依赖项仅用于构建,而不是用于运行可执行文件.
似乎唯一的依赖是浏览器.

2> Brian Campbe..:

Debian和Ubuntu项目使用一个脚本checkbashisms,该脚本查找可能表明某人依赖于/bin/sh存在的特定模式bash.

除此之外,大多数shell都有-n解析和报告错误的选项.您可以针对多个不同的shell检查脚本,以确保它仅使用可移植的语法:

for shell in zsh ksh bash dash sh
do
  echo "Testing ${shell}"
  ${shell} -n my_script.sh
done

编辑添加:自编写此答案以来,已编写shellcheck,如后面的答案所示.与以前的建议相比,这比linting shell脚本做得更彻底.



3> Ross Duggan..:

我写了shlint来包装checkbashims和Brian的答案中提供的shell可用的其他基本linting选项.

它可以通过rubygems(gem install shlint)安装,实际上是一种插件,但是你只需要perl(用于checkbashims)和一个符合POSIX标准的shell来解释shlint命令本身.应该在OSX和Ubuntu上开箱即用.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有