golintを使おう

3,967 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
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,967
On SlideShare
0
From Embeds
0
Number of Embeds
1,616
Actions
Shares
0
Downloads
4
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • ・自己紹介
  • 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.

    ×