Как в C# запретить игнорирование возвращаемого значения функции?
Подскажите, как настроить анализатор c#, чтобы он выдавал ошибку компиляции, если возвращаемое значение функции не передаётся переменой?
Т.е., если есть функция
string GetMessage()
{
return "Hello";
}
, то следующий вызов функции должен не компилироваться
// код
GetMessage();
// код
требуя, чтобы возвращаемое значение было передано в переменную
// код
var message = GetMessage();
// код
или было обозначено явно, что возвращаемое значение игнорируется
// код
_ = GetMessage();
// код
Ответы (1 шт):
Навешиваем на метод атрибут Pure
:
using System.Diagnostics.Contracts;
[Pure]
static string GetMessage()
{
return "Hello";
}
Будет выдаваться предупреждение (warning) CA1806: Do not ignore method results.
В файле проекта указываем, чтобы этот ворнинг трактовался как ошибка: WarningsAsErrors
<WarningsAsErrors>CA1806</WarningsAsErrors>
Теперь не получится игнорировать возвращаемое значение.
Вместо атрибута Pure
можно в файле .editorconfig указать проверку конкретного метода. Additional methods to enforce
dotnet_code_quality.CA1806.additional_use_results_methods = M:MyNamespace.MyType.GetMessage