Vimmer가 CloudFormation을 작성한다면 ale + cfn-python-lint가 유용합니다!

Vimmer?
AWS CloudFormation을 작성하고 있습니까?alecfn-python-lint를 사용합시다

어떻게 편리합니까?



보는 것이 빠르다고 생각하므로, 시험에 깨진 CloudFormation 템플릿 파일을 vim 로 열어 보겠습니다.
AWSTemplateFormatVersion: 2010-09-09
Description: Sample template for ale.vim and cfn-python-lint

Parameters:
  # このパラメータは使われてない
  ThisIsNotUsed:
    Type: String

Resources:
  EC2Instance:
    Type: 'AWS::EC2::Instance'
    # 必須パラメータが未定義
    Properties:
      # AvailabilityZone のハードコーディングは避けるべし
      #   ≒  Parameterや Fn::GetAZs を使おう
      AvailabilityZone: 'us-west-2a'
      Tags:
        - Key: Name
          # 未定義パラメータを使用している
          Value: !Sub "${UndefinedParameter}"

Outputs:
  Sample:
    # 未定義リソースを使用している
    Value: !Ref NoExistResoure

내 vim이라면 다음과 같이 보입니다.


>> 또는 --가 있는 행에 커서를 맞추면 vim 상태 라인에 메시지가 표시됩니다.



ImageId 또는 LaunchTemplate가 필수라고 말해주고 있습니다. 감사합니다.

ale이란?



ale은 Vim (8.0 이상)/NeoVim 용 Asynchronous Lint Engine 플러그인입니다.rubocopeslint와 같은 다양한 Linter와 함께 Lint 결과를 Vim에 표시 할 수 있습니다.

비슷한 플러그인에 syntastic이 있지만 alevim8job에 해당하므로 비동기 처리됩니다. 충실하고, 등과 후발 같은 특징이 있습니다.
마찬가지로 후발 플러그인으로 neomake도있는 것 같습니다만, 나는 neovim 밖에 사용한 적이 없으므로 자세히 모릅니다 ....

cfn-python-lint란 무엇입니까?



cfn-python-lintvador로 만든 Python CloudFormation Linter입니다. 2018/04 에 방금 공개된 갓 갓후아호야입니다.

기존의 Linter 로서는, NodeJS제의 ale가 있었습니다만, 이쪽은 출력 결과가 매우 인간에게 친절하고, 기계에는 상냥하지 않은 (퍼스하기 어려운) 것이었습니다.
awslabsansible-lint 을 참고해 실장되고 있는 것 같고 1 기계에도 친화적인 출력을 할 수 있게 되어 있습니다.

설정 방법



내 환경



필자의 환경은 다음과 같습니다.
  • OS: macOs HighSierra 10.13.5
  • Vim: 8.1.10 (macvim)
  • Python: 3.6.5
  • cfn-lint: 0.4.1


  • [python] cfn-python-lint 설치


    [cfn-lint](https://github.com/martysweet/cfn-lint)cfn-python-lint로 설치할 수 있습니다.
    GitHub의 리포지토리는 cfn-python-lint이지만 pip로 설치할 때는 cfn-python-lint입니다. 2
    pip install cfn-lint
    

    [vim] ale 설치


    pip를 설치합니다.
    예를 들어 dein.vim에서 플러그인을 관리하는 경우,
    call dein#add("w0rp/ale")
    

    같은 느낌입니다.
    나는 TOML을 사용하고 있기 때문에,
    [[plugins]]
    repo = "w0rp/ale"
    

    라는 상태입니다.

    [vim] filetype=cloudformation 설정


    cfn-lintale에서 사용하려면 cfn-python-lintale로 설정해야 합니다.filetypecloudformation이면 filetype는 자동으로 cloudformation를 사용합니다.

    제 경우에는, ale 라고 하는 파일명으로 하는 것이 많기 때문에 cfn-python-lint 에 다음과 같이 설정하고 있습니다.
    au BufRead,BufNewFile *.template.yaml set ft=cloudformation.yaml
    
    xxxx.template.yaml를 기반으로 ~/.vim/ftdetect/cloudformation.vimyaml로 설정하면 fieltype의 구문 강조 표시를 사용하면서 cloudformation에서 yaml를 사용할 수 있습니다.

    비고



    그건 그렇고, ale에서 cfn-python-lint를 사용할 수있게 한 것은 저입니다
    덧붙여서 그 직후, ale를 최신판으로 하면 움직이지 않기 때문에 수정되었습니다



    htps : // 기주 b. 코 m / 아 ws bs / cf 응 py 텐 ぃ t # c ぢ t 

    커멘드명도 cfn-python-lint인데 Node.js제의 cfn-python-lint 라고 씌운 것은 일부러인가 어떨까... 

    좋은 웹페이지 즐겨찾기