首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抑制不相关的ShellCheck消息?

如何抑制不相关的ShellCheck消息?
EN

Stack Overflow用户
提问于 2018-10-05 05:46:46
回答 2查看 14.8K关注 0票数 16

环境

系统: Linux 19 (基于Ubuntu18.04)。

艺术经纬:我使用Visual Studio代码 (官方网站)和ShellCheck插件来快速检查错误、警告和提示.

ShellCheck

是每个shell脚本编写器所必需的工具。

虽然开发人员必须付出巨大的努力使其尽可能好,但它有时会产生不相关的警告和/或信息。

示例代码,带有这样的消息(警告SC2120 +直接相邻的信息SC2119):

示例shell脚本片段

代码语言:javascript
复制
am_i_root ()
# expected arguments: none
{
    # check if no argument has been passed
    [ "$#" -eq 0 ] || print_error_and_exit "am_i_root" "Some arguments have been passed to the function! No arguments expected. Passed: $*"

    # check if the user is root
    # this will return an exit code of the command itself directly
    [ "$(id -u)" -eq 0 ]
}

# check if the user had by any chance run the script with root privileges and if so, quit
am_i_root && print_error_and_exit "am_i_root" "This script should not be run as root! Quitting to shell."

其中:

  • am_i_root正在检查传递的不需要的参数。它的真正目的是不言而喻的。
  • print_error_and_exit正在按照它的名字做,它或多或少是不言自明的.
  • 如果传递了任何参数,我希望函数/脚本打印错误消息并退出。

问题

如何禁用这些消息(仅限于本地)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-05 05:46:46

在做这件事之前好好想想!

只有当你有100.0%的肯定信息是不相关的时候,才这么做。然后,阅读关于这个主题的Wiki 这里这里

一旦你确信这条信息是无关紧要的

虽然一般来说,有更多的方法来实现这个目标,但我说要在本地禁用这些消息,所以实际上只有一条。

在实际消息出现之前添加以下行:

代码语言:javascript
复制
# shellcheck disable=code

值得注意的是,在同一行之后添加文本将导致错误,因为它也将由shellcheck解释。如果您想要添加为什么要取消警告的解释,可以添加另一个散列#,以防止shellcheck检查解释行的其余部分。

不正确:

代码语言:javascript
复制
# shellcheck disable=code irrelevant because reasons

正确:

代码语言:javascript
复制
# shellcheck disable=code # code is irrelevant because reasons

请注意,可以添加由逗号分隔的多个代码,如下例所示:

代码语言:javascript
复制
# shellcheck disable=SC2119,SC2120
票数 26
EN

Stack Overflow用户

发布于 2021-02-05 18:28:57

使用Shellcheck 0.7.1及更高版本,您可以通过过滤严重性(有效选项为: error、warning、info、style)来抑制命令行中的无关消息:

代码语言:javascript
复制
$ shellcheck --severity=error my_script.sh

这只会显示错误,并将抑制恼人的SC2034SC2086等警告和样式建议。

您还可以使用~/.shellcheckrc文件中的指令来抑制每段代码中的消息,例如:

代码语言:javascript
复制
disable=SC2076,SC2016

这两个选项都允许您对消息进行全局筛选,而不必使用相同的指令编辑每个源代码文件。

如果您的发行版没有最新版本,您可以使用以下内容进行升级

代码语言:javascript
复制
scversion="stable" # or "0.7.1" or "latest"
wget -qO- "https://github.com/koalaman/shellcheck/releases/download/${scversion?}/shellcheck-${scversion?}.linux.x86_64.tar.xz" | tar -xJv
sudo cp "shellcheck-${scversion}/shellcheck" /usr/bin/
shellcheck --version
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52659038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档