࡞ֶͬͯͿϛχϚϜgolint@minamijoyo2017/06/05
View Slide
ࣗݾհ• ా ਅ೭ (Masayuki Morita)• Twitter/GitHub: @minamijoyo• CrowdWorks Inc.• Πϯϑϥ୲• ͍͍ͩͨAWS/Terraform/Dockerͱ͔͍ͬͯ͡Δ
Πϯϑϥ୲͕ࠓ͙͢GoΛֶͿ͖3ͭͷཧ༝1. GoϛυϧΣΞCLIπʔϧ͕૿͖͑ͯͨɻ2. bashεΫϦϓτͭΒ͍ɻGoॻָ͍͍ͯͯ͠ɻ3. Gopher͘Μ͕͔Θ͍͍ɻThe Go gopher was designed by Renée French.
ࠓͷςʔϚ:࠷ۙɺgolintͰ༡ΜͰΈͨ
golintͯ͠·͔͢ʁ
golint• ެࣜͷLinter• GoͬΆ͘ͳ͍ίʔσΟϯάελΠϧΛࢦఠ$ go get -u github.com/golang/lint/golint
$ golint main.gomain.go:6:2: var instanceId should be instanceID
Ͳ͏ͬͯఆͯ͠Δͷ͔ʁ
ͨͩͷࣙॻͩͬͨ(※࣮ࡍʹ୯ޠͷ్தͷͷݕग़͍ͯ͠ΔͷͰগ͠ෳࡶʣhttps://github.com/golang/lint/blob/master/lint.go
͔͠͠golintͷίʔυΛͨͩோΊͯͯ੩తղੳ͕ॳ৺ऀʹΑ͘Θ͔ΒΜͷͰ͢
ͦ͏ͩgolint࡞Ζ͏
ϓϩάϥϛϯάֶशͷجຊ:·ͶΔ
࡞ֶͬͯͿ golint
ϛχϚϜͳཁ݅• ػೳɿಛఆͷม໊Λ୳͢• ೖྗɿ1ϑΝΠϧͷΈҾͰϑΝΠϧ໊Λ͢• ग़ྗɿϚονͨ͠ϑΝΠϧ໊:ߦ:ΧϥϜΛදࣔ
80ߦ͙Β͍Ͱॻ͚ͨ
←ඪ४ͷgoύοέʔδΛ͏↓ҾͰೖྗϑΝΠϧ໊ΛΒ͏
↓ϑΝΠϧΛύʔεͯ͠ASTΛऔಘ
↑ࠨลͷࣝผࢠΛऔΓग़ͯ͠νΣοΫ↑ASTΛ࠶ؼతʹ୳ࡧ←มೖࣜΛ୳͢visitor
↑ม໊ʹϚονͨ͠ΒҐஔΛग़ྗ←୳͢ม໊ͷఆٛ
มwallyΛ୳ͤ
wally + golint = wallint
$ wallint data/wally.godata/wally.go:6:2: wally was found
͔ͤͬ͘ͳͷͰΤσΟλʹΈࠐΜͰΈͨ
ҰॠͰӅΕͨมwallyΛݕग़
·ͱΊ• ϓϩάϥϛϯάͷجຊ·ͶΔ͜ͱ• ࡞ֶͬͯͿͱཧղ͕ਂ·Δ• આ໌ʹͬͨίʔυˣ• https://github.com/minamijoyo/wallint