近所の焙煎屋で二回目。ハイチはあっさりすぎたし少し経つと味が悪くなってしまったので、もっと普通のをと思ってグァテマラに。こちらはオーソドックスな味と香り。しかしやはり日が経ってくると味がすぐ落ちる。やはり自宅で挽くべきか。
Go: golangci-lint
Go には良い Linter がたくさんあるが、ありすぎてどれを使えばいいかわからない・個別に設定するのが面倒、などの課題を解決するためのツール、のようだ。
今関わっているプロジェクトで試しに走らせてみたら、利用していない linter が検出するエラー・警告が多く、乗り換えは pending にしたが、新規プロジェクト等では最初から導入し、不要と感じるものを都度無効化していく、というやり方が良さそう。
詳しい説明や設定例を紹介している記事
GoLand: golint の設定例
File Watchers で設定する。ここの例を参考にすると良い。
Configure GoLand with golint · vmware-archive/dispatch Wiki · GitHub
他のツールも含めて網羅的に設定例を紹介している記事
Go: golint を CI で使うときは -set_exit_status オプションをつける
つけないと lint エラーが検知されても exit status が 0 になり、 CI が pass してしまう。
$ golint -h Usage of golint: golint [flags] # runs on package in current directory golint [flags] [packages] golint [flags] [directories] # where a '/...' suffix includes all sub-directories golint [flags] [files] # all must belong to a single package Flags: -min_confidence float minimum confidence of a problem to print it (default 0.8) -set_exit_status set exit status to 1 if any issues are found
GitHub - golang/lint: [mirror] This is a linter for Go source code.
Go: The Go Playground で TestXxx と ExampleXxx の書き方
The Go Playground で Test & Example がしやすくなった - Qiita に詳しい。
TestXxx
ポイント
import "testing"
するfunc main()
を書かないfunc TestXxx()
を普通に書く
package main import ( "testing" ) func Hello() string { return "Hello" } func TestHello(t *testing.T) { tests := []struct { name string want string }{ {name: "#1", want: "Hello"}, {name: "#2", want: "Goodbye"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := Hello(); got != tt.want { t.Errorf("Hello() = %v, want %v", got, tt.want) } }) } }
=== RUN TestHello === RUN TestHello/#1 === RUN TestHello/#2 prog.go:22: Hello() = Hello, want Goodbye --- FAIL: TestHello (0.00s) --- PASS: TestHello/#1 (0.00s) --- FAIL: TestHello/#2 (0.00s) FAIL 2 tests failed.
https://play.golang.org/p/0MHXSA7tnOJ
ExampleXxx
ポイント
import "testing"
しないfunc main()
を書かないfunc TestXxx()
を書かないfunc ExampleXxx()
を普通に書く
package main import ( "fmt" ) func ExampleHello() { fmt.Println("Hello") // Output: Hello }
=== RUN ExampleHello --- PASS: ExampleHello (0.00s) PASS All tests passed.