foodcritic에서 Chef의 정적 코드 분석 검사 대상을 필터링

2690 단어 lintchef


소개



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 파일에 코드 체크 대상외를 지정



체크 대상외로 하는 항목을 하나의 파일로 설정하는 방법입니다. 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 런타임에 검사할 태그를 지정합니다. 태그는 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 파일
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를 지정하는 방법이, 가장 편할까 생각합니다.

좋은 웹페이지 즐겨찾기