Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

golintͯ͠·͔͢ʁ

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

ͦ͏ͩ golint࡞Ζ͏

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

࡞ֶͬͯͿ golint

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

80ߦ͙Β͍Ͱॻ͚ͨ

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

ม਺wallyΛ୳ͤ

Slide 21

Slide 21 text

wally + golint = wallint

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

ม਺wallyΛ୳ͤ

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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