CA1055: URI return values should not be strings
|
TypeName |
UriReturnValuesShouldNotBeStrings |
|
CheckId |
CA1055 |
|
Category |
Microsoft.Design |
|
Breaking Change |
Breaking |
This rule splits the method name into tokens based on the Pascal casing convention and checks whether each token equals "uri", "Uri", "urn", "Urn", "url", or "Url". If there is a match, the rule assumes that the method returns a uniform resource identifier (URI). A string representation of a URI is prone to parsing and encoding errors, and can lead to security vulnerabilities. The System.Uri class provides these services in a safe and secure manner.
To fix a violation of this rule, change the return type to a Uri.
The following example shows a type, ErrorProne, that violates this rule, and a type, SaferWay, that satisfies the rule.
Imports System Namespace DesignLibrary Public Class ErrorProne Dim someUriValue As String ' Violates rule UriPropertiesShouldNotBeStrings. Property SomeUri As String Get Return someUriValue End Get Set someUriValue = Value End Set End Property ' Violates rule UriParametersShouldNotBeStrings. Sub AddToHistory(uriString As String) End Sub ' Violates rule UriReturnValuesShouldNotBeStrings. Function GetRefererUri(httpHeader As String) As String Return "http://www.adventure-works.com" End Function End Class Public Class SaferWay Dim someUriValue As Uri ' To retrieve a string, call SomeUri.ToString(). ' To set using a string, call SomeUri = New Uri(string). Property SomeUri As Uri Get Return someUriValue End Get Set someUriValue = Value End Set End Property Sub AddToHistory(uriString As String) ' Check for UriFormatException. AddToHistory(New Uri(uriString)) End Sub Sub AddToHistory(uriString As Uri) End Sub Function GetRefererUri(httpHeader As String) As Uri Return New Uri("http://www.adventure-works.com") End Function End Class End Namespace