Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

golintを使おう

8,325 views

Published on

GolangNotHttpNight(Gunosy.go#12)にて発表した内容に加筆修正を加えたものになります。
[GolangNotHttpNight]
http://gunosygo.connpass.com/event/13139/

[sample code]
https://github.com/evalphobia/golint-sample

Published in: Technology
  • Be the first to comment

golintを使おう

  1. 1. golintを使おう golint
  2. 2. Copyright © 2009-2015 eureka, inc. All rights reserved. もくじ ・じこしょうかい ・golintについて ・golintをみてみる ・わたしとgolint
  3. 3. じこしょうかい - なまえ: Takuma Morikawa - しょぞく: - たんとう:
  4. 4. じこしょうかい - なまえ: Takuma Morikawa - しょぞく: - たんとう: (Go, JS, たまにインフラ)
  5. 5. じこしょうかい - なまえ: Takuma Morikawa - しょぞく: - たんとう: (Go, JS, たまにインフラ) aws-sdk-goのラッパーとか https://github.com/evalphobia/aws-sdk-go-wrapper
  6. 6. じこしょうかい - なまえ: Takuma Morikawa - しょぞく: - たんとう: (Go, JS, たまにインフラ) aws-sdk-goのラッパーとか https://github.com/evalphobia/aws-sdk-go-wrapper
  7. 7. golintについて
  8. 8. Copyright © 2009-2015 eureka, inc. All rights reserved. golintについて みなさんつかってますか?
  9. 9. Copyright © 2009-2015 eureka, inc. All rights reserved. golintについて みなさんつかってますか?
  10. 10. Copyright © 2009-2015 eureka, inc. All rights reserved. golintについて みなさんつかってます か?
  11. 11. Copyright © 2009-2015 eureka, inc. All rights reserved. golintについて
  12. 12. Copyright © 2009-2015 eureka, inc. All rights reserved. golintについて もちろん私は
  13. 13. Copyright © 2009-2015 eureka, inc. All rights reserved. golintについて 設定していませんでした…orz
  14. 14. Copyright © 2009-2015 eureka, inc. All rights reserved. golintについて $ golint ./…
  15. 15. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたしたち 1) <XXX>でコードを書く
  16. 16. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたしたち 1) <XXX>でコードを書く 2) <XXX>でテストコードを書く
  17. 17. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたしたち 1) <XXX>でコードを書く 2) <XXX>でテストコードを書く 3) ʕº̫͡ºʔo00(git push origin dev [ターン!])
  18. 18. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたしたち 1) <XXX>でコードを書く 2) <XXX>でテストコードを書く 3) ʕº̫͡ºʔo00(git push origin dev [ターン!]) 4) CircleCIがエラーを検知
  19. 19. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたしたち 1) <XXX>でコードを書く 2) <XXX>でテストコードを書く 3) ʕº̫͡ºʔo00(git push origin dev [ターン!]) 4) CircleCIがエラーを検知 5) (Slackへのエラー通知でざわつく)
  20. 20. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたしたち 1) <XXX>でコードを書く 2) <XXX>でテストコードを書く 3) ʕº̫͡ºʔo00(git push origin dev [ターン!]) 4) CircleCIがエラーを検知 5) (Slackへのエラー通知でざわつく) 6) (*ノェノ)キャー m9(^Д^)プギャー
  21. 21. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたしたち 1) <XXX>でコードを書く 2) <XXX>でテストコードを書く 3) ʕº̫͡ºʔo00(git push origin dev [ターン!]) 4) CircleCIがエラーを検知 5) (Slackへのエラー通知でざわつく) 6) (*ノェノ)キャー m9(^Д^)プギャー < おっけー!
  22. 22. Copyright © 2009-2015 eureka, inc. All rights reserved. ある日 ʕº̫͡ºʔo00(あれ、、、)
  23. 23. Copyright © 2009-2015 eureka, inc. All rights reserved. ある日 ʕº̫͡ºʔo00(あれ、、、) ʕº̫͡ºʔo00(pre-commitがうまく動いてないぞ…)
  24. 24. $ golint ./… 2>&1 | wc -l
  25. 25. Copyright © 2009-2015 eureka, inc. All rights reserved. ある日 ʕº̫͡ºʔo00(ちゃんと動作を確認しましょう…) https://gist.github.com/evalphobia/cf79c1911df7a5ae3f00
  26. 26. golintをみてみる
  27. 27. golintをみてみる https://github.com/golang/lint/blob/master/lint.go
  28. 28. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lint() ← こ の 1 7 の関数内でファイルごと にチェックをかけている
  29. 29. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintPackageComment() ← パ ッ ケ ー ジ の コ メ ン ト を チ ェ ッ ク
  30. 30. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintPackageComment()
  31. 31. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintPackageComment() ↑ パ ッ ケ ー ジ コ メ ン ト が 離 れ て い る
  32. 32. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintPackageComment() ↑ パ ッ ケ ー ジ コ メ ン ト が な い
  33. 33. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintPackageComment() ↑ パ ッ ケ ー ジ コ メ ン ト の 前 に ス ペ ー ス が あ る
  34. 34. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintPackageComment() ↑ コ メ ン ト の 形 式 に 添 っ て い な い
  35. 35. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintImports() ← i m p o r t を チ ェ ッ ク
  36. 36. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintImports() ↑ ド ッ ト イ ン ポ ー ト 、 ダ メ 、 ゼ ッ タ イ
  37. 37. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintBlankImports() ← 無 名 i m p o r t 「 _ 」 を チ ェ ッ ク
  38. 38. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintBlankImports() ↑ ド ッ ト イ ン ポ ー ト 、 ダ メ 、 ゼ ッ タ イ↑ 無 名 イ ン ポ ー ト を テ ス ト や m a i n ( ) 以 外 で 使 っ て い る
  39. 39. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintExported() ← 大 文 字 で 始 ま る 変 数 や 関 数 を チ ェ ッ ク ( 公 開 状 態 )
  40. 40. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintExported() ↑ ド ッ ト イ ン ポ ー ト 、 ダ メ 、 ゼ ッ タ イ ↑ パ ッ ケ ー ジ 名 と 同 じ p r e f i x を 持 っ て い る
  41. 41. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintExported() ↑ 公 開 変 数 ( p u b l i c ) は 、 個 別 に 定 義 す る
  42. 42. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintExported() ↑ 公 開 し て い る も の に は コ メ ン ト を つ け ま し ょ う
  43. 43. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintExported() ↑ コ メ ン ト の 形 式 に 添 っ て い な い
  44. 44. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintNames() ← 命 名 を チ ェ ッ ク
  45. 45. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ パ ッ ケ ー ジ 名 に ア ン ス コ 「 _ 」 は 使 わ な い
  46. 46. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ 名 前 に 全 部 大 文 字 を 使 っ ち ゃ あ か ん
  47. 47. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ k X X X の よ う な 化 石 命 名 も あ か ん
  48. 48. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ 名 前 に も ア ン ス コ は 使 っ ち ゃ あ か ん
  49. 49. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↓ ※ i d と か h t t p と か は 大 文 字 小 文 字 を 統 一 す る
  50. 50. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintNames() ← 変 数 の 宣 言 を チ ェ ッ ク
  51. 51. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintVarDecls() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ 0 値 で 初 期 化 し な く て も い い ん だ よ
  52. 52. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintVarDecls() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ 右 辺 が 類 推 可 能 な 値 の 場 合 は 型 宣 言 不 要 だ よ
  53. 53. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintElses() ← e l s e ブ ロ ッ ク を チ ェ ッ ク
  54. 54. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintElses() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ i f 文 最 後 の e l s e は r e t u r n 返 す な ら い ら な い よ !
  55. 55. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintRanges() ← r a n g e を チ ェ ッ ク
  56. 56. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintRanges() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ f o r r a n g e 文 で k e y し か 使 わ な い 場 合 は 、 2 番 目 の 変 数 を 「 _ 」 で 捨 て ず に 省 略 し た ほ う が え え
  57. 57. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrorf() ← e r r o r . N e w を チ ェ ッ ク
  58. 58. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrorf() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ e r r o r s . N e w ( f m t . S p r i n t f ( ) ) だ っ て ? f m t . E r r o r f ( ) っ て い う の が あ っ て だ な …
  59. 59. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrors() ← e r r o r 変 数 を チ ェ ッ ク
  60. 60. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrors() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ グ ロ ー バ ル な エ ラ ー 変 数 の p r e f i x は " e r r " に し ま し ょ う
  61. 61. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrorStrings() ← エ ラ ー 文 言 を チ ェ ッ ク
  62. 62. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrorStrings() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ エ ラ ー 文 言 を 大 文 字 で 始 め る の は 非 推 奨 ※ ↓ ※ し き い 値 は 0 . 6 な の で 通 常 は 表 示 さ れ な い
  63. 63. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrorStrings() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ エ ラ ー 文 言 に 句 読 点 を つ け て は い け な い
  64. 64. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintReceiverNames() ← メ ソ ッ ド の レ シ ー バ 名 を チ ェ ッ ク
  65. 65. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintReceiverNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ レ シ ー バ 変 数 を ア ン ス コ 「 _ 」 に し ち ゃ あ か ん
  66. 66. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintReceiverNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ 「 m e 」 「 t h i s 」 「 s e l f 」 も あ か ん よ な あ
  67. 67. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintReceiverNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ 同 じ 構 造 体 で レ シ ー バ 変 数 名 は 統 一 し よ う
  68. 68. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintIntDec() ← イ ン ク リ メ ン ト ・ デ ク リ メ ン ト を チ ェ ッ ク
  69. 69. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintIntDec() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ 「 i + = 1 」 は 「 i + + 」 に し た ほ う が い い よ
  70. 70. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintMake() ← m a k e ( ) を チ ェ ッ ク
  71. 71. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintMake() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ 空 の 配 列 は m a k e し な い で 宣 言 す る だ け の 方 が い い よ
  72. 72. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrorReturn() ← r e t u r n 時 の e r r o r 型 を チ ェ ッ ク
  73. 73. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintErrorReturn() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ 関 数 で 複 値 を 返 す 場 合 、 e r r o r 型 は 最 後 に し ま し ょ う
  74. 74. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintUnexportedReturn() ← 非 公 開 型 の r e t u r n を チ ェ ッ ク
  75. 75. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintUnexportedReturn() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ ↑ 公 開 関 数 で 非 公 開 の 構 造 体 を 返 す の は あ か ん !
  76. 76. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintTimeNames() ← t i m e の 命 名 を チ ェ ッ ク
  77. 77. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go lintTimeNames() ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑↑ t i m e . D u r a t i o n 型 に 時 間 の 単 位 の 名 前 は つ け て は い け な い
  78. 78. Copyright © 2009-2015 eureka, inc. All rights reserved. 続きコードはWebで ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ [golintのエラーサンプル] https://github.com/evalphobia/golint-sample
  79. 79. Copyright © 2009-2015 eureka, inc. All rights reserved. 続きコードはWebで ↑ コ メ ン ト の 形 式 に 添 っ て い な い ↑ [golintのエラーサンプル] https://github.com/evalphobia/golint-sample [公式にあった…orz] https://github.com/golang/lint/tree/master/testdata
  80. 80. Copyright © 2009-2015 eureka, inc. All rights reserved. lint.go しきい値
  81. 81. ↑ 「 - m i n _ c o n f i d e n c e 」
  82. 82. Copyright © 2009-2015 eureka, inc. All rights reserved. 0.8以下のエラー ↑ パ ッ ケ ー ジ コ メ ン ト が な い ↑ e r r o r s . N e w ( s t r i n g ) の 文 字 列 が 大 文 字 で 始 ま っ て い る
  83. 83. わたしとgolint
  84. 84. わたしとgolint もし、できることなら
  85. 85. わたしとgolint あなただけの専用lintを作ってみたいと思いませんか?
  86. 86. わたしとgolint …
  87. 87. わたしとgolint 間に合いませんでした…
  88. 88. thank you : ) Copyright © 2009-2015 eureka, inc. All rights reserved.

×