不要将文字作为本地化参数传递
Do not pass literals as localized parameters
我在对我的项目(Windows Phone 8.1 应用程序)进行代码分析时 运行 收到以下警告:
CA1303 Do not pass literals as localized parameters Method 'Common.TranslateError(String)' passes a literal string as parameter 'text' of a call to 'XDocument.Parse(String)'. Retrieve the following string(s) from a resource table instead.
这是我的方法:
Public Function TranslateError(ByVal exMessage As String) As XDocument
Return XDocument.Parse("<Response><Exception><Message><" & XmlConvert.EncodeName(exMessage) & "></Message></Exception></Response>")
End Function
代码有效,自从添加代码以来我就不必解决这个问题,但是这个警告让我相信我做的事情不太正确。
我对此进行了一些研究并找到了 MSDN acticle CA1303: Do not pass literals as localized parameters 但是我无法引用 ResourceManager
。如果我可以参考它,我仍然不明白为什么在将字符串传递给 XDocument.Parse
.
时会出现问题
我想处理警告而不是抑制它。有没有人知道我该如何解决这个问题或者为什么会出现这样的警告?
如果您想复制,您需要将规则集配置为使用 Microsoft All Rules:
然后 运行 分析 select ANALYZE 从 Visual Studio 菜单中选择 运行关于...的代码分析
根据@RyanRoos 的建议,这段代码解决了警告:
Public Function TranslateError(ByVal exMessage As String) As XDocument
Dim sb As New StringBuilder("<Response><Exception><Message><![CDATA[" & XmlConvert.EncodeName(exMessage) & "]]></Message></Exception></Response>")
Return XDocument.Parse(sb.ToString())
End Function
我在对我的项目(Windows Phone 8.1 应用程序)进行代码分析时 运行 收到以下警告:
CA1303 Do not pass literals as localized parameters Method 'Common.TranslateError(String)' passes a literal string as parameter 'text' of a call to 'XDocument.Parse(String)'. Retrieve the following string(s) from a resource table instead.
这是我的方法:
Public Function TranslateError(ByVal exMessage As String) As XDocument
Return XDocument.Parse("<Response><Exception><Message><" & XmlConvert.EncodeName(exMessage) & "></Message></Exception></Response>")
End Function
代码有效,自从添加代码以来我就不必解决这个问题,但是这个警告让我相信我做的事情不太正确。
我对此进行了一些研究并找到了 MSDN acticle CA1303: Do not pass literals as localized parameters 但是我无法引用 ResourceManager
。如果我可以参考它,我仍然不明白为什么在将字符串传递给 XDocument.Parse
.
我想处理警告而不是抑制它。有没有人知道我该如何解决这个问题或者为什么会出现这样的警告?
如果您想复制,您需要将规则集配置为使用 Microsoft All Rules:
然后 运行 分析 select ANALYZE 从 Visual Studio 菜单中选择 运行关于...的代码分析
根据@RyanRoos 的建议,这段代码解决了警告:
Public Function TranslateError(ByVal exMessage As String) As XDocument
Dim sb As New StringBuilder("<Response><Exception><Message><![CDATA[" & XmlConvert.EncodeName(exMessage) & "]]></Message></Exception></Response>")
Return XDocument.Parse(sb.ToString())
End Function