GoLand 2020.2ヘルプ

Goでコードインスペクション

このトピックでは、Goで使用できるすべてのGoLand コードインスペクションをリストします。

設定/環境設定 Ctrl+Alt+Sエディター | インスペクションページで特定のインスペクションを切り替えるか、その重大度レベルを変更できます。

推定されるバグ

インスペクション説明デフォルトの重大度
延期/実行ステートメントの呼び出しが直接回復またはパニックを起こす

recover() または panic() を直接呼び出す defer および go ステートメントを報告します。

パニックの取り扱い(英語)およびGoステートメント(英語)を参照してください。

Weak Warning 弱い警告
ゼロ除算

ゼロによる除算を報告します。

ゼロによる除算は、ランタイムパニックを引き起こします。

Warning 警告
シフト式超過

整数の幅以上のシフト式をチェックします。

Warning 警告
名前識別子としてインポートされたパッケージ名

使用されたインポートと重複する変数、引数、または関数の宣言を報告します。

そのような宣言は合法ですが、宣言後にパッケージエクスポートされた識別子を使用することを不可能にするか、コードを読み取るときに混乱を生じます。

Warning 警告
文字列が正しくありません。カウント引数を置き換える

-1 ではなく置換カウント 0 を使用して strings.Replace 呼び出しを報告します。

文字列を何回置換するかについてのcount引数は、何も置換せず、関数呼び出しを冗長にしないため、0 にしないでください。代わりに -1 を使用してください。

Warning 警告
Println / Printfのような関数の誤った使用箇所

Println -likeおよび Printf -like関数の誤った使用箇所を報告します。

Weak Warning 弱い警告
エラーの不適切な使用。機能として

エラーの2番目の引数をチェックします。インターフェースまたはエラーを実装する型へのポインターです。

参照先: https://golang.org/pkg/errors/#As(英語)

Warning 警告
sync / atomicパッケージの誤った使用

sync/atomic パッケージの一般的な誤った使用箇所を報告します。

Warning 警告
unintptrからunsafe.Pointerへの無効な変換

uintptr から unsafe/Pointer への無効な変換をチェックします。

整数をポインターに変換するための unsafe/Pointer の誤った使用箇所を報告します。 uintptr から unsafe/Pointer への変換は、ポインター値を保持する uintptr -typedワードがメモリにあることを意味する場合、そのワードはスタックコピーやガベージコレクターからは見えないため、無効です。

Warning 警告
誤って値で渡されたロック

誤って値で渡されたロックをチェックします。

ロック( sync/Mutexsync/WaitGroup などの sync/Locker を実装するタイプ)を含む値を誤ってコピーすると、両方のコピーが正しく機能しなくなる可能性があります。一般に、このような値はポインターを介して参照する必要があります。

Warning 警告
funcリテラルによってキャプチャーされたループ変数

入れ子関数内からループ変数への参照を報告します。

このアナライザーは、ループ本体内の関数リテラル内からループ変数への参照をチェックします。ループ本体の最後のステートメントであるdeferまたはgoステートメントで関数リテラルが呼び出されたインスタンスのみをチェックします。

参照先: Go Closures and Goroutines FAQ(英語)

Warning 警告
不正なビルドタグ

不正なビルドタグを報告し、誤った場所にあるタグをビルドします。

ビルドコマンドにジャンプ: ビルド制約(英語)を参照してください。

Weak Warning 弱い警告
不正な構造タグ

構造体タグが慣習にジャンプ(英語)に準拠していることを報告します。

これらの規則によれば、タグ文字列は、オプションでスペースで区切られた key:"value" ペアの連結です。各キーは、space (U+0020 ' ') , quote (U+0022 '"') および colon (U+003A ':')以外の非制御文字で構成される空でない文字列です。各値は、U+0022 '"' 文字とGo文字列リテラル構文を使用して引用されます。

また、タグ付きのフィールドがエクスポートされることを確認します。

適切なタグの例は次のとおりです。

type Example struct { Field int `json:"field" xml:"demo"` }
Warning 警告
ニルネス・アナライザー

nil 値の誤った使用によって引き起こされた問題を報告します。

データフローを分析して、変数に nil 値または nil 値がないかどうかを判断します。これに基づいて、コードの潜在的なバグを報告します。例:

  • nil レシーバーでのメソッド呼び出しは、「nilポインター逆参照」を引き起こす可能性があります。

  • nil スライスのインデックス作成によりパニックが発生する可能性があります。

  • v が常に nil または nil ではないことがわかっている場合、v == nil のような比較は意味がありません。

  • 変数に対応するエラーがあり、nil でないことが確認されていません。 v, err := foo() のようなステートメントで一緒に定義または割り当てられている場合、エラーは変数に対応します。

Warning 警告
既知の関数名の非標準の署名

名前が標準ライブラリのよく知られたインターフェースメソッドの1つと一致するメソッドが正しい署名を持っていることを確認します。

Warning 警告
予約語を名前として使用

組み込みキーワードまたは予約済みキーワードと重複する変数、引数、または関数の宣言を報告します。

このエラーを受け取った場合、コードは可能な限り明示的ではなく、他のユーザーを混乱させる可能性があります。

Warning 警告
シャドウイング変数

外部スコープの宣言と重複する変数の宣言を報告します。

使用不可
処理不可能なエラーです

エラーが処理されない場合にエラーを返す関数/メソッドの呼び出しを報告します。

Warning 警告
アンマーシャルが不正な引数で呼び出されます

json.Unmarshal などの関数の呼び出しを分析します。結果を格納するために渡される引数がポインターでもインターフェースでもない場合、問題を報告します。このような呼び出しは失敗してエラーを返すことが保証されています。

参照先: https://golang.org/pkg/encoding/json/#Unmarshal(英語)

Warning 警告
未使用の関数またはメソッド呼び出しの結果

呼び出し結果を処理しない特定の関数/メソッドへの呼び出しを報告します。

Warning 警告

制御フロー問題

インスペクション説明デフォルトの重大度
レシーバーへの代入

メソッドレシーバーへの割り当てを報告します。

メソッドレシーバーに値を割り当てる場合、その値はメソッド自体の外部には反映されません。

値は、同じメソッドからの後続の呼び出しに反映されます。

Weak Warning 弱い警告
遅延ループ

ループ内の defer ステートメントを報告します。

ループで defer を使用すると、リソースリークまたはステートメントの予測できない実行順序が発生する可能性があります。

Weak Warning 弱い警告
無限ループ

空の for ループを報告します。

このコードを実行すると、CPU使用率が最大になり、マシンがほとんど使用できなくなります。

Error エラー
最後に戻り値がない関数

関数の終了時に戻り値がないことを報告します。

Error エラー
到達不能コード

プログラムの残りの部分からコードへの制御フローパスが存在しないため、実行できないコードを報告します。

Warning 警告
条件の値として使用

値として使用される割り当てを報告します。

Error エラー

コード・スタイル問題

インスペクション説明デフォルトの重大度
先頭のスペースがないコメント

先頭にスペースがないコメントを報告します。

最初の単語はコメントとスペースで区切られているため、スペースが先行するコメントは読みやすくなります。

Weak Warning 弱い警告
間違った名前で始まるエクスポートされた要素のコメント

エクスポートされた要素の名前で始まらないコメントを報告します。

コードレビューコメント: コメント文(英語)を参照してください。

使用不可
大文字または句読記号で終わらないエラー文字列

エラー文字列形式の課題を報告します。

エラー文字列を大文字にしたり、句読点で終わらせないでください。

詳細はコードレビューコメント: エラー文字列(英語)を参照してください。

Weak Warning 弱い警告
コメントが必要なエクスポートされた要素

コメントなしで、エクスポートされた型、関数、メソッド、定数、変数を報告します。

コードレビューコメント: コメント文(英語)およびコードレビューコメント: Doc コメント(英語)を参照してください。

使用不可
自身の宣言が必要なエクスポートされた要素

エクスポートされたvarまたはconstを宣言のコンマ区切りリストで報告します。例:

package p const C1, C2 = 1, 2
コードを読みやすくするため、このような宣言には個別の仕様を用意することを検討してください。
package p const ( C1 = 1 C2 = 2 )

Weak Warning 弱い警告
パッケージ名で始まる名前

レポート名はパッケージ名で始まります。

詳細はコードレビューコメント: パッケージ名(英語)を参照してください。

Weak Warning 弱い警告
一般名を持つレシーバー

me , this , self のようなレシーバー名、またはこのタイプの他のレシーバー名とは異なるものを報告します。

詳細はコードレビューコメント: レシーバー名(英語)を参照してください。

Weak Warning 弱い警告
フィールド名のない構造体の初期化

フィールド名を指定せずに初期化された構造を報告します。

構造を初期化するときは、フィールドの順序またはフィールドの名前が変更された場合に正しく対処され続けるように、フィールドの名前を明示的に記述することをお勧めします。

Weak Warning 弱い警告
時間の単位固有のサフィックス

タイプ time.Duration の定数名と変数名のユニット固有のサフィックスを報告します。

Weak Warning 弱い警告
ソートされていないインポート

ソートされていないインポートを報告します。

Weak Warning 弱い警告
Snake_Case の使用

変数、定数、関数の命名に、キャメルケースではなくスネークケースの使用を報告します。

Effective Go: MixedCaps(英語)を参照してください。

Weak Warning 弱い警告

一般

インスペクション説明デフォルトの重大度
明示的な型のない割り当てnil

明示的なタイプなしの nil の割り当てを報告します。

タイプのない変数にnil 値を割り当てることはできません。

不適切なコードの例: incorrect := nil var incorrect = nil

正しいコードの例: incorrect := nil var correct *MyType = nil

Error エラー
バイナリ式のタイプチェック

バイナリ式と単項式の互換性のない型を報告します。

Error エラー
非推奨の要素

非推奨の要素の使用箇所を報告します。

Warning 警告
重複 case

ケースの重複がないかswitchステートメントをチェックします。

Error エラー
名前が重複しています

このブロックで再宣言されたレポート名。

Error エラー
「=」が必要ですが、「:=」を取得しました

varまたはconst宣言でのvar割り当てを報告します。

Error エラー
明示的な逆参照が必要です

二重ポインタ型の式に対するメソッド呼び出しとフィールドアクセスを報告します。

このような式には明示的な逆参照が必要です。たとえば、x.f()(*x).f() に置き換える必要があります。

Error エラー
Go 1.10の前の拡張メソッド式構文

Go 1.10以降で使用可能な拡張レシーバータイプ構文を使用したメソッド式を報告します。

1.10より前のGoバージョンでは、メソッド式のレシーバータイプはタイプ名またはタイプ名へのポインターに制限されています。

Go 1.10以降、レシーバーのタイプはどのタイプでもかまいません。

Error エラー
関数呼び出し

このインスペクションは、関数呼び出しをチェックします。

Error エラー
不可能な型の表明

不可能な型の表明を報告します。

Error エラー
無効な複合リテラル

タイプと値に互換性のない複合リテラルを報告します。

Error エラー
無効な式変換

無効な式変換を報告します。

互換性のない型または許容できない定数値の切り捨てが原因で、変換式が正しくない可能性があります。

Error エラー
無効なインデックスまたはスライス式

無効なインデックスおよびスライス式を報告します。

Error エラー
アドレス演算子の無効なオペランド

間違ったオペランドに適用された演算子に対処するレポート。

アドレス演算はアドレス指定可能なオペランドにのみ適用でき、ポインターの間接指定はポインター型のオペランドにのみ適用できます。

Go仕様: アドレス演算子(英語)を参照してください。

Error エラー
無効なパッケージのインポート

無効なインポートを報告します。

Error エラー
無効なレシーバータイプ

無効なレシーバータイプを報告します。

レシーバーのタイプは、T または *T (括弧を使用する可能性があります)の形式でなければなりません。ここで、T はタイプ名です。

T はポインター型またはインターフェース型であってはならず、メソッドと同じパッケージで宣言されている必要があります。

Error エラー
無効な再帰型

再帰的な型宣言を報告します。

Error エラー
ジャンプオーバー宣言

宣言を飛び越えるgotoステートメントを報告します。

例:

goto label var a int label:

Error エラー
タイプが一致しません: バイトと文字列

文字列インデックスと、バイトではなくシングルバイト文字列との比較を報告します。

Error エラー
複合リテラルの改行の前にコンマがありません

複合リテラルの改行の前にコンマがないことを報告します。

Error エラー
ディレクトリ宣言内の複数のパッケージ

単一のディレクトリ内の複数のパッケージを報告します。

Error エラー
非関数呼び出し

非関数呼び出しを報告します。

次に例を示します: f := 2 f() // error

Error エラー
冗長な括弧

式と型の冗長な括弧を報告します。

Weak Warning 弱い警告
自己インポート

自己インポートを報告します。

Error エラー
型の互換性チェック

互換性のないタイプを報告します。

Error エラー
値として使用されるアンダースコア

値として使用される下線を報告します。

Error エラー
予期しない「〜」

予期しないチルドを報告します。

Error エラー
エクスポートされた関数のエクスポートされていない戻り値の型

エクスポートされていない戻り値の型を持つエクスポートされた関数を報告します。

エクスポートされていないタイプは、go doc でドキュメントを表示するときに使用するのが難しい場合があります。

Warning 警告
不必要にエクスポートされた識別子

定義されているパッケージ以外のパッケージで使用されていないエクスポートされた識別子をレポートします。

使用不可
未解決の参照

未解決の参照を報告します。

Error エラー
テストでのcgoの使用はサポートされていません

テストファイルのcgoインポートを報告します。

テストファイルでは、C パッケージをインポートできません。

Error エラー
間違ったテスト宣言

無効なテスト関数の署名を報告します。

Error エラー

宣言の冗長性

インスペクション説明デフォルトの重大度
ブール条件

ブール式の冗長で疑わしい部分を報告します。

Warning 警告
空の宣言

空の宣言を報告します。

Warning 警告
リテラルで宣言された空のスライス

nilの代わりに空のリテラル初期化子を使用してスライス宣言を報告します。

空のスライスは、nilまたは空のスライスリテラルで表すことができます。メモリの割り当てにつながらないため、最初の方法が推奨されます。

コードレビューコメント: 空のスライスを宣言する(英語)を参照してください。

Weak Warning 弱い警告
範囲内の冗長な空の引数

冗長で削除可能な範囲句の式を報告します。

たとえば、次のforステートメントは簡略化できます。

for _ = range v for _, _ = range v for a, _ = range v
Warning 警告
冗長なコンマ

引数リストと複合リテラルの最後に冗長なコンマを報告します。

Weak Warning 弱い警告
冗長インポートエイリアス

レポートは、省略可能なエイリアスをインポートします。

Weak Warning 弱い警告
スライスの冗長な2番目のインデックス

スライスインスペクションの冗長な2番目のインデックスを報告します。

例: a[0:len(a)]

Warning 警告
冗長なセミコロン

冗長なセミコロンを報告します。

Weak Warning 弱い警告
冗長な型変換

省略可能な冗長な型変換を報告します。

例: var s = string("hello")

Weak Warning 弱い警告
複合リテラルの冗長型

複合リテラルの冗長型を報告します。

次に例を示します: [][]int{[]int{1}, []int{2}}

[][]int {{1}, {2}} に簡略化できます。

Warning 警告
自己割り当て

自己割り当てを報告します。

Weak Warning 弱い警告
タイプは省略できます

コンパイラによって推論できるため、省略可能な変数と定数の型を報告します。

Weak Warning 弱い警告
未使用の定数

未使用の定数を報告します。

Warning 警告
未使用のエクスポートされた関数

未使用のエクスポートされた関数を報告します。

Warning 警告
未使用のエクスポートタイプ

メインパッケージとテストで未使用のエクスポートタイプを報告します。

Warning 警告
未使用機能

未使用のエクスポートされていない関数を報告します。

Warning 警告
未使用のグローバル変数

未使用のグローバル変数のレポート。

Warning 警告
未使用の import

未使用のインポート文を報告します。

Error エラー
未使用ラベル

未使用のラベル定義を報告します。

Error エラー
未使用のパラメーター

未使用の関数パラメーターを報告します。

Warning 警告
未使用タイプ

未使用のタイプを報告します。

Warning 警告
未使用の変数

未使用の変数を報告します。

Error エラー
最終更新日: 2020年5月08日