问题标签 [shellcheck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell - 使用 ShellCheck 对 shell 脚本进行静态代码分析 - 预定义规则
我正在尝试使用 Shellcheck 对 shell 脚本进行静态代码分析。我想知道用于执行分析的规则。我在哪里可以买到它们?
下面是我为简单的 helloworld 程序得到的示例输出:
bash - 如何在传递 ShellCheck 时通过环境变量将 glob 传递给 shell 脚本
假设我有一个 shell 脚本,test.sh
它应该回显一些值。我希望能够通过具有全局扩展的环境变量传递这些值:
简单,你说!写吧
确实,这行得通。但它没有通过ShellCheck,这要求我们使用隐式通配/扩展(SC2086)。(这是公平的;在原始代码中, echo 行是cp $FOO $BAR
,我们确实不想扩展$BAR
;这个错误会捕获错误。)
因此,为了使这一点更加明确,我希望以下内容可能会起作用:
但没有:我们最终得到SC2206。
有没有一种规范的方式来做这种事情,这属于 ShellCheck 作者认为的最佳实践?(请随意使用 www.shellcheck.net 上的在线检查器进行测试。)这完全是错误的方法吗?ShellCheck 作者似乎不太可能从未想过这个用例......
bash - ShellCheck 警告:“删除周围的 $() 以避免执行输出。[SC2091]”
我的脚本中有以下一组命令:
ShellCheck 在 scp 行 (3) 上给我警告:
删除周围的 $() 以避免执行输出。[SC2091]
该脚本有效。我确实想执行输出。我应该忽略这个警告还是应该以不同的方式编写 scp 行?
bash - ShellCheck 警告:“迭代 ls 输出很脆弱。使用 glob。[SC2045]”
我在下面的代码中的第二行收到 ShellCheck 警告 [SC2045]。是否可以忽略它,因为我在尝试最后一个之前确保目录不为空ls
?
更新: 阅读帖子评论后。我已将行更改为:
这已删除警告。
bash - 无法弄清楚如何解决 shellcheck 投诉,即在从另一个脚本启动一个脚本时我不应该使用 glob 作为命令
示例脚本:
Shellcheck 返回以下内容:
根据https://github.com/koalaman/shellcheck/wiki/SC2211,这条规则应该没有例外。
具体来说,它建议“如果您想通过 glob 指定命令名称,例如在 ./myprogram-*/foo 中不硬编码版本,请先扩展为数组或参数以允许处理 0 或 2+ 匹配的情况。”
我首先使用 glob 的原因是我将日期附加或更改到我刚刚创建或更改的任何脚本。有趣的是,当我使用“bash script2*.sh”而不是“./script2*.sh”时,抱怨就消失了。
我是否解决了这个问题,或者我在欺骗 shellcheck 忽略一个不应该被忽略的问题?如果我使用错误的 bash 语法,我如何执行另一个需要以正确方式使用 glob 的脚本?
eclipse - 在 Eclipse 问题视图中解析 Shellcheck 输出
我正在从事一个涉及大量 Bash 的混合语言集成项目。我们使用 Eclipse 作为我们的 IDE,因为它与我们的 SCM(不是 Git)紧密集成。
我已经成功配置了一个构建器来针对 bash 代码运行 shellcheck,并且输出在运行时进入控制台视图。Shellcheck 可以输出多种样式,包括 checkstyle xml 和 gcc,但我希望 Eclipse 将输出重新吸回并用它做一些聪明的事情 - 突出显示问题行,允许我单击错误并跳转到相关行等等
我找不到 Eclipse 的 shellcheck 插件,但我想知道是否可以通过一个中间插件将 shellcheck 与 Eclipse 集成,该插件利用 shellchecks 输出 gcc 或 checkstyle 格式消息的能力。有没有人遇到过可以做到这一点的插件?
我遇到过诸如标记等术语,但我没有开始编写自己的 Eclipse 插件的经验(除非有人可以向我指出一个全面的、评论良好的示例插件)......
bash - GNU Parallel 与多个文件的 shellcheck
如何使用 GNU Parallel 在所有带有包装函数的 *.sh 上运行 shellcheck?
此尝试具有正确的目标文件,但 Parallel 似乎与子shell 斗争。
linux - 如何抑制不相关的 ShellCheck 消息?
环境
系统:Linux Mint 19(基于 Ubuntu 18.04)。
编辑:我使用带有 ShellCheck 插件的Visual Studio Code(官方网站)来即时检查错误、警告和提示。
壳牌检查
是每个 shell 脚本编写者的必备工具。
尽管开发人员必须付出巨大的努力才能使其尽可能好,但有时会产生不相关的警告和/或信息。
带有此类消息的示例代码(警告SC2120 + 直接相邻的信息SC2119):
示例 shell 脚本片段
在哪里:
am_i_root
正在检查传递的不需要的参数。它的真正目的是不言自明的。print_error_and_exit
就像它的名字所说的那样,它或多或少是不言自明的。如果传递了任何参数,我希望函数/脚本打印错误消息并退出。
问题
如何禁用这些消息(仅限本地)?
bash - Bash 脚本命令和摆脱 shellcheck 错误 SC2181
我有以下 bash 脚本:
和 ShellCheck 实用程序(https://www.shellcheck.net/)给我以下输出:
此警告的链接如下:https ://github.com/koalaman/shellcheck/wiki/SC2181
修改它的最佳方法是什么。该命令实在是太长了,不能放在一行中。我想避免使用 ShellCheck 忽略规则。
我尝试创建一个局部变量并存储命令的输出,但这违反了其他规则。