不要将文字作为本地化参数传递

时间:2016-11-10 11:49:05

标签: vb.net methods windows-phone-8.1 code-analysis

在我的项目(Windows Phone 8.1应用程序)上运行代码分析时出现以下警告:

  

CA1303不要将文字作为本地化参数传递方法' Common.TranslateError(String)'传递一个文字字符串作为参数' text'调用' XDocument.Parse(String)'。改为从资源表中检索以下字符串。

这是我的方法:

Public Function TranslateError(ByVal exMessage As String) As XDocument

    Return XDocument.Parse("<Response><Exception><Message><" & XmlConvert.EncodeName(exMessage) & "></Message></Exception></Response>")

End Function

代码有效,而且自添加代码以来我不得不解决这个问题但是这个警告让我相信我没有做正确的事情。

我已经对此进行了一些研究并找到了MSDN的主题CA1303: Do not pass literals as localized parameters但是我无法引用ResourceManager。如果我可以参考,我仍然无法理解为什么在将字符串传递给XDocument.Parse时这是一个问题。

我想解决警告而不是压制它。有没有人有任何想法我如何解决这个或为什么存在这样的警告?

如果要复制,则需要将规则集配置为使用 Microsoft所有规则

enter image description here

然后运行分析从Visual Studio菜单中选择 ANALYZE ,然后选择运行代码分析...

1 个答案:

答案 0 :(得分:0)

根据@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