Consider merging the types defined in 'ServiceStack.Data' with another namespace.
Consider merging the types defined in 'ServiceStack.Logging' with another namespace.
Consider merging the types defined in 'ServiceStack.Reflection' with another namespace.
Sign 'ServiceStack.Common.dll' with a strong name key.
Mark 'ServiceStack.Common.dll' with CLSCompliant(true) because it exposes externally visible types.
'DictionaryExtensions' should be declared inside a namespace.
Change 'List<T>' in 'DictionaryExtensions.ConvertAll<T, K, V>(IDictionary<K, V>, Func<K, V, T>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In member 'DictionaryExtensions.ConvertAll<T, K, V>(IDictionary<K, V>, Func<K, V, T>)', correct the casing of 'Fn' in parameter name 'createFn' by changing it to 'FN'.
In method 'DictionaryExtensions.ConvertAll<T, K, V>(IDictionary<K, V>, Func<K, V, T>)', correct the spelling of 'Fn' in parameter name 'createFn' or remove it entirely if it represents any sort of Hungarian notation.
On method 'DictionaryExtensions.ConvertAll<T, K, V>(IDictionary<K, V>, Func<K, V, T>)', consider providing a more meaningful name than generic type parameter name 'K'.
On method 'DictionaryExtensions.ConvertAll<T, K, V>(IDictionary<K, V>, Func<K, V, T>)', consider providing a more meaningful name than generic type parameter name 'V'.
On method 'DictionaryExtensions.ConvertAll<T, K, V>(IDictionary<K, V>, Func<K, V, T>)', prefix generic type parameter name 'K' with 'T'.
On method 'DictionaryExtensions.ConvertAll<T, K, V>(IDictionary<K, V>, Func<K, V, T>)', prefix generic type parameter name 'V' with 'T'.
In member 'DictionaryExtensions.ForEach<TKey, TValue>(this Dictionary<TKey, TValue>, Action<TKey, TValue>)', correct the casing of 'Fn' in parameter name 'onEachFn' by changing it to 'FN'.
In method 'DictionaryExtensions.ForEach<TKey, TValue>(this Dictionary<TKey, TValue>, Action<TKey, TValue>)', correct the spelling of 'Fn' in parameter name 'onEachFn' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'DictionaryExtensions.ForEach<TKey, TValue>(this Dictionary<TKey, TValue>, Action<TKey, TValue>)', validate parameter 'dictionary' before using it.
In externally visible method 'DictionaryExtensions.ForEach<TKey, TValue>(this Dictionary<TKey, TValue>, Action<TKey, TValue>)', validate parameter 'onEachFn' before using it.
In member 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', correct the casing of 'Fn' in parameter name 'createFn' by changing it to 'FN'.
In method 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', correct the spelling of 'Fn' in parameter name 'createFn' or remove it entirely if it represents any sort of Hungarian notation.
On method 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', consider providing a more meaningful name than generic type parameter name 'K'.
On method 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', consider providing a more meaningful name than generic type parameter name 'V'.
On method 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', prefix generic type parameter name 'K' with 'T'.
On method 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', prefix generic type parameter name 'V' with 'T'.
In externally visible method 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', validate parameter 'map' before using it.
In externally visible method 'DictionaryExtensions.GetOrAdd<K, V>(this Dictionary<K, V>, K, Func<K, V>)', validate parameter 'createFn' before using it.
In externally visible method 'DictionaryExtensions.GetValueOrDefault<TValue, TKey>(this Dictionary<TKey, TValue>, TKey)', validate parameter 'dictionary' before using it.
On method 'DictionaryExtensions.UnorderedEquivalentTo<K, V>(this IDictionary<K, V>, IDictionary<K, V>)', consider providing a more meaningful name than generic type parameter name 'K'.
On method 'DictionaryExtensions.UnorderedEquivalentTo<K, V>(this IDictionary<K, V>, IDictionary<K, V>)', consider providing a more meaningful name than generic type parameter name 'V'.
On method 'DictionaryExtensions.UnorderedEquivalentTo<K, V>(this IDictionary<K, V>, IDictionary<K, V>)', prefix generic type parameter name 'K' with 'T'.
On method 'DictionaryExtensions.UnorderedEquivalentTo<K, V>(this IDictionary<K, V>, IDictionary<K, V>)', prefix generic type parameter name 'V' with 'T'.
In externally visible method 'ActionExecExtensions.ExecAllAndWait(this ICollection<Action>, TimeSpan)', validate parameter 'actions' before using it.
Change 'List<WaitHandle>' in 'ActionExecExtensions.ExecAsync(this IEnumerable<Action>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In externally visible method 'ActionExecExtensions.ExecAsync(this IEnumerable<Action>)', validate parameter 'actions' before using it.
In member 'ActionExecExtensions.WaitAll(this ICollection<WaitHandle>, int)', correct the casing of 'Ms' in parameter name 'timeoutMs' by changing it to 'MS'.
In method 'ActionExecExtensions.WaitAll(this ICollection<WaitHandle>, int)', correct the spelling of 'Ms' in parameter name 'timeoutMs' or remove it entirely if it represents any sort of Hungarian notation.
Change 'List<IAsyncResult>' in 'ActionExecExtensions.WaitAll(this List<IAsyncResult>, TimeSpan)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In externally visible method 'ActionExecExtensions.WaitAll(this List<IAsyncResult>, TimeSpan)', validate parameter 'asyncResults' before using it.
Change 'List<WaitHandle>' in 'ActionExecExtensions.WaitAll(this List<WaitHandle>, int)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In member 'ActionExecExtensions.WaitAll(this List<WaitHandle>, int)', correct the casing of 'Ms' in parameter name 'timeoutMs' by changing it to 'MS'.
In method 'ActionExecExtensions.WaitAll(this List<WaitHandle>, int)', correct the spelling of 'Ms' in parameter name 'timeoutMs' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'ActionExecExtensions.WaitAll(this List<WaitHandle>, int)', validate parameter 'waitHandles' before using it.
In member 'ActionExecExtensions.WaitAll(WaitHandle[], int)', the compound word 'timeOut' in parameter name 'timeOutMs' exists as a discrete term. If your usage is intended to be single word, case it as 'timeout' or strip the first token entirely if it represents any sort of Hungarian notation.
In member 'ActionExecExtensions.WaitAll(WaitHandle[], int)', correct the casing of 'Ms' in parameter name 'timeOutMs' by changing it to 'MS'.
In method 'ActionExecExtensions.WaitAll(WaitHandle[], int)', correct the spelling of 'Ms' in parameter name 'timeOutMs' or remove it entirely if it represents any sort of Hungarian notation.
In member 'AssertExtensions.ThrowIfNull(this object)', consider replacing the data type identifier 'obj' in parameter name 'obj' with a more generic term, such as 'value'.
In member 'AssertExtensions.ThrowIfNull(this object, string)', consider replacing the data type identifier 'obj' in parameter name 'obj' with a more generic term, such as 'value'.
In method 'AssertExtensions.ThrowIfNullOrEmpty(this string)', correct the spelling of 'str' in parameter name 'strValue' or remove it entirely if it represents any sort of Hungarian notation.
In method 'AssertExtensions.ThrowIfNullOrEmpty(this string, string)', correct the spelling of 'str' in parameter name 'strValue' or remove it entirely if it represents any sort of Hungarian notation.
In method 'AssertExtensions.ThrowOnFirstNull(params object[])', correct the spelling of 'objs' in parameter name 'objs' or remove it entirely if it represents any sort of Hungarian notation.
In member 'AssertExtensions.ThrowOnFirstNull(params object[])', consider replacing the data type identifier 'objs' in parameter name 'objs' with a more generic term, such as 'value'.
In externally visible method 'AssertExtensions.ThrowOnFirstNull(params object[])', validate parameter 'objs' before using it.
Correct the spelling of 'Utils' in type name 'AssertUtils'.
In externally visible method 'AssertUtils.AreNotNull(IDictionary<string, object>)', validate parameter 'fieldMap' before using it.
In method 'ByteArrayExtensions.AreEqual(this byte[], byte[])', correct the spelling of 'b' in parameter name 'b1' or remove it entirely if it represents any sort of Hungarian notation.
In method 'ByteArrayExtensions.AreEqual(this byte[], byte[])', correct the spelling of 'b' in parameter name 'b2' or remove it entirely if it represents any sort of Hungarian notation.
Correct the spelling of 'Utils' in type name 'CommandsUtils'.
Because type 'CommandsUtils' contains only 'static' members, mark it as 'static' to prevent the compiler from adding a default public constructor.
Change 'List<WaitHandle>' in 'CommandsUtils.ExecuteAsyncCommandExec(IEnumerable<ICommandExec>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In externally visible method 'CommandsUtils.ExecuteAsyncCommandExec(IEnumerable<ICommandExec>)', validate parameter 'commands' before using it.
Parameter 'timeout' of 'CommandsUtils.ExecuteAsyncCommandExec(TimeSpan, IEnumerable<ICommandExec>)' is never used. Remove the parameter or use it in the method body.
In externally visible method 'CommandsUtils.ExecuteAsyncCommandExec(TimeSpan, IEnumerable<ICommandExec>)', validate parameter 'commands' before using it.
Change 'List<T>' in 'CommandsUtils.ExecuteAsyncCommandList<T>(TimeSpan, params ICommandList<T>[])' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'List<T>' in 'CommandsUtils.ExecuteAsyncCommandList<T>(TimeSpan, IEnumerable<ICommandList<T>>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Consider a design where 'CommandsUtils.ExecuteAsyncCommandList<T>(TimeSpan, IEnumerable<ICommandList<T>>)' doesn't nest generic type 'IEnumerable<ICommandList<T>>'.
In externally visible method 'CommandsUtils.ExecuteAsyncCommandList<T>(TimeSpan, IEnumerable<ICommandList<T>>)', validate parameter 'commands' before using it.
Correct the spelling of 'Utils' in type name 'CryptUtils'.
In method 'CryptUtils.CreatePublicAndPrivateKeyPair()', call System.IDisposable.Dispose on object 'rsaProvider' before all references to it are out of scope.
Replace method 'CryptUtils.CreatePublicAndPrivateKeyPair(RsaKeyLengths)' with an overload that supplies all default arguments.
In method 'CryptUtils.CreatePublicAndPrivateKeyPair(RsaKeyLengths)', call System.IDisposable.Dispose on object 'rsaProvider' before all references to it are out of scope.
Method 'CryptUtils.Decrypt(this string)' passes 'No KeyPair given for encryption in CryptUtils' as the 'paramName' argument to a 'ArgumentNullException' constructor. Replace this argument with one of the method's parameter names. Note that the provided parameter name should have the exact casing as declared on the method.
Replace method 'CryptUtils.Decrypt(string, string, RsaKeyLengths)' with an overload that supplies all default arguments.
In method 'CryptUtils.Decrypt(string, string, RsaKeyLengths)', call System.IDisposable.Dispose on object 'rsaCryptoServiceProvider' before all references to it are out of scope.
In externally visible method 'CryptUtils.Decrypt(string, string, RsaKeyLengths)', validate parameter 'data' before using it.
Method 'CryptUtils.Encrypt(this string)' passes 'No KeyPair given for encryption in CryptUtils' as the 'paramName' argument to a 'ArgumentNullException' constructor. Replace this argument with one of the method's parameter names. Note that the provided parameter name should have the exact casing as declared on the method.
Replace method 'CryptUtils.Encrypt(string, string, RsaKeyLengths)' with an overload that supplies all default arguments.
In method 'CryptUtils.Encrypt(string, string, RsaKeyLengths)', call System.IDisposable.Dispose on object 'SHA1.Create()' before all references to it are out of scope.
In method 'CryptUtils.Encrypt(string, string, RsaKeyLengths)', call System.IDisposable.Dispose on object 'rsaCryptoServiceProvider' before all references to it are out of scope.
Consider making 'CryptUtils.KeyPair' non-public or a constant.
Consider making 'CryptUtils.Length' non-public or a constant.
Consider changing the type of parameter 'rootDirPath' in 'DirectoryInfoExtensions.GetMatchingFiles(this DirectoryInfo, string)' from 'DirectoryInfo' to its base type 'FileSystemInfo'. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
In method 'DirectoryInfoExtensions.GetMatchingFiles(this DirectoryInfo, string)', correct the spelling of 'Dir' in parameter name 'rootDirPath' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'DirectoryInfoExtensions.GetMatchingFiles(this DirectoryInfo, string)', validate parameter 'rootDirPath' before using it.
In method 'DirectoryInfoExtensions.GetMatchingFiles(string, string)', correct the spelling of 'Dir' in parameter name 'rootDirPath' or remove it entirely if it represents any sort of Hungarian notation.
Modify 'DisposableExtensions.Dispose(this IEnumerable<IDisposable>, ILog)' to catch a more specific exception than 'Exception' or rethrow the exception.
Because the behavior of 'string.Format(string, object)' could vary based on the current user's locale settings, replace this call in 'DisposableExtensions.Dispose(this IEnumerable<IDisposable>, ILog)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'DisposableExtensions.Dispose(this IEnumerable<IDisposable>, ILog)', validate parameter 'resources' before using it.
In externally visible method 'DisposableExtensions.Run<T>(this T, Action<T>)', validate parameter 'runActionThenDispose' before using it.
In externally visible method 'EnumerableExtensions.Each<T>(this IEnumerable<T>, Action<T>)', validate parameter 'action' before using it.
In externally visible method 'EnumerableExtensions.Each<T>(this IEnumerable<T>, Action<int, T>)', validate parameter 'action' before using it.
In externally visible method 'EnumerableExtensions.FirstNonDefault<T>(this IEnumerable<T>)', validate parameter 'values' before using it.
In externally visible method 'EnumerableExtensions.FirstNonDefaultOrEmpty(this IEnumerable<string>)', validate parameter 'values' before using it.
Change 'List<To>' in 'EnumerableExtensions.Map<To>(this IEnumerable, Func<object, To>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
On method 'EnumerableExtensions.Map<To>(this IEnumerable, Func<object, To>)', prefix generic type parameter name 'To' with 'T'.
In externally visible method 'EnumerableExtensions.Map<To>(this IEnumerable, Func<object, To>)', validate parameter 'converter' before using it.
Change 'List<To>' in 'EnumerableExtensions.Map<To, From>(this IEnumerable<From>, Func<From, To>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
On method 'EnumerableExtensions.Map<To, From>(this IEnumerable<From>, Func<From, To>)', prefix generic type parameter name 'From' with 'T'.
On method 'EnumerableExtensions.Map<To, From>(this IEnumerable<From>, Func<From, To>)', prefix generic type parameter name 'To' with 'T'.
In externally visible method 'EnumerableExtensions.Map<To, From>(this IEnumerable<From>, Func<From, To>)', validate parameter 'converter' before using it.
Consider a design where 'EnumerableExtensions.ToDictionary<T, TKey, TValue>(this IEnumerable<T>, Func<T, KeyValuePair<TKey, TValue>>)' doesn't nest generic type 'Func<T, KeyValuePair<TKey, TValue>>'.
In externally visible method 'EnumerableExtensions.ToDictionary<T, TKey, TValue>(this IEnumerable<T>, Func<T, KeyValuePair<TKey, TValue>>)', validate parameter 'list' before using it.
In externally visible method 'EnumerableExtensions.ToDictionary<T, TKey, TValue>(this IEnumerable<T>, Func<T, KeyValuePair<TKey, TValue>>)', validate parameter 'map' before using it.
Change 'List<object>' in 'EnumerableExtensions.ToObjects<T>(this IEnumerable<T>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In externally visible method 'EnumerableExtensions.ToObjects<T>(this IEnumerable<T>)', validate parameter 'items' before using it.
In method 'EnumerableExtensions.ToSafeDictionary<T, TKey>(this IEnumerable<T>, Func<T, TKey>)', correct the spelling of 'expr' in parameter name 'expr' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'EnumerableExtensions.ToSafeDictionary<T, TKey>(this IEnumerable<T>, Func<T, TKey>)', validate parameter 'expr' before using it.
Method 'EnumExtensions.Add<T>(this Enum, T)' passes a literal string as parameter 'text' of a call to 'StringExtensions.Fmt(this string, params object[])'. Retrieve the following string(s) from a resource table instead: "Enums of type {0}".
In externally visible method 'EnumExtensions.Add<T>(this Enum, T)', validate parameter 'enum' before using it.
In externally visible method 'EnumExtensions.GetTypeCode(this Enum)', validate parameter 'enum' before using it.
Method 'EnumExtensions.Has<T>(this Enum, T)' passes a literal string as parameter 'text' of a call to 'StringExtensions.Fmt(this string, params object[])'. Retrieve the following string(s) from a resource table instead: "Enums of type {0}".
In externally visible method 'EnumExtensions.Has<T>(this Enum, T)', validate parameter 'enum' before using it.
Method 'EnumExtensions.Is<T>(this Enum, T)' passes a literal string as parameter 'text' of a call to 'StringExtensions.Fmt(this string, params object[])'. Retrieve the following string(s) from a resource table instead: "Enums of type {0}".
In externally visible method 'EnumExtensions.Is<T>(this Enum, T)', validate parameter 'enum' before using it.
Method 'EnumExtensions.Remove<T>(this Enum, T)' passes a literal string as parameter 'text' of a call to 'StringExtensions.Fmt(this string, params object[])'. Retrieve the following string(s) from a resource table instead: "Enums of type {0}".
In externally visible method 'EnumExtensions.Remove<T>(this Enum, T)', validate parameter 'enum' before using it.
In externally visible method 'EnumExtensions.ToDescription(this Enum)', validate parameter 'enum' before using it.
Change 'List<string>' in 'EnumExtensions.ToList(this Enum)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In externally visible method 'EnumExtensions.ToList(this Enum)', validate parameter 'enum' before using it.
Modify 'ExecExtensions.ExecAll<T>(this IEnumerable<T>, Action<T>)' to catch a more specific exception than 'Exception' or rethrow the exception.
In externally visible method 'ExecExtensions.ExecAll<T>(this IEnumerable<T>, Action<T>)', validate parameter 'instances' before using it.
In externally visible method 'ExecExtensions.ExecAll<T>(this IEnumerable<T>, Action<T>)', validate parameter 'action' before using it.
Modify 'ExecExtensions.ExecAllWithFirstOut<T, TReturn>(this IEnumerable<T>, Func<T, TReturn>, ref TReturn)' to catch a more specific exception than 'Exception' or rethrow the exception.
Consider a design that does not require that 'firstResult' be a reference parameter.
In externally visible method 'ExecExtensions.ExecAllWithFirstOut<T, TReturn>(this IEnumerable<T>, Func<T, TReturn>, ref TReturn)', validate parameter 'instances' before using it.
In externally visible method 'ExecExtensions.ExecAllWithFirstOut<T, TReturn>(this IEnumerable<T>, Func<T, TReturn>, ref TReturn)', validate parameter 'action' before using it.
Modify 'ExecExtensions.ExecReturnFirstWithResult<T, TReturn>(this IEnumerable<T>, Func<T, TReturn>)' to catch a more specific exception than 'Exception' or rethrow the exception.
In externally visible method 'ExecExtensions.ExecReturnFirstWithResult<T, TReturn>(this IEnumerable<T>, Func<T, TReturn>)', validate parameter 'instances' before using it.
In externally visible method 'ExecExtensions.ExecReturnFirstWithResult<T, TReturn>(this IEnumerable<T>, Func<T, TReturn>)', validate parameter 'action' before using it.
Because the behavior of 'string.Format(string, object, object, object)' could vary based on the current user's locale settings, replace this call in 'ExecExtensions.LogError(Type, string, Exception)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'ExecExtensions.LogError(Type, string, Exception)', validate parameter 'declaringType' before using it.
In externally visible method 'ExecExtensions.LogError(Type, string, Exception)', validate parameter 'ex' before using it.
In externally visible method 'ExecExtensions.RetryOnException(Action, int)', validate parameter 'action' before using it.
In member 'ExecExtensions.RetryOnException(Action, TimeSpan?)', the compound word 'timeOut' in parameter name 'timeOut' exists as a discrete term. If your usage is intended to be single word, case it as 'timeout' or strip the first token entirely if it represents any sort of Hungarian notation.
Modify 'ExecExtensions.RetryOnException(Action, TimeSpan?)' to catch a more specific exception than 'Exception' or rethrow the exception.
Because the behavior of 'string.Format(string, object)' could vary based on the current user's locale settings, replace this call in 'ExecExtensions.RetryOnException(Action, TimeSpan?)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'ExecExtensions.RetryOnException(Action, TimeSpan?)', validate parameter 'action' before using it.
In member 'ExecExtensions.RetryUntilTrue(Func<bool>, TimeSpan?)', the compound word 'timeOut' in parameter name 'timeOut' exists as a discrete term. If your usage is intended to be single word, case it as 'timeout' or strip the first token entirely if it represents any sort of Hungarian notation.
Because the behavior of 'string.Format(string, object)' could vary based on the current user's locale settings, replace this call in 'ExecExtensions.RetryUntilTrue(Func<bool>, TimeSpan?)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'ExecExtensions.RetryUntilTrue(Func<bool>, TimeSpan?)', validate parameter 'action' before using it.
Correct the spelling of 'Utils' in type name 'FuncUtils'.
Modify 'FuncUtils.TryExec(Action)' to catch a more specific exception than 'Exception' or rethrow the exception.
In externally visible method 'FuncUtils.TryExec(Action)', validate parameter 'action' before using it.
Modify 'FuncUtils.TryExec<T>(Func<T>, T)' to catch a more specific exception than 'Exception' or rethrow the exception.
Parameter 'defaultValue' of 'FuncUtils.TryExec<T>(Func<T>, T)' is never used. Remove the parameter or use it in the method body.
In externally visible method 'FuncUtils.TryExec<T>(Func<T>, T)', validate parameter 'func' before using it.
Replace method 'FuncUtils.WaitWhile(Func<bool>, int, int)' with an overload that supplies all default arguments.
In method 'FuncUtils.WaitWhile(Func<bool>, int, int)', correct the spelling of 'millsecond' in parameter name 'millsecondPollPeriod' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'FuncUtils.WaitWhile(Func<bool>, int, int)', validate parameter 'condition' before using it.
Initialize all static fields in 'HasId<TEntity>' when those fields are declared and remove the explicit static constructor.
Initialize all static fields in 'HasPropertyId<TEntity>' when those fields are declared and remove the explicit static constructor.
Correct the spelling of 'Utils' in type name 'IdUtils'.
Consider a design where 'IdUtils.CreateCacheKeyPath<T>(string)' doesn't require explicit type parameter 'T' in any call to it.
Because the behavior of 'string.Format(string, params object[])' could vary based on the current user's locale settings, replace this call in 'IdUtils.CreateCacheKeyPath<T>(string)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'IdUtils.CreateCacheKeyPath<T>(string)', validate parameter 'idValue' before using it.
Consider changing the type of parameter 'type' in 'IdUtils.CreateUrn(Type, object)' from 'Type' to its base type 'MemberInfo'. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
In method 'IdUtils.CreateUrn(Type, object)', replace the call to 'string.ToLowerInvariant()' with String.ToUpperInvariant().
Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'IdUtils.CreateUrn(Type, object)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
Change the return type of 'IdUtils.CreateUrn(Type, object)' from string to System.Uri.
In externally visible method 'IdUtils.CreateUrn(Type, object)', validate parameter 'type' before using it.
In method 'IdUtils.CreateUrn<T>(this T)', replace the call to 'string.ToLowerInvariant()' with String.ToUpperInvariant().
Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'IdUtils.CreateUrn<T>(this T)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
Change the return type of 'IdUtils.CreateUrn<T>(this T)' from string to System.Uri.
Consider a design where 'IdUtils.CreateUrn<T>(object)' doesn't require explicit type parameter 'T' in any call to it.
In method 'IdUtils.CreateUrn<T>(object)', replace the call to 'string.ToLowerInvariant()' with String.ToUpperInvariant().
Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'IdUtils.CreateUrn<T>(object)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
Change the return type of 'IdUtils.CreateUrn<T>(object)' from string to System.Uri.
In externally visible method 'IdUtils.GetObjectId(this object)', validate parameter 'entity' before using it.
Consider a design where 'IdUtils.ToSafePathCacheKey<T>(this string)' doesn't require explicit type parameter 'T' in any call to it.
Change the return type of 'IdUtils.ToUrn<T>(this T)' from string to System.Uri.
Consider a design where 'IdUtils.ToUrn<T>(this object)' doesn't require explicit type parameter 'T' in any call to it.
Change the return type of 'IdUtils.ToUrn<T>(this object)' from string to System.Uri.
Correct the spelling of 'Utils' in type name 'IdUtils<T>'.
Initialize all static fields in 'IdUtils<T>' when those fields are declared and remove the explicit static constructor.
Remove 'IdUtils<T>.GetId(T)' from 'IdUtils<T>' or make it an instance member.
Change either member or parameter name 'times' so that one differs from the other.
In member 'IntExtensions.Times(this int, Action)', correct the casing of 'Fn' in parameter name 'actionFn' by changing it to 'FN'.
In method 'IntExtensions.Times(this int, Action)', correct the spelling of 'Fn' in parameter name 'actionFn' or remove it entirely if it represents any sort of Hungarian notation.
Change either member or parameter name 'times' so that one differs from the other.
In externally visible method 'IntExtensions.Times(this int, Action)', validate parameter 'actionFn' before using it.
In member 'IntExtensions.Times(this int, Action<int>)', correct the casing of 'Fn' in parameter name 'actionFn' by changing it to 'FN'.
In method 'IntExtensions.Times(this int, Action<int>)', correct the spelling of 'Fn' in parameter name 'actionFn' or remove it entirely if it represents any sort of Hungarian notation.
Change either member or parameter name 'times' so that one differs from the other.
In externally visible method 'IntExtensions.Times(this int, Action<int>)', validate parameter 'actionFn' before using it.
Change 'List<T>' in 'IntExtensions.Times<T>(this int, Func<T>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In member 'IntExtensions.Times<T>(this int, Func<T>)', correct the casing of 'Fn' in parameter name 'actionFn' by changing it to 'FN'.
In method 'IntExtensions.Times<T>(this int, Func<T>)', correct the spelling of 'Fn' in parameter name 'actionFn' or remove it entirely if it represents any sort of Hungarian notation.
Change either member or parameter name 'times' so that one differs from the other.
In externally visible method 'IntExtensions.Times<T>(this int, Func<T>)', validate parameter 'actionFn' before using it.
Change 'List<T>' in 'IntExtensions.Times<T>(this int, Func<int, T>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In member 'IntExtensions.Times<T>(this int, Func<int, T>)', correct the casing of 'Fn' in parameter name 'actionFn' by changing it to 'FN'.
In method 'IntExtensions.Times<T>(this int, Func<int, T>)', correct the spelling of 'Fn' in parameter name 'actionFn' or remove it entirely if it represents any sort of Hungarian notation.
Change either member or parameter name 'times' so that one differs from the other.
In externally visible method 'IntExtensions.Times<T>(this int, Func<int, T>)', validate parameter 'actionFn' before using it.
Change 'List<IAsyncResult>' in 'IntExtensions.TimesAsync(this int, Action)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In member 'IntExtensions.TimesAsync(this int, Action)', correct the casing of 'Fn' in parameter name 'actionFn' by changing it to 'FN'.
In method 'IntExtensions.TimesAsync(this int, Action)', correct the spelling of 'Fn' in parameter name 'actionFn' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'IntExtensions.TimesAsync(this int, Action)', validate parameter 'actionFn' before using it.
Change 'List<IAsyncResult>' in 'IntExtensions.TimesAsync(this int, Action<int>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In member 'IntExtensions.TimesAsync(this int, Action<int>)', correct the casing of 'Fn' in parameter name 'actionFn' by changing it to 'FN'.
In method 'IntExtensions.TimesAsync(this int, Action<int>)', correct the spelling of 'Fn' in parameter name 'actionFn' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'IntExtensions.TimesAsync(this int, Action<int>)', validate parameter 'actionFn' before using it.
Modify 'IPAddressExtensions.GetAllNetworkInterfaceIpv4Addresses()' to catch a more specific exception than 'object' or rethrow the exception.
Change 'IPAddressExtensions.GetAllNetworkInterfaceIpv4Addresses()' to a property if appropriate.
Modify 'IPAddressExtensions.GetAllNetworkInterfaceIpv6Addresses()' to catch a more specific exception than 'object' or rethrow the exception.
Change 'List<IPAddress>' in 'IPAddressExtensions.GetAllNetworkInterfaceIpv6Addresses()' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'IPAddressExtensions.GetAllNetworkInterfaceIpv6Addresses()' to a property if appropriate.
In externally visible method 'IPAddressExtensions.GetBroadcastAddress(this IPAddress, IPAddress)', validate parameter 'address' before using it.
In externally visible method 'IPAddressExtensions.GetBroadcastAddress(this IPAddress, IPAddress)', validate parameter 'subnetMask' before using it.
In externally visible method 'IPAddressExtensions.GetNetworkAddress(this IPAddress, IPAddress)', validate parameter 'address' before using it.
In externally visible method 'IPAddressExtensions.GetNetworkAddress(this IPAddress, IPAddress)', validate parameter 'subnetMask' before using it.
In method 'IPAddressExtensions.GetNetworkAddressBytes(byte[], byte[])', correct the spelling of 'Adress' in parameter name 'ipAdressBytes' or remove it entirely if it represents any sort of Hungarian notation.
In method 'IPAddressExtensions.GetNetworkAddressBytes(byte[], byte[])', correct the spelling of 'ip' in parameter name 'ipAdressBytes' or remove it entirely if it represents any sort of Hungarian notation.
In member 'IPAddressExtensions.GetNetworkAddressBytes(byte[], byte[])', consider replacing the data type identifier 'Bytes' in parameter name 'ipAdressBytes' with a more generic term, such as 'value'.
In member 'IPAddressExtensions.GetNetworkAddressBytes(byte[], byte[])', consider replacing the data type identifier 'Bytes' in parameter name 'subnetMaskBytes' with a more generic term, such as 'value'.
In externally visible method 'IPAddressExtensions.GetNetworkAddressBytes(byte[], byte[])', validate parameter 'ipAdressBytes' before using it.
In externally visible method 'IPAddressExtensions.GetNetworkAddressBytes(byte[], byte[])', validate parameter 'subnetMaskBytes' before using it.
In member 'IPAddressExtensions.IsInSameIpv4Subnet(this byte[], byte[], byte[])', consider replacing the data type identifier 'Bytes' in parameter name 'address1Bytes' with a more generic term, such as 'value'.
In member 'IPAddressExtensions.IsInSameIpv4Subnet(this byte[], byte[], byte[])', consider replacing the data type identifier 'Bytes' in parameter name 'address2Bytes' with a more generic term, such as 'value'.
In member 'IPAddressExtensions.IsInSameIpv4Subnet(this byte[], byte[], byte[])', consider replacing the data type identifier 'Bytes' in parameter name 'subnetMaskBytes' with a more generic term, such as 'value'.
In externally visible method 'IPAddressExtensions.IsInSameIpv4Subnet(this byte[], byte[], byte[])', validate parameter 'address1Bytes' before using it.
In externally visible method 'IPAddressExtensions.IsInSameIpv4Subnet(this byte[], byte[], byte[])', validate parameter 'address2Bytes' before using it.
In externally visible method 'IPAddressExtensions.IsInSameIpv4Subnet(this IPAddress, IPAddress, IPAddress)', validate parameter 'address2' before using it.
In externally visible method 'IPAddressExtensions.IsInSameIpv4Subnet(this IPAddress, IPAddress, IPAddress)', validate parameter 'address' before using it.
In member 'IPAddressExtensions.IsInSameIpv6Subnet(this byte[], byte[])', consider replacing the data type identifier 'Bytes' in parameter name 'address1Bytes' with a more generic term, such as 'value'.
In member 'IPAddressExtensions.IsInSameIpv6Subnet(this byte[], byte[])', consider replacing the data type identifier 'Bytes' in parameter name 'address2Bytes' with a more generic term, such as 'value'.
In externally visible method 'IPAddressExtensions.IsInSameIpv6Subnet(this byte[], byte[])', validate parameter 'address1Bytes' before using it.
In externally visible method 'IPAddressExtensions.IsInSameIpv6Subnet(this byte[], byte[])', validate parameter 'address2Bytes' before using it.
In externally visible method 'IPAddressExtensions.IsInSameIpv6Subnet(this IPAddress, IPAddress)', validate parameter 'address2' before using it.
In externally visible method 'IPAddressExtensions.IsInSameIpv6Subnet(this IPAddress, IPAddress)', validate parameter 'address' before using it.
Rename type name 'MetadataAttribute' so that it does not end in 'Attribute'.
Change 'MetadataAttribute.Args' to be read-only by removing the property setter.
Change 'List<MetadataPropertyType>' in 'MetadataAttribute.Args' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataAttribute.ConstructorArgs' to be read-only by removing the property setter.
Change 'List<MetadataPropertyType>' in 'MetadataAttribute.ConstructorArgs' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataOperationType.Actions' to be read-only by removing the property setter.
Change 'List<string>' in 'MetadataOperationType.Actions' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataPropertyType.AllowableValues' to return a collection or make it a method.
Change 'MetadataPropertyType.Attributes' to be read-only by removing the property setter.
Change 'List<MetadataAttribute>' in 'MetadataPropertyType.Attributes' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataPropertyType.GenericArgs' to return a collection or make it a method.
Correct the spelling of 'Param' in member name 'MetadataPropertyType.ParamType' or remove it entirely if it represents any sort of Hungarian notation.
The property name 'MetadataPropertyType.Type' is confusing given the existence of inherited method 'object.GetType()'. Rename or remove this property.
Change 'MetadataType.Attributes' to be read-only by removing the property setter.
Change 'List<MetadataAttribute>' in 'MetadataType.Attributes' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataType.EnumNames' to be read-only by removing the property setter.
Change 'List<string>' in 'MetadataType.EnumNames' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataType.EnumValues' to be read-only by removing the property setter.
Change 'List<string>' in 'MetadataType.EnumValues' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataType.GenericArgs' to return a collection or make it a method.
Change 'MetadataType.GetFullName()' to a property if appropriate.
Change 'MetadataType.InnerTypes' to be read-only by removing the property setter.
Change 'List<MetadataTypeName>' in 'MetadataType.InnerTypes' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataType.Properties' to be read-only by removing the property setter.
Change 'List<MetadataPropertyType>' in 'MetadataType.Properties' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataType.Routes' to be read-only by removing the property setter.
Change 'List<MetadataRoute>' in 'MetadataType.Routes' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataTypeName.GenericArgs' to return a collection or make it a method.
Change 'MetadataTypes.Operations' to be read-only by removing the property setter.
Change 'List<MetadataOperationType>' in 'MetadataTypes.Operations' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataTypes.Types' to be read-only by removing the property setter.
Change 'List<MetadataType>' in 'MetadataTypes.Types' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Replace method 'MetadataTypesConfig.MetadataTypesConfig(string, bool, bool, bool, bool, bool, bool, string, bool, bool, bool, int?)' with an overload that supplies all default arguments.
Change the type of parameter 'baseUrl' of method 'MetadataTypesConfig.MetadataTypesConfig(string, bool, bool, bool, bool, bool, bool, string, bool, bool, bool, int?)' from string to System.Uri, or provide an overload of 'MetadataTypesConfig.MetadataTypesConfig(string, bool, bool, bool, bool, bool, bool, string, bool, bool, bool, int?)', that allows 'baseUrl' to be passed as a System.Uri object.
Change the type of property 'MetadataTypesConfig.BaseUrl' from string to System.Uri.
Change 'MetadataTypesConfig.CSharpTypeAlias' to be read-only by removing the property setter.
Change 'MetadataTypesConfig.DefaultNamespaces' to be read-only by removing the property setter.
Change 'List<string>' in 'MetadataTypesConfig.DefaultNamespaces' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataTypesConfig.ExportAttributes' to be read-only by removing the property setter.
Change 'MetadataTypesConfig.FSharpTypeAlias' to be read-only by removing the property setter.
Change 'MetadataTypesConfig.IgnoreTypes' to be read-only by removing the property setter.
Change 'MetadataTypesConfig.IgnoreTypesInNamespaces' to be read-only by removing the property setter.
Change 'List<string>' in 'MetadataTypesConfig.IgnoreTypesInNamespaces' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'MetadataTypesConfig.VbNetKeyWords' to be read-only by removing the property setter.
The compound word 'KeyWords' in member name 'MetadataTypesConfig.VbNetKeyWords' exists as a discrete term. If your usage is intended to be single word, case it as 'Keywords' or strip the first token entirely if it represents any sort of Hungarian notation.
Correct the casing of 'Vb' in member name 'MetadataTypesConfig.VbNetKeyWords' by changing it to 'VB'.
Correct the spelling of 'Vb' in member name 'MetadataTypesConfig.VbNetKeyWords' or remove it entirely if it represents any sort of Hungarian notation.
Change 'MetadataTypesConfig.VbNetTypeAlias' to be read-only by removing the property setter.
Correct the casing of 'Vb' in member name 'MetadataTypesConfig.VbNetTypeAlias' by changing it to 'VB'.
Correct the spelling of 'Vb' in member name 'MetadataTypesConfig.VbNetTypeAlias' or remove it entirely if it represents any sort of Hungarian notation.
Because type 'ModelConfig<T>' contains only 'static' members, mark it as 'static' to prevent the compiler from adding a default public constructor.
Remove 'ModelConfig<T>.Id(Func<T, object>)' from 'ModelConfig<T>' or make it an instance member.
In member 'ModelConfig<T>.Id(Func<T, object>)', correct the casing of 'Fn' in parameter name 'getIdFn' by changing it to 'FN'.
In method 'ModelConfig<T>.Id(Func<T, object>)', correct the spelling of 'Fn' in parameter name 'getIdFn' or remove it entirely if it represents any sort of Hungarian notation.
Correct the spelling of 'Perf' in type name 'PerfUtils'.
Correct the spelling of 'Utils' in type name 'PerfUtils'.
Remove the call to GC.Collect from 'PerfUtils.Measure(Action, int, int, Action, Action, Action)'. It is usually unnecessary to force garbage collection, and doing so can severely degrade performance.
In member 'PerfUtils.Measure(Action, int, int, Action, Action, Action)', the compound word 'ForMs' in parameter name 'runForMs' exists as a discrete term. If your usage is intended to be single word, case it as 'Forms' or strip the first token entirely if it represents any sort of Hungarian notation.
Replace method 'PerfUtils.Measure(Action, int, int, Action, Action, Action)' with an overload that supplies all default arguments.
In member 'PerfUtils.Measure(Action, int, int, Action, Action, Action)', correct the casing of 'Ms' in parameter name 'runForMs' by changing it to 'MS'.
In method 'PerfUtils.Measure(Action, int, int, Action, Action, Action)', correct the spelling of 'Ms' in parameter name 'runForMs' or remove it entirely if it represents any sort of Hungarian notation.
In method 'PerfUtils.Measure(Action, int, int, Action, Action, Action)', correct the spelling of 'fn' in parameter name 'fn' or remove it entirely if it represents any sort of Hungarian notation.
In method 'PerfUtils.Measure(Action, int, int, Action, Action, Action)', correct the spelling of 'warmup' in parameter name 'warmup' or remove it entirely if it represents any sort of Hungarian notation.
In member 'PerfUtils.MeasureFor(Action, int)', the compound word 'ForMs' in parameter name 'runForMs' exists as a discrete term. If your usage is intended to be single word, case it as 'Forms' or strip the first token entirely if it represents any sort of Hungarian notation.
In member 'PerfUtils.MeasureFor(Action, int)', correct the casing of 'Ms' in parameter name 'runForMs' by changing it to 'MS'.
In method 'PerfUtils.MeasureFor(Action, int)', correct the spelling of 'Ms' in parameter name 'runForMs' or remove it entirely if it represents any sort of Hungarian notation.
In method 'PerfUtils.MeasureFor(Action, int)', correct the spelling of 'fn' in parameter name 'fn' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'PerfUtils.MeasureFor(Action, int)', validate parameter 'fn' before using it.
Add a member to 'RsaKeyLengths' that has a value of zero with a suggested name of 'None'.
The constituent members of 'RsaKeyLengths' appear to represent flags that can be combined rather than discrete values. If this is correct, mark the enumeration with FlagsAttribute.
If the name 'RsaKeyLengths' is plural, change it to its singular form.
Correct the spelling of 'Utils' in type name 'StringUtils'.
Remove the read-only designation from 'StringUtils.HtmlCharacterCodes' or change the field to one that is an immutable reference type. If the reference type 'IDictionary<string, string>' is, in fact, immutable, exclude this message.
Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'UrnId.Create(string, string)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'UrnId.Create(string, string)', validate parameter 'objectTypeName' before using it.
In externally visible method 'UrnId.Create(string, string)', validate parameter 'idFieldValue' before using it.
Consider changing the type of parameter 'objectType' in 'UrnId.Create(Type, string)' from 'Type' to its base type 'MemberInfo'. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'UrnId.Create(Type, string)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'UrnId.Create(Type, string)', validate parameter 'objectType' before using it.
In externally visible method 'UrnId.Create(Type, string)', validate parameter 'idFieldValue' before using it.
Consider changing the type of parameter 'objectType' in 'UrnId.Create(Type, string, string)' from 'Type' to its base type 'MemberInfo'. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
Because the behavior of 'string.Format(string, object, object, object)' could vary based on the current user's locale settings, replace this call in 'UrnId.Create(Type, string, string)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'UrnId.Create(Type, string, string)', validate parameter 'objectType' before using it.
In externally visible method 'UrnId.Create(Type, string, string)', validate parameter 'idFieldName' before using it.
In externally visible method 'UrnId.Create(Type, string, string)', validate parameter 'idFieldValue' before using it.
Consider a design where 'UrnId.Create<T>(object)' doesn't require explicit type parameter 'T' in any call to it.
In externally visible method 'UrnId.Create<T>(object)', validate parameter 'idFieldValue' before using it.
Consider a design where 'UrnId.Create<T>(string)' doesn't require explicit type parameter 'T' in any call to it.
Consider a design where 'UrnId.Create<T>(string, string)' doesn't require explicit type parameter 'T' in any call to it.
Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'UrnId.CreateWithParts(string, params string[])' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
In externally visible method 'UrnId.CreateWithParts(string, params string[])', validate parameter 'objectTypeName' before using it.
In externally visible method 'UrnId.CreateWithParts(string, params string[])', validate parameter 'keyParts' before using it.
Consider a design where 'UrnId.CreateWithParts<T>(params string[])' doesn't require explicit type parameter 'T' in any call to it.
Change the type of parameter 'urn' of method 'UrnId.GetGuidId(string)' from string to System.Uri, or provide an overload of 'UrnId.GetGuidId(string)', that allows 'urn' to be passed as a System.Uri object.
Consider replacing the language-specific data type identifier 'Long' in member name 'UrnId.GetLongId(string)' with either a language-independent equivalent or a more generic term, such as 'value'.
Because the behavior of 'long.Parse(string)' could vary based on the current user's locale settings, replace this call in 'UrnId.GetLongId(string)' with a call to 'long.Parse(string, IFormatProvider)'. If the result of 'long.Parse(string, IFormatProvider)' will be based on input from the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will based on input stored and accessed by software, such as when it is loaded from disk or from a database, specify 'CultureInfo.InvariantCulture'.
Change the type of parameter 'urn' of method 'UrnId.GetLongId(string)' from string to System.Uri, or provide an overload of 'UrnId.GetLongId(string)', that allows 'urn' to be passed as a System.Uri object.
Change the type of parameter 'urn' of method 'UrnId.GetStringId(string)' from string to System.Uri, or provide an overload of 'UrnId.GetStringId(string)', that allows 'urn' to be passed as a System.Uri object.
Change the type of parameter 'urnId' of method 'UrnId.Parse(string)' from string to System.Uri, or provide an overload of 'UrnId.Parse(string)', that allows 'urnId' to be passed as a System.Uri object.
In externally visible method 'UrnId.Parse(string)', validate parameter 'urnId' before using it.
In externally visible method 'XLinqExtensions.AllElements(this IEnumerable<XElement>, string)', validate parameter 'elements' before using it.
Consider changing the type of parameter 'element' in 'XLinqExtensions.AllElements(this XElement, string)' from 'XElement' to its base type 'XContainer'. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
In externally visible method 'XLinqExtensions.AnyElement(this IEnumerable<XElement>, string)', validate parameter 'elements' before using it.
Consider changing the type of parameter 'element' in 'XLinqExtensions.AnyElement(this XElement, string)' from 'XElement' to its base type 'XContainer'. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
Because the behavior of 'string.Format(string, object)' could vary based on the current user's locale settings, replace this call in 'XLinqExtensions.AssertElementHasValue(this XElement, string)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
Consider changing the type of parameter 'element' in 'XLinqExtensions.FirstElement(this XElement)' from 'XElement' to its base type 'XContainer'. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
In externally visible method 'XLinqExtensions.FirstElement(this XElement)', validate parameter 'element' before using it.
In method 'XLinqExtensions.GetAttributeValueOrDefault<T>(this XAttribute, string, Func<XAttribute, T>)', correct the spelling of 'attr' in parameter name 'attr' or remove it entirely if it represents any sort of Hungarian notation.
Parameter 'name' of 'XLinqExtensions.GetAttributeValueOrDefault<T>(this XAttribute, string, Func<XAttribute, T>)' is never used. Remove the parameter or use it in the method body.
Consider replacing the language-specific data type identifier 'Bool' in member name 'XLinqExtensions.GetBool(this XElement, string)' with either a language-independent equivalent or a more generic term, such as 'value'.
Consider replacing the language-specific data type identifier 'Bool' in member name 'XLinqExtensions.GetBoolOrDefault(this XElement, string)' with either a language-independent equivalent or a more generic term, such as 'value'.
Consider replacing the language-specific data type identifier 'Int' in member name 'XLinqExtensions.GetInt(this XElement, string)' with either a language-independent equivalent or a more generic term, such as 'value'.
Consider replacing the language-specific data type identifier 'Int' in member name 'XLinqExtensions.GetIntOrDefault(this XElement, string)' with either a language-independent equivalent or a more generic term, such as 'value'.
Consider replacing the language-specific data type identifier 'Long' in member name 'XLinqExtensions.GetLong(this XElement, string)' with either a language-independent equivalent or a more generic term, such as 'value'.
Consider replacing the language-specific data type identifier 'Long' in member name 'XLinqExtensions.GetLongOrDefault(this XElement, string)' with either a language-independent equivalent or a more generic term, such as 'value'.
Change 'List<string>' in 'XLinqExtensions.GetValues(this IEnumerable<XElement>)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In method 'XLinqExtensions.GetValues(this IEnumerable<XElement>)', correct the spelling of 'els' in parameter name 'els' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'XLinqExtensions.GetValues(this IEnumerable<XElement>)', validate parameter 'els' before using it.
In member 'DbConnectionFactory.DbConnectionFactory(Func<IDbConnection>)', correct the casing of 'Fn' in parameter name 'connectionFactoryFn' by changing it to 'FN'.
In method 'DbConnectionFactory.DbConnectionFactory(Func<IDbConnection>)', correct the spelling of 'Fn' in parameter name 'connectionFactoryFn' or remove it entirely if it represents any sort of Hungarian notation.
Replace method 'ConsoleLogFactory.ConsoleLogFactory(bool)' with an overload that supplies all default arguments.
Parameter 'type' of 'ConsoleLogger.ConsoleLogger(string)' is never used. Remove the parameter or use it in the method body.
Parameter 'type' of 'ConsoleLogger.ConsoleLogger(Type)' is never used. Remove the parameter or use it in the method body.
Method 'ConsoleLogger.Log(object, Exception)' passes a literal string as parameter 'value' of a call to 'Console.WriteLine(string)'. Retrieve the following string(s) from a resource table instead: ", Exception: ".
In externally visible method 'DelegateFactory.Create(MethodInfo)', validate parameter 'method' before using it.
In externally visible method 'DelegateFactory.CreateVoid(MethodInfo)', validate parameter 'method' before using it.
Do not nest type 'DelegateFactory.LateBoundMethod'. Alternatively, change its accessibility so that it is not externally visible.
Do not nest type 'DelegateFactory.LateBoundVoid'. Alternatively, change its accessibility so that it is not externally visible.
Correct the casing of 'Fn' in member name 'PropertyAccessor.GetPropertyFn<TEntity>(string)' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor.GetPropertyFn<TEntity>(string)' or remove it entirely if it represents any sort of Hungarian notation.
Correct the casing of 'Fn' in member name 'PropertyAccessor.SetPropertyFn<TEntity>(string)' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor.SetPropertyFn<TEntity>(string)' or remove it entirely if it represents any sort of Hungarian notation.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.GetPropertyFn()' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.GetPropertyFn()' or remove it entirely if it represents any sort of Hungarian notation.
Change 'PropertyAccessor<TEntity>.GetPropertyFn()' to a property if appropriate.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.SetPropertyFn()' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.SetPropertyFn()' or remove it entirely if it represents any sort of Hungarian notation.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.TypedGetPropertyFn<TId>()' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.TypedGetPropertyFn<TId>()' or remove it entirely if it represents any sort of Hungarian notation.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.TypedSetPropertyFn<TId>()' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.TypedSetPropertyFn<TId>()' or remove it entirely if it represents any sort of Hungarian notation.
Consider a design where 'PropertyAccessor<TEntity>.UnTypedGetPropertyFn<TId>()' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.UnTypedGetPropertyFn<TId>()' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'PropertyAccessor<TEntity>.UnTypedGetPropertyFn<TId>()' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.UnTypedGetPropertyFn<TId>()' or remove it entirely if it represents any sort of Hungarian notation.
Consider a design where 'PropertyAccessor<TEntity>.UnTypedSetPropertyFn<TId>()' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.UnTypedSetPropertyFn<TId>()' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'PropertyAccessor<TEntity>.UnTypedSetPropertyFn<TId>()' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.UnTypedSetPropertyFn<TId>()' or remove it entirely if it represents any sort of Hungarian notation.
Consider a design where 'PropertyAccessor<TEntity>.ValueTypedGetPropertyFn<TId>()' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.ValueTypedGetPropertyFn<TId>()' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.ValueTypedGetPropertyFn<TId>()' or remove it entirely if it represents any sort of Hungarian notation.
Consider a design where 'PropertyAccessor<TEntity>.ValueTypesSetPropertyFn<TId>()' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'PropertyAccessor<TEntity>.ValueTypesSetPropertyFn<TId>()' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'PropertyAccessor<TEntity>.ValueTypesSetPropertyFn<TId>()' or remove it entirely if it represents any sort of Hungarian notation.
Remove 'StaticAccessors<TEntity>.TypedGetPropertyFn<TId>(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.TypedGetPropertyFn<TId>(PropertyInfo)' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.TypedGetPropertyFn<TId>(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
Remove 'StaticAccessors<TEntity>.TypedSetPropertyFn<TId>(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.TypedSetPropertyFn<TId>(PropertyInfo)' by changing it to 'FN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.TypedSetPropertyFn<TId>(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
Remove 'StaticAccessors<TEntity>.UnTypedGetPropertyFn<TId>(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Consider a design where 'StaticAccessors<TEntity>.UnTypedGetPropertyFn<TId>(PropertyInfo)' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.UnTypedGetPropertyFn<TId>(PropertyInfo)' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'StaticAccessors<TEntity>.UnTypedGetPropertyFn<TId>(PropertyInfo)' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.UnTypedGetPropertyFn<TId>(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
Remove 'StaticAccessors<TEntity>.UnTypedSetPropertyFn<TId>(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Consider a design where 'StaticAccessors<TEntity>.UnTypedSetPropertyFn<TId>(PropertyInfo)' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.UnTypedSetPropertyFn<TId>(PropertyInfo)' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'StaticAccessors<TEntity>.UnTypedSetPropertyFn<TId>(PropertyInfo)' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.UnTypedSetPropertyFn<TId>(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
Remove 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyFn<TId>(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Consider a design where 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyFn<TId>(PropertyInfo)' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyFn<TId>(PropertyInfo)' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyFn<TId>(PropertyInfo)' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyFn<TId>(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
Remove 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyTypeFn(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyTypeFn(PropertyInfo)' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyTypeFn(PropertyInfo)' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyTypeFn(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'StaticAccessors<TEntity>.ValueUnTypedGetPropertyTypeFn(PropertyInfo)', validate parameter 'pi' before using it.
Remove 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyFn<TId>(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Consider a design where 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyFn<TId>(PropertyInfo)' doesn't require explicit type parameter 'TId' in any call to it.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyFn<TId>(PropertyInfo)' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyFn<TId>(PropertyInfo)' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyFn<TId>(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
Remove 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyTypeFn(PropertyInfo)' from 'StaticAccessors<TEntity>' or make it an instance member.
Correct the casing of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyTypeFn(PropertyInfo)' by changing it to 'FN'.
Correct the casing of 'Un' in member name 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyTypeFn(PropertyInfo)' by changing it to 'UN'.
Correct the spelling of 'Fn' in member name 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyTypeFn(PropertyInfo)' or remove it entirely if it represents any sort of Hungarian notation.
In externally visible method 'StaticAccessors<TEntity>.ValueUnTypedSetPropertyTypeFn(PropertyInfo)', validate parameter 'pi' before using it.
In externally visible method 'AdapterBase.Execute(Action)', validate parameter 'action' before using it.
In externally visible method 'AdapterBase.Execute<T>(Func<T>)', validate parameter 'action' before using it.
Change 'List<T>' in 'CommandResultsHandler<T>.CommandResultsHandler(List<T>, ICommandList<T>, AutoResetEvent)' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Because the behavior of 'string.Format(string, params object[])' could vary based on the current user's locale settings, replace this call in 'InMemoryLog.AppendToLog(ICollection<string>, string, params object[])' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.
Change 'InMemoryLog.DebugEntries' to be read-only by removing the property setter.
Change 'List<string>' in 'InMemoryLog.DebugEntries' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.DebugExceptions' to be read-only by removing the property setter.
Change 'List<Exception>' in 'InMemoryLog.DebugExceptions' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.ErrorEntries' to be read-only by removing the property setter.
Change 'List<string>' in 'InMemoryLog.ErrorEntries' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.ErrorExceptions' to be read-only by removing the property setter.
Change 'List<Exception>' in 'InMemoryLog.ErrorExceptions' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.FatalEntries' to be read-only by removing the property setter.
Change 'List<string>' in 'InMemoryLog.FatalEntries' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.FatalExceptions' to be read-only by removing the property setter.
Change 'List<Exception>' in 'InMemoryLog.FatalExceptions' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.InfoEntries' to be read-only by removing the property setter.
Change 'List<string>' in 'InMemoryLog.InfoEntries' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.InfoExceptions' to be read-only by removing the property setter.
Change 'List<Exception>' in 'InMemoryLog.InfoExceptions' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.WarnEntries' to be read-only by removing the property setter.
Change 'List<string>' in 'InMemoryLog.WarnEntries' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
Change 'InMemoryLog.WarnExceptions' to be read-only by removing the property setter.
Change 'List<Exception>' in 'InMemoryLog.WarnExceptions' to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
In externally visible method 'InMemoryLogFactory.GetLogger(Type)', validate parameter 'type' before using it.
Assemblies should have valid strong names
Either the assembly has no strong name, an invalid one, or the strong name is valid only because of the computer configuration. The assembly should not be deployed in this state. The most common causes of this are: 1) The assembly's contents were modified after it was signed. 2) The signing process failed. 3) The assembly was delay-signed. 4) A registry key existed that allowed the check to pass (where it would not have otherwise).
Sign {0} with a strong name key.
http://msdn.microsoft.com/library/ms182127(VS.100).aspx
[none]
CriticalError
Avoid calling problematic methods
Avoid making unnecessary and potentially dangerous method calls.
Remove the call to GC.Collect from {0}. It is usually unnecessary to force garbage collection, and doing so can severely degrade performance.
http://msdn.microsoft.com/library/bb385973(VS.100).aspx
[none]
Error
Avoid namespaces with few types
A namespace should generally have more than five types.
Consider merging the types defined in '{0}' with another namespace.
http://msdn.microsoft.com/library/ms182130(VS.100).aspx
[none]
Warning
Collection properties should be read only
Properties that return collections should be read-only so that users cannot entirely replace the backing store. Users can still modify the contents of the collection by calling relevant methods on the collection. Note that the XmlSerializer class has special support for deserializing read-only collections. See the XmlSerializer overview for more information.
Change {0} to be read-only by removing the property setter.
http://msdn.microsoft.com/library/ms182327(VS.100).aspx
[none]
Warning
Compound words should be cased correctly
Avoid creating compound words from terms which exist in the dictionary as discrete terms. Do not create a compound word such as 'StopWatch' or 'PopUp'. These terms are recognized in the dictionary and should be cased as 'Stopwatch' and 'Popup'.
In member {0}, the compound word '{1}' in parameter name {2} exists as a discrete term. If your usage is intended to be single word, case it as '{3}' or strip the first token entirely if it represents any sort of Hungarian notation.
The compound word '{0}' in member name {1} exists as a discrete term. If your usage is intended to be single word, case it as '{2}' or strip the first token entirely if it represents any sort of Hungarian notation.
http://msdn.microsoft.com/library/bb264474(VS.100).aspx
[none]
Error
Consider passing base types as parameters
Using base types as parameters to methods improves re-use of these methods if you only use methods & properties from the parameter's base class. E.g. use Stream instead of FileStream as a parameter when only calling Stream.Read(), this makes the method work on all kind of streams instead of just File streams.
Consider changing the type of parameter {0} in {1} from {2} to its base type {3}. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.
http://msdn.microsoft.com/library/3hk32yyz(VS.100).aspx
[none]
Error
Declare types in namespaces
A type should be defined inside a namespace to avoid duplication.
{0} should be declared inside a namespace.
http://msdn.microsoft.com/library/ms182134(VS.100).aspx
[none]
Error
Default parameters should not be used
Some programming languages do not support default parameters. Replace default parameters with method overloads that supply the default argument.
Replace method {0} with an overload that supplies all default arguments.
http://msdn.microsoft.com/library/ms182135(VS.100).aspx
[none]
Error
Dispose objects before losing scope
If a disposable object is not explicitly disposed before all references to it are out of scope, the object will be disposed at some indeterminate time when the garbage collector runs the finalizer of the object. Because an exceptional event might occur that will prevent the finalizer of the object from running, the object should be explicitly disposed instead.
In method {0}, call System.IDisposable.Dispose on object {1} before all references to it are out of scope.
RuleOwner
http://msdn.microsoft.com/library/ms182289(VS.100).aspx
Warning
Do not pass literals as localized parameters
Literal strings that are embedded in source code are difficult to localize. Avoid passing literal strings as arguments in circumstances where a localized string is generally expected.
Method {0} passes a literal string as parameter '{1}' of a call to {2}. Retrieve the following string(s) from a resource table instead: {3}.
RuleOwner
http://msdn.microsoft.com/library/ms182187(VS.100).aspx
Warning
Do not catch general exception types
You should not catch Exception or SystemException. Catching generic exception types can hide run-time problems from the library user, and can complicate debugging. You should catch only those exceptions that you can handle gracefully.
Modify {0} to catch a more specific exception than {1} or rethrow the exception.
http://msdn.microsoft.com/library/ms182137(VS.100).aspx
[none]
CriticalError
Do not declare read only mutable reference types
A read-only declaration for a mutable reference type does not prevent the field's instance data from being modified. For example, a read-only StringBuilder field declaration does not make sense, since the data encapsulated by the StringBuilder can be modified using the read-only reference.
Remove the read-only designation from {0} or change the field to one that is an immutable reference type. If the reference type {1} is, in fact, immutable, exclude this message.
http://msdn.microsoft.com/library/ms182302(VS.100).aspx
[none]
Error
Do not declare static members on generic types
The syntax for calling static members on generic types is complex as the type parameter has to be specified for each call.
Remove {0} from {1} or make it an instance member.
http://msdn.microsoft.com/library/ms182139(VS.100).aspx
[none]
Error
Do not expose generic lists
Do not expose List<T> in object models. Use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V> instead. List<T> is meant to be used from implementation, not in object model API. List<T> is optimized for performance at the cost of long term versioning. For example, if you return List<T> to the client code, you will not ever be able to receive notifications when client code modifies the collection.
Change {0} in {1} to use Collection<T>, ReadOnlyCollection<T> or KeyedCollection<K,V>
http://msdn.microsoft.com/library/ms182142(VS.100).aspx
[none]
Error
Do not nest generic types in member signatures
Avoid API that require users to instantiate a generic type with another generic type as type argument. The syntax gets too complex.
Consider a design where {0} doesn't nest generic type {1}.
http://msdn.microsoft.com/library/ms182144(VS.100).aspx
[none]
CriticalError
Do not pass types by reference
Although there are legitimate times to use reference parameters, such use frequently indicates a design that does not conform to the design guidelines for managed code.
Consider a design that does not require that {0} be a reference parameter.
http://msdn.microsoft.com/library/ms182146(VS.100).aspx
[none]
Warning
Enums should have zero value
An enum should generally have a zero value. If the enum is not decorated with the Flags attribute, it should have a member with a value of zero that represents the empty state. Optionally, this value is named 'None'. For a Flags-attributed enum, a zero-valued member is optional and, if it exists, should always be named 'None'. This value should indicate that no values have been set in the enum. Using a zero-valued member for other purposes is contrary to the use of the Flags attribute in that the bitwise AND and OR operators are useless with the member.
Add a member to {0} that has a value of zero with a suggested name of 'None'.
http://msdn.microsoft.com/library/ms182149(VS.100).aspx
[none]
CriticalError
Generic methods should provide type parameter
Methods where the type parameter cannot be inferred from the parameters and therefore has to be defined in the method call are too difficult to understand. Methods with a formal parameter typed as the generic method type parameter support inference. Methods with no formal parameter typed as the generic method type parameter don't support inference.
Consider a design where {0} doesn't require explicit type parameter {1} in any call to it.
http://msdn.microsoft.com/library/ms182150(VS.100).aspx
[none]
Warning
Identifiers should be cased correctly
Type, namespace, and member identifiers are Pascal-cased. Parameter identifiers are camel-cased. Two letter acronyms within these identifiers should be upper-cased, for example, use System.IO instead of System.Io. Acronyms of three or more letters should be Pascal-cased, for example, use System.Xml instead of System.XML. The pascal-casing convention capitalizes the first letter of each word, as in BackColor. The camel-casing convention formats the first letter of the first word in lowercase and capitalizes the first letter of all subsequent words, as in backgroundColor. Although it may be common practice for some two letter acronyms to not be fully capitalized, violations of this rule should not be excluded for this reason. For example, 'DbConnection', is common but incorrect; use DBConnection. A violation of this rule might be required for compatibility with existing, non-managed symbol schemes. In general, however, these symbols should not be visible outside the assembly that uses them.
Correct the casing of '{0}' in member name {1} by changing it to '{2}'.
In member {0}, correct the casing of '{1}' in parameter name {2} by changing it to '{3}'.
http://msdn.microsoft.com/library/ms182240(VS.100).aspx
[none]
Error
Identifiers should be spelled correctly
The individual words that make up an identifier should not be abbreviated and should be spelled correctly. If this rule generates a false positive on a term that should be recognized, add the word to the FxCop custom dictionary.
Correct the spelling of '{0}' in member name {1} or remove it entirely if it represents any sort of Hungarian notation.
In method {0}, correct the spelling of '{1}' in parameter name {2} or remove it entirely if it represents any sort of Hungarian notation.
On method {0}, consider providing a more meaningful name than generic type parameter name {1}.
Correct the spelling of '{0}' in type name {1}.
http://msdn.microsoft.com/library/bb264492(VS.100).aspx
[none]
CriticalWarning
Identifiers should have correct prefix
Prefix interface names with the letter 'I' to indicate that the type is an interface, as in IFormattable. Prefix generic type parameter names with the letter 'T' and provide them with descriptive names, as in Dictionary<TKey, TValue>, unless a single 'T' is completely self-explanatory, as in Collection<T>. Use Pascal casing for both interface and type parameter names. Use abbreviations sparingly. Do not use the underscore character. Do use similar names when defining a class/interface pair where the class is a standard implementation of the interface. The names should differ only by the letter I prefixed on the interface name, as with Component and IComponent.
On method {0}, prefix generic type parameter name {1} with 'T'.
http://msdn.microsoft.com/library/ms182243(VS.100).aspx
[none]
Error
Identifiers should not contain type names
Avoid using language-specific types name in parameters and members and data type identifiers in parameters. Types names might not be intuitive for all developers. It is recommended that you select a generic name, such as 'value', instead. If this is not sufficient, be sure to use the type name as it is defined in the .NET Framework Library and avoid language-specific type names completely. Some examples of C#-specific type names are 'float' (use 'Single' if a generic name is not sufficient), and 'ulong' (use 'UInt64' if a generic name is not sufficient).
In member {0}, consider replacing the data type identifier '{1}' in parameter name {2} with a more generic term, such as 'value'.
Consider replacing the language-specific data type identifier '{0}' in member name {1} with either a language-independent equivalent or a more generic term, such as 'value'.
http://msdn.microsoft.com/library/bb531486(VS.100).aspx
[none]
Error
Identifiers should not have incorrect suffix
Types that do not extend certain base types should not use reserved name suffixes. Types and members should not use 'Ex' or 'New' to distinguish them from an earlier version of the same API, instead, use a numeric suffix such as '2' or provide a more meaningful suffix. Concrete type implementations and members should not end 'Impl'. Members instead, should either consider using the suggested alternate 'Core' in replacement of 'Impl' or avoid any suffix at all.
Rename type name {0} so that it does not end in '{1}'.
http://msdn.microsoft.com/library/ms182247(VS.100).aspx
[none]
CriticalError
Initialize reference type static fields inline
Static fields should be initialized when declared. Initializing static data in explicit static constructors results in less performant code.
Initialize all static fields in {0} when those fields are declared and remove the explicit static constructor.
http://msdn.microsoft.com/library/ms182275(VS.100).aspx
[none]
CriticalWarning
Instantiate argument exceptions correctly
String arguments passed to constructors of ArgumentException and its derived types should be correct. Types derived from ArgumentException have inconsistent constructor overloads with respect to the message and paramName parameters as compared to ArgumentException.
Method {0} passes '{1}' as the {2} argument to a {3} constructor. Replace this argument with one of the method's parameter names. Note that the provided parameter name should have the exact casing as declared on the method.
http://msdn.microsoft.com/library/ms182347(VS.100).aspx
[none]
CriticalError
Mark assemblies with CLSCompliantAttribute
Assemblies should explicitly state their CLS compliance using the CLSCompliant attribute. An assembly without this attribute is not CLS-compliant. Assemblies, modules, and types can be CLS-compliant even if some parts of the assembly, module, or type are not CLS-compliant. The following rules apply: 1) If the element is marked CLSCompliant, any noncompliant members must have the CLSCompliant attribute present with its argument set to false. 2) A comparable CLS-compliant alternative member must be supplied for each member that is not CLS-compliant.
Mark {0} with CLSCompliant(true) because it exposes externally visible types.
http://msdn.microsoft.com/library/ms182156(VS.100).aspx
[none]
Error
Mark enums with FlagsAttribute
The enumeration appears to be made up of combinable flags. If this true, apply the Flags attribute to the enumeration.
The constituent members of {0} appear to represent flags that can be combined rather than discrete values. If this is correct, mark the enumeration with FlagsAttribute.
http://msdn.microsoft.com/library/ms182159(VS.100).aspx
[none]
Warning
Nested types should not be visible
Do not use public, protected or protected internal (Protected Friend) nested types as a way of grouping types. Use namespaces for this purpose. There are very limited scenarios where nested types are the best design. Also, nested type member accessibility is not clearly understood by all audiences. Enumerators are exempt from this rule.
Do not nest type {0}. Alternatively, change its accessibility so that it is not externally visible.
http://msdn.microsoft.com/library/ms182162(VS.100).aspx
[none]
Error
Non-constant fields should not be visible
Static fields should be constant unless you carefully manage access to the field using locks. Using static variables without making them thread safe can compromise execution state. This rule applies to managed code libraries. If the analyzed assembly is an application, it is usually safe to exclude violations of this rule.
Consider making {0} non-public or a constant.
http://msdn.microsoft.com/library/ms182353(VS.100).aspx
[none]
Warning
Normalize strings to uppercase
Strings should be normalized to upper-case.
In method {0}, replace the call to {1} with String.ToUpperInvariant().
http://msdn.microsoft.com/library/bb386042(VS.100).aspx
[none]
Error
Only FlagsAttribute enums should have plural names
Plural names indicate that the values of the enumeration can be combined. For example, an enumeration named 'Day' indicates a single day, and an enumeration named 'Days' indicates multiple days. Enumeration values should be combined using the bit-wise OR operator only if the Flags attribute is present on the enumeration.
If the name {0} is plural, change it to its singular form.
http://msdn.microsoft.com/library/bb264487(VS.100).aspx
[none]
Error
Parameter names should not match member names
Parameter names should be distinct from member names.
Change either member or parameter name {0} so that one differs from the other.
http://msdn.microsoft.com/library/ms182252(VS.100).aspx
[none]
Error
Properties should not return arrays
Properties that return arrays are prone to code inefficiencies. Consider using a collection or making this a method. See the design guidelines for more information.
Change {0} to return a collection or make it a method.
http://msdn.microsoft.com/library/0fss9skc(VS.100).aspx
[none]
Warning
Property names should not match get methods
A Get method was found with the same name as a property. Get methods and properties should have names that clearly distinguish their function. See the design guidelines for information regarding choosing properties over methods.
The property name {0} is confusing given the existence of inherited method {1}. Rename or remove this property.
http://msdn.microsoft.com/library/ms182253(VS.100).aspx
[none]
Error
Review unused parameters
Review parameters in non-virtual methods that are not used in the method body to ensure no correctness exists around failure to access them. Unused parameters incur maintenance and performance costs. Sometimes a violation of this rule can point to an implementation bug in the method (i.e. the parameter should actually have been used in the method body). Exclude warnings of this rule if the parameter has to exist because of backward compatibility.
Parameter {0} of {1} is never used. Remove the parameter or use it in the method body.
http://msdn.microsoft.com/library/ms182268(VS.100).aspx
[none]
Warning
Specify IFormatProvider
If an overload exists that takes an IFormatProvider argument, it should always be called in favor of an overload that does not. Some methods in the runtime convert a value to or from a string representation and take a string parameter that contains one or more characters, called format specifiers, which indicate how the value is to be converted. If the meaning of the format specifier varies by culture, a formatting object supplies the actual characters used in the string representation. In scenarios where sorting and comparison behavior should never change between cultures, specify CultureInfo.InvariantCulture, otherwise, specify CultureInfo.CurrentCulture.
Because the behavior of {0} could vary based on the current user's locale settings, replace this call in {1} with a call to {2}. If the result of {2} will be based on input from the user, specify {3} as the 'IFormatProvider' parameter. Otherwise, if the result will based on input stored and accessed by software, such as when it is loaded from disk or from a database, specify {4}.
Because the behavior of {0} could vary based on the current user's locale settings, replace this call in {1} with a call to {2}. If the result of {2} will be displayed to the user, specify {3} as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify {4}.
http://msdn.microsoft.com/library/ms182190(VS.100).aspx
[none]
Error
Static holder types should not have constructors
Instances of types that define only static members do not need to be created. Many compilers will automatically add a public default constructor if no constructor is specified. To prevent this, adding an empty private constructor may be required.
Because type {0} contains only 'static' members, mark it as 'static' to prevent the compiler from adding a default public constructor.
http://msdn.microsoft.com/library/ms182169(VS.100).aspx
[none]
Error
URI parameters should not be strings
If a parameter name contains "uri" or "url" or "urn", and it's typed as string, the parameter type should be changed to System.Uri, unless there is an overload method where the same parameter is typed as System.Uri.
Change the type of parameter {0} of method {1} from string to System.Uri, or provide an overload of {1}, that allows {0} to be passed as a System.Uri object.
http://msdn.microsoft.com/library/ms182174(VS.100).aspx
[none]
Error
URI properties should not be strings
If a property name contains "uri" or "url" or "urn" and it's typed as string, it should be changed to System.Uri.
Change the type of property {0} from string to System.Uri.
http://msdn.microsoft.com/library/ms182175(VS.100).aspx
[none]
Error
URI return values should not be strings
If a function name contains "uri" or "url" or "urn" and the return type is string, the return type should be changed to System.Uri.
Change the return type of {0} from string to System.Uri.
http://msdn.microsoft.com/library/ms182176(VS.100).aspx
[none]
Error
Use properties where appropriate
Properties should be used instead of Get/Set methods in most situations. Methods are preferable to properties in the following situations: the operation is a conversion, is expensive or has an observable side-effect; the order of execution is important; calling the member twice in succession creates different results; a member is static but returns a mutable value; or the member returns an array.
Change {0} to a property if appropriate.
http://msdn.microsoft.com/library/ms182181(VS.100).aspx
[none]
Warning
Validate arguments of public methods
All reference arguments passed to externally visible methods should be checked against null (Nothing in VB). If appropriate, throw a System.ArgumentNullException when the argument is null.
In externally visible method {0}, validate parameter '{1}' before using it.
RuleOwner
http://msdn.microsoft.com/library/ms182182(VS.100).aspx
Warning
Category
Certainty
Collapse All
Check Id
Error
error(s)
Expand All
Help
Line
message(s)
[Location not stored in Pdb]
Project
Resolution
Rule
Rule File
Rule Description
Source
Status
Target
Warning
warning(s)
Code Analysis Report