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

make and learn minimum golint

make and learn minimum golint

Masayuki Morita

June 05, 2017
Tweet

More Decks by Masayuki Morita

Other Decks in Programming

Transcript

  1. ࡞ֶͬͯͿ
    ϛχϚϜgolint
    GoݴޠLTେձ
    2017/06/05
    @minamijoyo

    View Slide

  2. ࣗݾ঺հ
    • ৿ా ਅ೭ (Masayuki Morita)
    • Twitter/GitHub: @minamijoyo
    • CrowdWorks Inc.
    • Πϯϑϥ୲౰
    • ͍͍ͩͨAWS/Terraform/Dockerͱ͔͍ͬͯ͡Δ

    View Slide

  3. Πϯϑϥ୲౰͕ࠓ͙͢
    GoΛֶͿ΂͖3ͭͷཧ༝
    1. Go੡ϛυϧ΢ΣΞ΍CLIπʔϧ͕૿͖͑ͯͨɻ
    2. bashεΫϦϓτͭΒ͍ɻGo͸ॻָ͍͍ͯͯ͠ɻ
    3. Gopher͘Μ͕͔Θ͍͍ɻ
    The Go gopher was designed by Renée French.

    View Slide

  4. ࠓ೔ͷςʔϚ:
    ࠷ۙɺgolintͰ༡ΜͰΈͨ࿩

    View Slide

  5. golintͯ͠·͔͢ʁ

    View Slide

  6. golint
    • ެࣜͷLinter
    • GoͬΆ͘ͳ͍ίʔσΟϯάελΠϧΛࢦఠ
    $ go get -u github.com/golang/lint/golint

    View Slide

  7. $ golint main.go
    main.go:6:2: var instanceId should be instanceID

    View Slide

  8. Ͳ͏΍ͬͯ൑ఆͯ͠Δͷ͔ʁ

    View Slide

  9. ͨͩͷࣙॻͩͬͨ
    (※࣮ࡍʹ͸୯ޠͷ్தͷ΋ͷ΋ݕग़͍ͯ͠ΔͷͰগ͠ෳࡶʣ
    https://github.com/golang/lint/blob/master/lint.go

    View Slide

  10. ͔͠͠
    golintͷίʔυΛͨͩோΊͯͯ΋
    ੩తղੳ͕
    ॳ৺ऀʹΑ͘Θ͔ΒΜͷͰ͢

    View Slide

  11. ͦ͏ͩ
    golint࡞Ζ͏

    View Slide

  12. ϓϩάϥϛϯάֶशͷجຊ:
    ·ͶΔ

    View Slide

  13. ࡞ֶͬͯͿ golint

    View Slide

  14. ϛχϚϜͳཁ݅
    • ػೳɿಛఆͷม਺໊Λ୳͢
    • ೖྗɿ1ϑΝΠϧͷΈҾ਺ͰϑΝΠϧ໊Λ౉͢
    • ग़ྗɿϚονͨ͠ϑΝΠϧ໊:ߦ਺:ΧϥϜΛදࣔ

    View Slide

  15. 80ߦ͙Β͍Ͱॻ͚ͨ

    View Slide

  16. ←ඪ४ͷgoύοέʔδΛ࢖͏
    ↓Ҿ਺ͰೖྗϑΝΠϧ໊Λ΋Β͏

    View Slide

  17. ↓ϑΝΠϧΛύʔεͯ͠ASTΛऔಘ

    View Slide

  18. ↑ࠨลͷࣝผࢠΛऔΓग़ͯ͠νΣοΫ
    ↑ASTΛ࠶ؼతʹ୳ࡧ
    ←ม਺୅ೖࣜΛ୳͢visitor

    View Slide

  19. ↑ม਺໊ʹϚονͨ͠ΒҐஔΛग़ྗ
    ←୳͢ม਺໊ͷఆٛ

    View Slide

  20. ม਺wallyΛ୳ͤ

    View Slide

  21. wally + golint = wallint

    View Slide

  22. $ wallint data/wally.go
    data/wally.go:6:2: wally was found

    View Slide

  23. ͔ͤͬ͘ͳͷͰ
    ΤσΟλʹ૊ΈࠐΜͰΈͨ

    View Slide

  24. ม਺wallyΛ୳ͤ

    View Slide

  25. ҰॠͰӅΕͨม਺wallyΛݕग़

    View Slide

  26. ·ͱΊ
    • ϓϩάϥϛϯάͷجຊ͸·ͶΔ͜ͱ
    • ࡞ֶͬͯͿͱཧղ͕ਂ·Δ
    • આ໌ʹ࢖ͬͨίʔυˣ
    • https://github.com/minamijoyo/wallint

    View Slide