$30 off During Our Annual Pro Sale. View Details »

RuboCop Custom Formatter for Reviewdog Diagnostic Format

RuboCop Custom Formatter for Reviewdog Diagnostic Format

gotanda.rb#53 "RuboCop Custom Formatter for Reviewdog Diagnostic Format"

Masato Ohba

June 21, 2023
Tweet

More Decks by Masato Ohba

Other Decks in Programming

Transcript

  1. 3VCP$PQ$VTUPN'PSNBUUFS
    GPS3FWJFXEPH%JBHOPTUJD'PSNBU

    !HPUBOEBSC
    PICBSZF

    View Slide

  2. 3VCP$PQ
    ࢖͍ͬͯ·͔͢ʁ

    View Slide

  3. SFWJFXEPHBDUJPOSVCPDPQ
    ࢖͍ͬͯ·͔͢ʁ

    View Slide


  4. SFWJFXEPHBDUJPOSVCPDPQ
    (JU)VCͳͲͷίʔυϗεςΟϯά
    αʔϏεʹϨϏϡʔίϝϯτΛ౤ߘ
    ͢ΔͨΊͷπʔϧ
    $-*ͱ࣮ͯ͠ߦՄೳ
    ಛఆͷπʔϧʹґଘͤͣɺ೚ҙͷ
    MJOUFSͱ౷߹Ͱ͖Δ
    SFWJFXEPHͱ͸ʁ
    IUUQTHJUIVCDPNSFWJFXEPHSFWJFXEPH
    ༷ʑͳπʔϧ޲͚
    (JU)VC"DUJPOT͕
    ଘࡏ͢Δ

    View Slide


  5. SFWJFXEPHBDUJPOSVCPDPQ
    3VCP$PQͱSFWJFXEPHΛ౷߹͢Δ
    (JU)VCDVTUPNBDUJPO
    3VCP$PQͷࢦఠ಺༰Λίϝϯτͯ͠
    ͘ΕΔͷͰɺ࣮ߦͨ͠δϣϒͷϩά
    Λݟʹߦ͔ͳͯ͘΋Α͍
    EJ
    ff
    ʹର͚ͯͩ͠ίϝϯτͤ͞Δ͜ͱ
    ͕Ͱ͖Δ
    SFWJFXEPHBDUJPOSVCPDPQ
    ͱ͸ʁ
    SVCPDPQίϚϯυ͸શମʹର࣮ͯ͠ߦ͞Εɺ݁ՌΛSFWJFXEPHଆͰ
    fi
    MUFS͍ͯ͠Δ
    DPNNFOUͰ͖ΔͷͰ
    EJTDVTTJPO΋Մೳ

    View Slide


  6. SFWJFXEPHBDUJPOSVCPDPQDPOGJHFYBNQMF
    ৄࡉ͸IUUQTHJUIVCDPNSFWJFXEPHBDUJPOSVCPDPQࢀর

    View Slide


  7. SFWJFXEPHBDUJPOSVCPDPQTVHHFTUJPOGFBUVSF
    SFWJFXEPHBDUJPOSVCPDPQWͰ௥Ճ
    ͞Εͨػೳ
    3VCP$PQʹ͸BVUPDPSSFDUػೳ͕͋
    Γɺݕग़ͨ͠ҧ൓Λࣗಈิਖ਼Ͱ͖Δ
    ಉػೳ͕ఏҊ͢Δิਖ਼͕TVHHFTUFE
    DIBOHFͱͯ͠ίϝϯτ͞ΕΔΑ͏ʹ
    ͳͬͨ
    TVHHFTUJPOGFBUVSF
    W͕ϦϦʔε͞Εͨͷ͸೥
    ࡉ͔͍มߋͰ͋Ε͹
    (6*͔ΒDPNNJU͢Δ
    ͚ͩͰΑ͍

    View Slide


  8. ࢲ͕΍Γ·ͨ͠
    IUUQTHJUIVCDPNSFWJFXEPHBDUJPOSVCPDPQQVMM

    View Slide

  9. Ͳ͏΍࣮ͬͯݱ͔ͨ͠

    View Slide


  10. Ξϓϩʔν
    w SFWJFXEPH$-*͸3VCP$PQ౳ͷϝδϟʔͳMJOUFSͷग़ྗΛQBSTFͰ
    ͖Δ͏͑ɺ3FWJFXEPH%JBHOPTUJD'PSNBU 3%'PSNBU
    ͱ͍͏ಠ
    ࣗͷೖྗܗࣜ΋༻ҙ͍ͯ͠Δ
    w ˠͲΜͳMJOUFSͰ΋ग़ྗΛGPSNBU͢Ε͹SFWJFXEPHରԠͰ͖Δ
    w MJOUFSͷσϑΥϧτग़ྗΑΓ΋3%'PSNBUͷ΄͏͕දݱྗ͕ߴ͘ɺ
    TVHHFTUJPO΋ޙऀͰͳ͍ͱදݱͰ͖ͳ͍
    w ˠ3VCP$PQͷग़ྗ͕3%'PSNBUʹͳΔΑ͏੔ܗ͢Ε͹͍͚Δ
    IUUQTHJUIVCDPNSFWJFXEPHSFWJFXEPHUSFFNBTUFSQSPUPSEG

    View Slide


  11. 3%'PSNBU +40/
    &YBNQMF
    3VCP$PQͷ
    A$4UZMF
    'SP[FO4USJOH-JUFSBM$PNNFOU
    .JTTJOHGSP[FOTUSJOHMJUFSBM
    DPNNFOUA
    Έ͍ͨͳग़ྗ͕ˠͷΑ͏ʹͳ͍ͬͯ
    Ε͹Α͍
    P
    ff
    FOTFTΛEJBHOPTUJDTͷ഑ྻʹม׵
    ͢ΔΠϝʔδ

    View Slide


  12. 3VCP$PQʹ͸GPSNBUUFSΛબ୒͢Δػߏ͕͋Δ
    $*Ͱ࢖͍ͬͯΔ
    ϓϩδΣΫτ΋͋Δ
    $-*ΦϓγϣϯͰ
    ࢦఆՄೳ
    IUUQTEPDTSVCPDPQPSHSVCPDPQGPSNBUUFSTIUNM

    IUUQTXXXSVCZEPDJOGPHFNTSVCPDPQ3VCP$PQ'PSNBUUFS#BTF'PSNBUUFS
    ࣗ࡞ͷDVTUPNGPSNBUUFS
    ΋ར༻Ͱ͖Δ

    View Slide


  13. DVTUPNGPSNBUUFS࣮૷
    ։࢝࣌ͷTUBSUFEͰ)BTIΛੜ੒
    ϑΝΠϧ୯ҐͷJOTQFDUऴྃ࣌ͷ
    fi
    MF@
    fi
    OJTIFEͰP
    ff
    FOTFTΛ
    EJBHOPTUJDTʹม׵ͯ͠٧Ί͍ͯ͘
    ऴྃ࣌ͷ
    fi
    OJTIFEͰTUEPVUʹग़ྗ
    IUUQTXXXSVCZEPDJOGPHFNTSVCPDPQ3VCP$PQ'PSNBUUFS#BTF'PSNBUUFS
    3VCP$PQ'PSNBUUFS#BTF'PSNBUUFSΛܧঝͨ͠ΫϥεʹϑοΫϝιουΛ࣮૷͢Δ

    View Slide


  14. DVTUPNGPSNBUUFS࣮૷
    3VCP$PQ$PQ0GGFOTF͔Β
    ίʔυҐஔ΍DPSSFDUJPO৘ใ͕औΕΔ

    View Slide


  15. ੒Ռ෺
    SVCPDPQ$-*͔ΒGPSNBUUFSΛࢦఆ࣮ͯ͠ߦ͢Δ͜ͱ
    Ͱ3%'PSNBUͷ+40/͕ग़ྗ͞ΕΔΑ͏ʹͳͬͨ
    ͜ͷ+40/ΛSFWJFXEPH$-*ʹ౉ͤ͹(JU)VC
    DPNNFOUʹTVHHFTUJPO͕ͭ͘

    View Slide


  16. ศར

    View Slide


  17. ·ͱΊ
    🤝 3VCP$PQͷDVTUPNGPSNBUUFSΛॻ͘͜ͱͰSFWJFXEPHBDUJPOSVCPDPQʹ
    TVHHFTUJPOGFBUVSFΛ࣮૷͢Δ͜ͱ͕Ͱ͖ͨ
    ⚽ SFWJFXEPH͸3%'PSNBUͷ͓͔͛Ͱ͋ΒΏΔMJOUFSͱ౷߹Մೳʹͳ͓ͬͯΓɺ
    SVCPDPQ͸DVTUPNGPSNBUUFSͷ͓͔͛Ͱ݁ՌΛNBDIJOFSFBEBCMFʹͰ͖Δ
    👁 SFWJFXEPHBDUJPOCSBLFNBO΋͋Δ͠ɺಉ͡΍ΓํͰ͍Ζ͍ΖͰ͖Δ
    ܕݕࠪπʔϧ TPSCFU TUFFQ
    ͷDVTUPNBDUJPO͸ଘࡏ͠ͳ͍Ά͍ͷͰνϟϯε͔΋

    View Slide


  18. 4NBSU#BOL *OD
    4PGUXBSF&OHJOFFS
    .BTBUP0ICB
    !PICBSZF
    8IP*BN
    !PICBSZF

    View Slide