シェル スクリプト用の静的アナライザーである ShellCheck 0.9 が利用可能になりました

ShellCheck 0.9 プロジェクトのリリースが公開され、bash、sh、ksh、dash の機能を考慮したスクリプト内のエラーの特定をサポートするシェル スクリプトの静的分析のためのシステムが開発されました。 プロジェクトのコードは Haskell で書かれており、GPLv3 ライセンスに基づいて配布されています。 Vim、Emacs、VSCode、Sublime、Atom、および GCC 互換のエラー報告をサポートするさまざまなフレームワークとの統合用のコンポーネントが提供されています。

シェル スクリプト用の静的アナライザーである ShellCheck 0.9 が利用可能になりました

実行時にインタプリタにエラーが表示されるコード内の構文エラーと、実行は中断されないがスクリプトの動作に異常が発生するセマンティックな問題の両方の識別をサポートします。 アナライザーは、特定の状況下で障害につながる可能性のあるボトルネック、明白でない問題、落とし穴も特定できます。

検出されたエラーの種類としては、特殊文字のエスケープと引用符で囲む問題、条件式のエラー、コマンドの誤った使用、時刻と日付の処理の問題、初心者向けの典型的な構文エラーなどが挙げられます。 たとえば、「[[ $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 のかっこを削除するという推奨事項を追加しました。

出所: オープンネット.ru

コメントを追加します