iOS 개발 중에도 사용되지 않는 코드를 감지합니다.

개요


나는 어떤 항목이든 인용되지 않은 코드가 한두 개 있다고 생각한다.
그리고 이 수가 늘어나면 소음이 많아지고 보고 싶은 코드가 보기 싫어지기 때문에 개발 효율이 떨어진다.
아마도 당신은 실장자가 사용하지 않은 코드를 제출하지 말라고 생각할 것입니다. 그러나 실장자도 사람이기 때문에 때때로 무심결에 제출하기도 합니다.그리고 사용자들도 사용하지 않은 코드를 눈치채지 못하고 앱을 하는 경우가 있다고 생각합니다.
따라서 본고는 CLI 패키지인 Periphery를 사용하여 사용되지 않은 코드를 감지하는 방법과 CI 구축에서 사용되지 않은 코드가 있으면 Pull Request에서 사용되지 않은 부분을 설명하는 방법을 소개한다.

사용할 CLI 도구

  • mint(Swift제 포장 관리 도구. 이번 설명 생략.)
  • Periphery
  • Danger
  • Periphery


    Periphery는 코드를 사용하지 않은 Swift 시스템을 분석하는 도구입니다.
    https://github.com/peripheryapp/periphery

    Periphery 설정


    Periphery의 설치 방법은 여러 가지가 있는데 이번에는 Mint로 설치한다.
    1. 생성Mintfile하고 다음과 같은 내용을 보충한다.
    peripheryapp/[email protected]
    
    2. mint bootstrap에 설치합니다.

    Danger


    Danger는 Pull Request에서 미리 정해진 규칙에 따라 Auto Review를 실행하는 도구입니다.
    미리 정해진 규칙으로는'Pull Request의 차이 500','Light의 규칙 준수 여부'등이 있다.

    Danger 설정


    1. bundler 설치 (반드시 필요한 것은 아니지만 bundler를 사용하면 관리하기 쉽다)
    gem install bundler
    
    2. Gemfile 생성
    bundle init
    
    3. Gemfile에서 다음 사항을 추기
    gem "danger"
    
    4. Danger 설치
    bundle install --path .bundle/
    
    .bundle/.가장 좋은 것은gitignore에git관리를 추기하지 않는 것이다.
    5.Gemfile 및 Gemfile제출 lock
    6. Bot 사용자는 Danger 공식 페이지를 참조하여 Pull Request에 의견을 달 수 있습니다.

    사용되지 않은 코드 분석


    Periphery를 실행하고 그 결과를 분석하기 위해 다음 두 개의 스크립트를 만들었습니다.
    run_unused_code.sh
    DIR="report"
    if [ ! -d $DIR ]; then
      mkdir $DIR
    fi
    
    mint run periphery scan --project xxx.xcodeproj --targets ターゲット名 --schemes スキーム名 --format "xcode" > report/unused_code_report.txt
    
    parse_unused_code_report.rb
    Dir.mkdir('report') unless Dir.exist?('report')
    
    system('bash Scripts/Bitrise/run_unused_code.sh')
    
    warnings = []
    
    File.open('report/unused_code_report.txt', mode = 'rt') do |f|
      f.each_line(rs='') do |line|
        warnings.push(line.chomp(rs='')) 
      end
    end
    
    File.open('report/parsed_unused_code_report.txt', mode = 'w') do |f|
      f.write(warnings[1])
    end
    
    Dangerfile은 다음과 같습니다.
    Dangerfile
    File.open("report/parsed_unused_code_report.txt").each do |warnings|
      warnings.split("\n").each do |warning|
        warn(warning)
      end
    end
    
    그런 다음 CI 빌드에서 위의 스크립트를 실행합니다.이번 구상은 Bitrise에서 실시되기 때문에 Bitrise입니다.yml에서 다음과 같은 내용을 보충합니다.
    steps:
    - script@1:
        inputs:
        - content: |-
            gem install bundler
            bundle config set path '.bundle/'
            bundle install
        title: Bundle install
    - script@1:
        inputs:
        - content: 'ruby parse_unused_code_report.rb '
        title: Output unused code
    - script@1:
        inputs:
        - content: bundle exec danger --verbose
        title: Run danger
    
    이렇게 되면 다음에 사용되지 않은 코드가 있으면 Pull Request에 다음과 같은 느낌으로 리뷰를 합니다.

    총결산


    사용되지 않은 코드를 간단하게 검사할 수 있기 때문에 반드시 가져오세요!

    좋은 웹페이지 즐겨찾기