RuboCop ToDo 수정 자동화

이 기사에서 rubocop-todo-corrector을 소개하겠습니다.

ToDo 목록 기반 보푸라기



요즘 많은 프로젝트에서 Lint 도구를 사용하여 코드를 자가 진단하고 있습니다.

예를 들어
  • JavaScript용 ESLint
  • Rust용 rustfmt
  • Ruby용 RuboCop
  • 기타

  • RuboCop에는 기존 범죄를 감지하고 .rubocop_todo.yml라는 파일을 자동으로 생성하는 기능이 있습니다. 이 파일은 할 일 목록 역할을 하므로 위반 사항을 점진적으로 수정할 수 있습니다.

    이 메커니즘은 기존 프로젝트 중간에 새로운 Lint 도구를 도입하거나 기존 Lint 도구를 업그레이드하여 새로운 규칙을 도입할 때 매우 강력합니다.

    자동화



    개선 프로세스 주기는 다음과 같습니다.
  • 할 일 목록에서 린트 규칙 하나를 선택합니다
  • .
  • 기존 오펜스 자동 수정(또는 규칙 비활성화)
  • ToDo 재생성
  • 풀 요청 생성
  • 풀 요청 검토 및 병합
  • 1부터 반복합니다.

  • 그러나 이 작업을 수동으로 수행하기는 어렵습니다. 이제 rubocop-todo-corrector 사용자 지정 GitHub 작업을 사용하여 자동화해 보겠습니다.

    rubocop-todo-수정자



    사용하기 쉽습니다. 다음 YAML 파일을 리포지토리에 배치하기만 하면 됩니다.

    # .github/workflows/rubocop-todo-corrector.yml
    name: rubocop-todo-corrector
    
    on:
      pull_request:
        types:
          - closed
      workflow_dispatch:
        inputs:
          cop_name:
            description: Pass cop name if you want to pick a specific cop.
            required: false
            type: string
          ignore:
            description: Check this with cop_name if you want to ignore a specific cop.
            required: false
            type: boolean
    jobs:
      run:
        runs-on: ubuntu-latest
        steps:
          - uses: r7kamura/rubocop-todo-corrector@v0
            with:
              ignore: ${{ inputs.ignore }}
              label: rubocop-todo-corrector
    


    그런 다음 리포지토리에 "rubocop-todo-corrector"레이블을 만듭니다.

    이제 작업 페이지에서 "워크플로 실행"버튼으로 이 워크플로를 실행할 수 있습니다.



    워크플로가 완료되면 풀 요청이 다음과 같이 생성됩니다.



    이 풀 리퀘스트를 검토하고 괜찮다면 Merge 버튼을 누르십시오.

    그러면 다음 풀 요청이 자동으로 생성됩니다. 즉, 병합 버튼을 누르기만 하면 코드가 자동으로 점점 더 많이 리팩토링됩니다. 정말 쉬운 일입니다!

    우리의 이야기



    약 10년 동안 운영되고 있는 우리의 거대한 Rails 앱에서 프로세스 중간에 RuboCop을 도입했고 처음에는 200,000개의 오펜스가 있었습니다.



    (이 차트를 만드는 방법도 에서 설명했습니다.)

    오펜스가 너무 많아서 수정을 거의 포기했지만 최근에 rubocop-todo-corrector를 도입하면서 오펜스가 서서히 줄어들기 시작했습니다.

    약 2개월 전에 도입된 이후 약 40,000개 이상의 위반 사항을 수정할 수 있었습니다. 개발자들은 점진적으로 가속화되고 있는 검토 및 병합 프로세스에 익숙해지고 있으며 앞으로 1년 정도 지나면 공격을 거의 제로로 줄일 수 있을 것 같습니다.

    마무리



    이 기사에서는 rubocop-todo-corrector이라는 사용자 지정 GitHub 작업의 배경과 사용법을 소개했습니다.

    자동 검토자 할당, 비활성화 및 위반 수정 등 이 문서에서 다루지 않은 다른 기능이 있으므로 관심이 있는 경우 README를 읽어 보십시오.

    리팩토링 프로세스 자동화는 강력한 메커니즘입니다. 점점 더 자동화하고 좋은 코드 품질을 유지합시다.

    좋은 웹페이지 즐겨찾기