ShellCheck の紹介
- ShellCheck はシェルスクリプトのバグを見つけてくれるツールです。
- ローカル環境では cabal、apt、dnf、pkg、brew を通じてインストールできます。
- スクリプトを貼り付けると、ShellCheck が解析結果を出力します。
ShellCheck の特徴
- ShellCheck は GPLv3 ライセンスで自由に利用できます。
- ShellCheck Wiki にドキュメントがあり、GitHub でソースコードを確認できます。
- ほとんどのディストリビューションやパッケージマネージャーですでにパッケージ化されています。
- 主要なエディタで統合リンターとしてサポートされており、CodeClimate、Codacy、CodeFactor を通じて GitHub リポジトリのコードを自動で検査できます。
- Haskell 言語で書かれており、これに関心のあるユーザーに適しています。
謝辞
- GitHub Sponsors への特別な感謝を表します: Gitpod、Mercedes-Benz、BashSupport Pro、per1234、WhitewaterFoundry、cavcrosby、dcminter、photostructure、Cronitor、djdefi、steve-chavez など。
GN⁺ の意見
- この記事で最も重要なのは、ShellCheck がシェルスクリプトのバグを見つけるのに役立つツールだという点です。
- ShellCheck は無料で、さまざまなプラットフォームやエディタでサポートされており、使いやすい点が人々の興味を引くかもしれません。
- 特に、オープンソースコミュニティの支援と Haskell 言語で開発されている点が、ソフトウェア開発者にとって魅力的に映る可能性があります。
1件のコメント
Hacker Newsのコメント
スクリプト作成時の注意点
-u(nounset) オプションを使い、宣言されていない変数の使用時にエラーにすることが推奨される。配列展開時に空配列が unbound と見なされる場合は例外。-n(noexec) オプションを使うと、コマンドの実行を防ぐドライラン (dry-run) を試せる。-e(errexit) オプションも有用だが、失敗した "naked" コマンドだけが終了を引き起こす点に注意が必要。これを避けるため、コマンドに|| fail "..."を追加するほうを好む。シェルスクリプトの脆弱性の発見
$((1 + ENV_VAR))によって $ENV_VAR を制御できるなら、コードを注入できる。Shellcheck と strictbash
Shellcheck への言及
Haskell と Turtle の使用
Shellcheck と linter の使用
Bash 言語サーバー
Shellcheck の学習効果
Bach の使用推奨
Shellcheck と source/import 処理