Help us understand the problem. What is going on with this article?

Code Climate コード品質、カバレッジ測定

More than 1 year has passed since last update.

効果はまだ測れておらず、使っていく中で評価をしていきます。

概要

Code Climateを使用し、コード品質やテストのカバレッジ網羅性を自動チェックします。

Code Climate

Quality

https://codeclimate.com/quality/

CI。リポジトリやファイルの単位で、コード品質を測定する。設定をすればテストのカバレッジも測定できる。コード品質チェックが強力らしく、コードの重複性など詳しく評価するらしい。今回ではリポジトリにあるコードが少なすぎて(ただのHello World.)評価がまだされず、効果はどの程度なのかはまだよくわからない。
詳しく書かれている記事

Velocity

https://codeclimate.com/velocity/

チームの生産性を測定する機能。まだBETA版。

URL

https://codeclimate.com

対応サービス

  • GitHub
  • BitBucket
  • GitLab

Webhookにも対応しており、マージ前の強制チェックも設定できる。

価格

月間20ドル。パブリックなリポジトリは無料。

Gitリポジトリとの連携

非常に簡単。対応しているサービスのログイン連携(OAuth)し、対象リポジトリを一覧から選ぶ。

Code Climate Quality

MAINTAINABILITY

コード品質を測定する。何も設定しなくても、リポジトリを連携した時点で勝手に解析がされている。

TEST COVERAGE

テストのカバレッジを測定する。リポジトリを連携した時点ではまだ動かず、設定すると動く。

設定

GitHubマージ前の強制チェック

  1. Repo Settingを開く
  2. GitHubを開く
  3. Pull request statusを開く
  4. 認証画面が出るので、対象リポジトリを選択し、追加する
  5. GitHubのリポジトリでSettingのBranch設定で、Code Climateをrequireに設定する
  6. CIツールの設定ファイルに、カバレッジファイルの送信処理を追加
  7. Werckerはサンプルになかったので、下記にやり方を記載、カバレッジ測定はJacocoを使用

    1. Werckerの環境変数に CC_TEST_REPORTER_ID = Code Climateから発行されたトークン を追加
    2. ビルド前のstepに下記を追記

      # cc-test-reporter use env CC_TEST_REPORTER_ID
      - script:
          name: post coverage to code climate before
          code: |
            curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
            chmod +x ./cc-test-reporter
            ./cc-test-reporter before-build
      
    3. ビルド後のstepに下記を追記

      - script:
          name: post coverage to code climate after
          code: |
            export JACOCO_SOURCE_PATH="src/main/java"
            ./cc-test-reporter format-coverage build/reports/jacoco/test/jacocoTestReport.xml --input-type jacoco
            ./cc-test-reporter upload-coverage
      

wercker.ymlの全容

# This references an OpenJDK container from the
# Docker Hub https://hub.docker.com/_/openjdk/
# Read more about containers on our dev center
# http://devcenter.wercker.com/docs/containers/index.html
box: openjdk:10.0.1-jdk

# defining the dev pipeline
dev:
  steps:
    # A step that executes `gradle bootRun` command
    - script:
      name: run gradle
      code: |
        ./gradlew bootRun

# Build definition
build:
  # The steps that will be executed on build
  steps:
    # A step that executes `gradle build` command
    # cc-test-reporter use env CC_TEST_REPORTER_ID
    - script:
        name: post coverage to code climate before
        code: |
          curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
          chmod +x ./cc-test-reporter
          ./cc-test-reporter before-build
    - script:
        name: run gradle
        code: |
          ./gradlew --full-stacktrace -q --project-cache-dir=$WERCKER_CACHE_DIR build
    - script:
        name: post coverage to codecov
        code: |
          bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN
    - script:
        name: post coverage to code climate after
        code: |
          export JACOCO_SOURCE_PATH="src/main/java"
          ./cc-test-reporter format-coverage build/reports/jacoco/test/jacocoTestReport.xml --input-type jacoco
          ./cc-test-reporter upload-coverage

バッジ

Repo Settingから、コード品質とテストカバレッジのバッジ表示リンクを取得できる。README.mdに記載し、リポジトリのトップに表示する。

mediado
私たちメディアドゥは、電子書籍を読者に届けるために「テクノロジー」で「出版社」と「電子書店」を繋ぎ、その先にいる作家と読者を繋げる「電子書籍取次」事業を展開しております。業界最多のコンテンツラインナップとともに最新のテクノロジーを駆使した各種ソリューションを出版社や電子書店に提供し、グローバル且つマルチコンテンツ配信プラットフォームを目指しています。
https://mediado.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away