Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@ximian.com>2010-06-05 05:49:40 +0400
committerSebastien Pouliot <sebastien@ximian.com>2010-06-05 05:49:40 +0400
commitc06505b7e244f91ef30077f1a4026c24259610f4 (patch)
tree78a62c6b293b6ca7d0fd14501a4edd76d01215bf
parentc81687527114b2f36aaf0db6e301f9c8f80f8d74 (diff)
2010-06-04 Sebastien Pouliot <sebastien@ximian.com>
* PreferEmptyInstanceOverNullRule.cs: Keep state around since it can be needed if we report a defect. Rename GetReturnTypeSuggestion to SuggestReturnType (apply ConsiderConvertingMethodToPropertyRule) svn path=/trunk/mono-tools/; revision=158504
-rw-r--r--gendarme/rules/Gendarme.Rules.BadPractice/ChangeLog6
-rw-r--r--gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs22
2 files changed, 19 insertions, 9 deletions
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/ChangeLog b/gendarme/rules/Gendarme.Rules.BadPractice/ChangeLog
index 44b46cb3..16d82913 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/ChangeLog
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/ChangeLog
@@ -1,3 +1,9 @@
+2010-06-04 Sebastien Pouliot <sebastien@ximian.com>
+
+ * PreferEmptyInstanceOverNullRule.cs: Keep state around since it
+ can be needed if we report a defect. Rename GetReturnTypeSuggestion
+ to SuggestReturnType (apply ConsiderConvertingMethodToPropertyRule)
+
2010-01-28 Sebastien Pouliot <sebastien@ximian.com>
* PreferTryParseRule.cs: Simplify and reduce code duplication by
diff --git a/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs b/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs
index eb02a5e7..7d2f2a4c 100644
--- a/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs
+++ b/gendarme/rules/Gendarme.Rules.BadPractice/PreferEmptyInstanceOverNullRule.cs
@@ -130,6 +130,9 @@ namespace Gendarme.Rules.BadPractice {
public class PreferEmptyInstanceOverNullRule : ReturnNullRule, IMethodRule {
TypeReference returnType;
+ bool return_string;
+ bool return_array;
+ bool return_ienumerable;
public override RuleResult CheckMethod (MethodDefinition method)
{
@@ -143,28 +146,29 @@ namespace Gendarme.Rules.BadPractice {
//only apply to methods returning string, array, or IEnumerable-impl
returnType = method.ReturnType.ReturnType;
- if (returnType.FullName != "System.String"
- && !returnType.IsArray ()
- && !returnType.Implements ("System.Collections.IEnumerable")) {
+ return_string = (returnType.FullName == "System.String");
+ return_array = returnType.IsArray ();
+ return_ienumerable = returnType.Implements ("System.Collections.IEnumerable");
+
+ if (!return_string && !return_array && !return_ienumerable)
return RuleResult.DoesNotApply;
- }
return base.CheckMethod (method);
}
protected override void Report (MethodDefinition method, Instruction ins)
{
- string msg = string.Format ("Replace null with {0}.", GetReturnTypeSuggestion ());
+ string msg = string.Format ("Replace null with {0}.", SuggestReturnType ());
Runner.Report (method, ins, method.IsVisible () ? Severity.Medium : Severity.Low, Confidence.Normal, msg);
}
- string GetReturnTypeSuggestion ()
+ string SuggestReturnType ()
{
- if (returnType.FullName == "System.String")
+ if (return_string)
return "string.Empty";
- else if (returnType.IsArray ())
+ else if (return_array)
return string.Format ("an empty {0} array", returnType.Name);
- else if (returnType.FullName.StartsWith ("System.Collections.Generic.IEnumerable"))
+ else if (return_ienumerable)
return "yield break (or equivalent)";
return "an empty collection";
}