2016-11-10 60 views
4

我跑我的項目代碼分析(這是一款Windows Phone 8.1的應用程序)時,以下警告:不通過文字本地化參數

CA1303不通過文字本地化參數法「常見.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

我想解決警告,而不是壓制它。有沒有人有任何想法我可以解決這個問題或爲什麼存在這樣的警告?

如果要複製您需要配置規則集使用微軟所有規則

enter image description here

然後運行分析選擇從Visual Studio菜單ANALYZE和選擇運行代碼分析...

+0

我看了一下它,複製一下你看到的並得到了相同的結果。在進行一些調整之後,似乎更多的問題是Parse函數的命名參數是「文本」,而不是您控制的任何內容。如果您不能使用ResourceManager加載字符串值以進行輸入,那麼使用StringBuilder組裝這些值並將其傳遞給解析函數是一個快速解決方法,解決了警告。 –

回答

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