私は最近、VB.NET プロジェクトの For Each ループで変数を誤って再利用したために発生したバグに遭遇しました。
Dim iterator As Integer = 0
For Each iterator In {1, 2, 3}
Next
Console.WriteLine(iterator)
このコードは '3' を出力します。For Each ループには別の変数名を使用する必要がありました。ループは、別の場所で他の目的に使用された変数を変更していました。
Option Infer をオフにすることで、この動作を防ぐことができます。ただし、これにより、私が取り組んでいる中程度のサイズのプロジェクトで多くの (3000 っぽい) エラーが発生します。
私が望むのは、型宣言なしで For Each を使用することを示すコード分析規則です。
Visual Studio 2017 で提供されているコード分析ルールをざっと見ましたが、ルールが表示されません。カスタム ルールを作成する必要があるのではないかと心配しています。
カスタムルールで手を汚す前に、ルールが存在しないことを明確にすることはできますか?