Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOS 開発での Pull Request と テストカバレッジの連携

iOS 開発での Pull Request と テストカバレッジの連携

star__hoshi

March 13, 2017
Tweet

More Decks by star__hoshi

Other Decks in Technology

Transcript

  1. iOS ։ൃͰͷ
    Pull Request ͱ
    ςετΧόϨοδͷ࿈ܞ
    iOS Test Night #3
    by @star__hoshi

    View Slide

  2. ΞδΣϯμ
    • ࣗݾ঺հ
    • ςετΧόϨοδܭଌ
    • ϓϧϦΫͱͷ࿈ܞ
    • ͓·͚

    View Slide

  3. ࣗݾ঺հ
    • Twitter: @star__hoshi
    • GitHub: starhoshi
    • Classiגࣜձࣾ
    • iOS ΤϯδχΞ

    View Slide

  4. ΧόϨοδͬͯʁ

    ϝϦοτ͸ʁσϝϦοτ͸ʁ
    ΧόϨοδΛຬͨ͢ͱ඼্࣭͕͕Δͷʁ
    ΧόϨοδϙϦεϝϯ

    View Slide

  5. ͱ͍͏࿩͸͠·ͤΜ
    ͳͥͳΒ5෼͔͠ͳ͍͔Β

    View Slide

  6. ࣮ࡍʹܭଌ͢Δ
    ͱ͍͏࿩Λ͠·͢

    View Slide

  7. ׬੒ܥ

    View Slide

  8. Xcode ʹ͓͚Δ
    ΧόϨοδܭଌํ๏

    View Slide

  9. Xcode: EditScheme > XxxTests
    Gather coverage data ʹνΣοΫೖΕΔ

    View Slide

  10. ͜Μͳײ͡Ͱ݁Ռ͕ग़Δ

    View Slide

  11. ϩʔΧϧͰܭଌͰ͖Δ
    ͕
    ϓϧϦΫʹ࿈ܞ͍ͨ͠

    View Slide

  12. fastlane scan
    +
    fastlane action

    View Slide

  13. fastlane scan

    ؆୯ʹςετΛ࣮ߦ (ઃఆϑΝΠϧ͸ඞཁ)
    IUUQTHJUIVCDPNGBTUMBOFGBTUMBOFUSFFNBTUFSTDBO

    View Slide

  14. fastlane action | grep coverage
    • lcov
    • xcov
    • gcovr
    • slather

    View Slide

  15. fastlane action | grep coverage
    • lcov
    • xcov
    • gcovr
    • slather

    View Slide

  16. nakiostudio/xcov
    IUUQTHJUIVCDPNOBLJPTUVEJPYDPW

    View Slide

  17. nakiostudio/danger-xcov
    IUUQTHJUIVCDPNOBLJPTUVEJPEBOHFSYDPW

    View Slide

  18. danger
    IUUQEBOHFSTZTUFNT
    ϓϧϦΫʹ merge OK ͔νΣοΫͰ͖Δ

    View Slide

  19. IUUQOJXBUBLPIBUFOBCMPHKQFOUSZ

    View Slide

  20. fastlane scan
    +
    danger-xcov
    +
    CI Server

    View Slide

  21. gem 'fastlane'
    gem 'danger-xcov'
    gem 'danger'
    Gemfile

    View Slide

  22. scheme "HogeTests"
    configuration "Staging"
    device "iPad Retina"
    workspace "hoge.xcworkspace"
    clean true
    skip_build true
    fastlane/Scanfile

    View Slide

  23. xcov.report(
    workspace:"hoge.xcworkspace",
    scheme:"HogeTests",
    minimum_coverage_percentage:40
    )
    Dangerfile
    minimum_coverage_percentage
    ΛԼճΔͱ Merge Ͱ͖ͳ͍

    View Slide

  24. lane :test do
    scan
    danger
    end
    fastlane/Fastfile

    View Slide

  25. test:
    override:
    - bundle exec fastlane test
    CI Ͱ࣮ߦ
    CircleCI Ͱͷྫ:

    View Slide

  26. DANGER_GITHUB_API_TOKEN

    https://github.com/settings/tokens/new
    ͰAPIτʔΫϯΛऔಘɺCI Ͱઃఆ

    View Slide

  27. ݁Ռ

    View Slide

  28. ͍͍͜ͱ

    100% ΛݟΔͱॆ࣮ײ͕͋Δ

    ΋ͬͱ΍Δͧ
    • ✅ ϨϏϡϫʔͷෛ୲ݮ

    ςετॻ͍ͯͳ͍ͷ͕ҰॠͰόϨΔ

    ݾͷະख़͞Λײ͡Δ ( 43%)

    View Slide

  29. ͓·͚

    View Slide

  30. require 'date'
    max = 90
    diff = Date.today - Date.new(2017,3,13)
    min = max > diff ? diff : max
    xcov.report(
    workspace: 'workspace', scheme: 'scheme',
    minimum_coverage_percentage: min)
    90೔ޙʹ90%Λ࣮ݱ͢Δํ๏
    ຖ೔1%ͣͭ Merge ͷਫ४Λ্͍͛ͯ͘

    View Slide

  31. Ҏ্

    View Slide