SonarQube规则S4018需要通用方法来提供通用类型作为参数。
例如,这将是非法的,因为T没有作为方法参数传递:
public T DoStuff<T>(string json)
{
return someResult.ToObject<T>();
}
// call the method
var result = myClass.DoStuff<SomeObject>("some json");
这是违规文本:“重构此方法以使其参数与所有类型参数匹配”
有没有让我只是不知道的有效方法?这条规则是否有效?文档中的示例仅使用void类型的方法,而我想要一个通用的返回类型。
答案 0 :(得分:1)
对此系统一无所知,但似乎抱怨T没有出现在“参数”列表中。我不确定这是否是合理的警告。将T用作参数的唯一git pull
函数是加函数。将T仅用于返回类型-甚至根本不使用任何其他内容,一切都可以很好地工作。
如果由具有数十年经验的人编写的现有泛型类违反规则,则可能是愚蠢的规则。如果您确实需要遵循此规则,可以使用ref或out参数,而不是创建自己的实例并返回,