foodcriticで、Chefの静的コード解析のチェック対象を絞り込む

  • 0
    Like
  • 0
    Comment

    27.jpg

    はじめに

    foodcriticは、Chef Cookbookのスタイルをチェックしてくれる静的コード解析ツールです。
    今回、foodcriticにて、コードチェック対象外とする方法を整理します。

    コードチェック対象は、foodcritic -lコマンドにて確認できます。また、下記ディレクトリ等にて、コードチェック対象が設定されています。foodcritic関連のディレクトリを確認したい場合には、gem environmentコマンドを実行して下さい。
    C:\xxx\gem\ruby\2.4.0\gems\foodcritic-11.4.0\lib\foodcritic\rules

    foodcriticのホームページから、チェック項目の内容を確認できます。

    1.コードチェック対象外を指定

    - 1-1.Chefレシピにコードチェック対象外を指定

    チェック対象外とする項目を、Chefレシピに直接設定する方法です。各スクリプトにて、チェック対象外とするIDを、#~のように記載します。

    node['modules'].each do |modules|
      package "#{modules}" do   #~FC002
        action [:remove]
      end
    end
    

    - 1-2.foodcriticファイルにコードチェック対象外を指定

    チェック対象外とする項目を、1つのファイルに設定する方法です。cookbook配下に.foodcriticファイルを作成し、チェック対象外とするIDを記載します。

    PS C:\xxx\chef-repo\site-cookbook\common > cat .foodcritic
    ~FC064
    ~FC065
    ~FC069
    ~FC071
    ~FC078
    

    - 1-3.foodcriticコマンド実行時にコードチェック対象外を指定

    foodcritic実行時に、チェック対象外のIDを指定する方法です。この場合、上記の1-1と1-2の設定が無視されます。

    PS C:\xxx\chef-repo\site-cookbook\common > foodcritic -C ./ -t ~FC002
    PS C:\xxx\chef-repo\site-cookbook\common > foodcritic --help
    foodcritic [cookbook_paths]
        -t, --tags TAGS                  Check against (or exclude ~) rules with the specified tags.
    

    2.コードチェック対象を指定

    反対に、コードチェック対象のみを指定することも可能です

    - 2-1.foodcriticコマンド実行時にコードチェック対象を指定

    foodcritic実行時に、チェック対象のIDを指定します

    PS C:\xxx\chef-repo\site-cookbook\common > foodcritic -C ./ -t FC002

    foodcritic実行時に、チェック対象のtagを指定します。tagはfoodcriticホームページにて確認して下さい。

    PS C:\xxx\chef-repo\site-cookbook\common > foodcritic -C ./ -t roles
    

    3. 設定例

    インターネットアクセスがない環境だったため、.foodcriticファイルを配置する1-2の方法にて、以下をチェック対象外としました。
    FC064: Ensure issues_url is set in metadata
    FC065: Ensure source_url is set in metadata
    FC069: Ensure standardized license defined in metadata
    FC071: Missing LICENSE file
    FC078: Ensure cookbook shared under an OSI-approved open source license

    PS C:\xxx\chef-repo\site-cookbook\common > cat .foodcritic
    ~FC064
    ~FC065
    ~FC069
    ~FC071
    ~FC078
    

    まとめ

    1-2の.foodcriticファイルにチェック対象外とするIDを指定する方法が、一番楽かと思います。