V3162. Suspicious return of an always empty collection.
The analyzer has detected a 'return' statement that always returns an empty collection declared as a local variable. This typically happens when the programmer forgets to add elements to the collection.
Consider the following example:
List<string> CreateDataList()
{
List<string> list = new List<string>();
string data = DoSomething();
return list;
}
The programmer forgot to add the 'data' element to 'list', so the method will always return an empty collection. Here is the fixed version:
List<string> CreateDataList()
{
List<string> list = new List<string>();
string data = DoSomething();
list.Add(data);
return list;
}
Sometimes developers will write a method that does nothing more than simply create and return a collection, for example:
List<List<CustomClass>> CreateEmptyDataList()
{
var list = new List<List<CustomClass>>();
return list;
}
Another example:
List<List<CustomClass>> CreateEmptyDataList()
{
return new List<List<CustomClass>>();
}
This technique is used in certain programming patterns or when the type of the collection has a very long name. The analyzer can recognize such situations and ignore them.