2008-08-18  Sebastien Pouliot  <sebastien@ximian.com>

	* CallingEqualsWithNullArgRule.cs: Use TraceBack rock to reduce (and
	simplify) source code. Use simpler overload for Report.
	* UseValueInPropertySetterRule.cs: Use GetParameter rock to (and
	simplify) source code. Use simpler overload for Report.

2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>

	* AvoidConstructorsInStaticTypesRule.cs: Fix case where we can't 
	resolve the base type when checking for static types.
	* BadRecursiveInvocationRule.cs: Fix case where we can't resolve
	a type.
	* ReviewSelfAssignmentRule.cs: Fix two cases where the field's 
	types cannot be resolved.

2008-07-24  Sebastien Pouliot  <sebastien@ximian.com>

	* DoNotRoundIntegersRule.cs: Move up break condition to make sure
	we're not missing the return value of a previous call before Round.

2008-07-23  Sebastien Pouliot  <sebastien@ximian.com>

	* BadRecursiveInvocationRule.cs: Fix false positives when generics
	or explicit interfaces are being used. Optimized CompareMethods to use
	MetadataToken (when possible) and removed Instructions.IndexOf call.

2008-07-18  Sebastien Pouliot  <sebastien@ximian.com>

	* BadRecursiveInvocationRule.cs: Fix typo in [Problem] as noted
	by Richard Birkby.

2008-07-12  Sebastien Pouliot  <sebastien@ximian.com> 

	* AvoidConstructorsInStaticTypesRule.cs: Rework the rule to
	be more specific to 1.x code - where we want to the possibility 
	to instantiate "static" types by avoiding a visible default ctor.
	* Makefile.am: Fix typo that limited the number of tests being 
	built and executed.

2008-07-12  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewUseOfModuloOneOnIntegersRule.cs: Remove unused field 
	(self-test)

2008-07-09  Sebastien Pouliot  <sebastien@ximian.com>

	* BadRecursiveInvocationRule.cs,
	* DoNotRoundIntegersRule.cs,
	* DontCompareWithNaNRule.cs,
	* FloatComparisonRule.cs: Deal with possible null values if
	resolving fails.
	* Makefile.am: Refactor to extract common stuff into new 
	../common.make file. Rebuild if the framework has changed.

2008-07-06  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewDoubleAssignmentRule.cs: Simplify logic using the new 
	TraceBack rock.
	* ReviewSelfAssignmentRule.cs: New. Rule to check if a field
	or parameter is being assigned to itself (resulting in no change).
	* Gendarme.Rules.Correctness.mdp: Add rule to MD project file.
	* Makefile.am: Add new rule and tests to the build.

2008-06-27  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewUseOfInt64BitsToDoubleRule.cs: New. Rule to check if the
	BitConverter.Int64BitsToDouble is used in it's intended sense (i.e.
	converting bits).
	* Gendarme.Rules.Correctness.mdp: Add rule to MD project file.
	* Makefile.am: Add new rule and tests to the build.

2008-06-23  Sebastien Pouliot  <sebastien@ximian.com>

	* DoNotRoundIntegersRule.cs: New. Rule to detect cases where a
	rounding method (like Floor, Ceiling, Truncate or Round) is being
	used on an integer value.
	* Gendarme.Rules.Correctness.mdp: Add rule to MD project file.
	* Makefile.am: Add new rule and tests to the build.

2008-06-16  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewUselessControlFlowRule.cs: New. Rule to detect useless
	control flow in the method IL. They are either (potentially dangerous)
	typos or empty code block (e.g. forgotten, or not, TODO).
	* Gendarme.Rules.Correctness.mdp: Add rule to MD project file.
	* Makefile.am: Add new rule and tests to the build.

2008-06-15  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewDoubleAssignmentRule.cs: Handle same fields from different 
	instances.
	* ReviewUseOfModuloOneOnIntegersRule.cs: New. Rule to detect modulo
	1 (x % 0) on integral types. This always return 0 and is probably a typo.
	* Gendarme.Rules.Correctness.mdp: Add rule to MD project file.
	* Makefile.am: Add new rule and tests to the build.

2008-06-14  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewDoubleAssignmentRule.cs: New. Rule to detect double 
	assignments on fields or variables (e.g. x = x = 42;)
	* Gendarme.Rules.Correctness.mdp: Add rule to MD project file.
	* Makefile.am: Add new rule and tests to the build.

2008-04-27  Jb Evain  <jbevain@novell.com>

	* MethodCanBeMadeStaticRule.cs: Disable this rule
	when analyzing event callbacks.

2008-04-05  Sebastien Pouliot  <sebastien@ximian.com>

	* DontCompareWithNaNRule.cs, FloatComparisonRule.cs: mscorlib
	defines, not refer, to System.Single|Double (and the rule must
	apply to it too!)

2008-03-04  Sebastien Pouliot  <sebastien@ximian.com> 

	* DontCompareWithNaNRule.cs, FloatComparisonRule.cs: Don't 
	execute rules if the module does not use floating point types.

2008-02-16  Sebastien Pouliot  <sebastien@ximian.com>

	* Makefile.am: Remove NullDerefRule from build until it's fixed (and
	avoid the noise it cause in self-tests)

2008-02-16  Nestor Salceda  <nestor.salceda@gmail.com>
	
	* Makefile.am: Removed the -langversion:linq option. You should use at
        least the 1.9 gmcs version to compile.

2008-02-15  Sebastien Pouliot  <sebastien@ximian.com>

	* AvoidConstructorsInStaticTypesRule.cs
	* BadRecursiveInvocationRule.cs
	* CallingEqualsWithNullArgRule.cs
	* DontCompareWithNaNRule.cs
	* FloatComparisonRule.cs
	* MethodCanBeMadeStaticRule.cs
	* NullDerefAnalysis.cs
	* NullDerefFrame.cs
	* NullDerefRule.cs
	* Nullity.cs
	* UseValueInPropertySetterRule.cs:
		Update rules wrt framework changes.

2008-01-29  Sebastien Pouliot  <sebastien@ximian.com>

	* FloatComparisonRule.cs: Handle "this" and don't report defects on
	System.Single or System.Double (useful for mono itself :)
	* UseValueInPropertySetterRule.cs: Handle this[] with multiple
	parameters.

2008-01-16  Nestor Salceda  <nestor.salceda@gmail.com>

	* Makefile.am: Compile the rules with -langversion:linq flag.  This
	fixes the compiler error building the Correctness set.

2008-01-12  Sebastien Pouliot  <sebastien@ximian.com>

	* AvoidConstructorsInStaticTypesRule.cs: Use new Location ctor.
	* CallingEqualsWithNullArgRule.cs: Change three methods to static.
	Use new Location ctor.
	* DontCompareWithNaNRule.cs: New. Rule that reports comparing (with 
	either ==, != or Equals) a floating-point value with NaN.
	* FloatComparisonRule.cs: Remove the recently added checks for NaN 
	(see new rule). Simplify error reporting.
	* NonNullAttributeCollector.cs: Change one method to static.
	* NullDerefAnalysis.cs: Change two methods to static. Use new 
	Location ctor.
	* NullDerefFrame.cs: Change one method to static.
	* UseValueInPropertySetterRule.cs: Don't report empty setters. 
	There's too many of them, mostly on purpose, so it hides the real
	problems.
	* dataflow/BasicBlock.cs: Change fields to internal.
	* dataflow/CFG.cs: Change four methods to static.
	* Gendarme.Rules.Correctness.xml.in: Add rule description.
	* Makefile.am: Add new rule and tests to the build.

2008-01-06  Sebastien Pouliot  <sebastien@ximian.com> 

	* BadRecursiveInvocationRule.cs: Detect more case of endless 
	recursion, even where parameters aren't identical. Still not perfect
	(see ignored unit tests) but can process corlib without false
	positives.
	* FloatComparisonRule.cs: Remove object array of special values 
	(float and double constants). Change OpCode array to static
	(to reduce memory allocations). Add support to detect Double.Equals
	and support for Conv_R_Un, Ldarg_0 (for static methods), Ldelem_R4
	and Ldelem_R8 instructions (for arrays).
	* MethodCanBeMadeStaticRule.cs: Avoid checking constructors.
	* UseValueInPropertySetterRule.cs: Add support for Ldarga[_S] when
	checking for value. Report a different message for empty setters (to
	ease the reviewer job ;-) since it's less likely an error.

2008-01-05  Sebastien Pouliot  <sebastien@ximian.com>

	* MethodCanBeMadeStaticRule.cs: Ignore generated code. Return a 
	complete message (not just a failure).
	* NonNullAttribute.cs: seal the attribute (fix warning)
	* UseValueInPropertySetterRule.cs: Fix rule to work properly with
	static methods.

2008-01-05  Nestor Salceda  <nestor.salceda@gmail.com>

	* AvoidConstructorsInStaticTypesRule.cs: Use rocks for check if a method
	is autogenerated.

2008-01-05  Nestor Salceda  <nestor.salceda@gmail.com>
	
	* Makefile.am: Compile with -langversion:linq parameter.
	* UseValueInPropertySetterRule.cs: Use rocks for check if the method
	is a setter property.

2007-12-16  Sebastien Pouliot  <sebastien@ximian.com>

	* Makefile.am: Remove OpCodeConstants.cs from build.

2007-12-16  Sebastien Pouliot  <sebastien@ximian.com> 

	* AvoidConstructorsInStaticTypesRule.cs: The rule doesn't apply for
	compiler generated types. Avoid creating MessageCollection if 
	unneeded (e.g. no error).

2007-12-16  Sebastien Pouliot  <sebastien@ximian.com>

	* BadRecursiveInvocationRule.cs: Use Cecil definitions, not
	OpCodeConstants.
	* NullDerefAnalysis.cs: Use Cecil definitions, not OpCodeConstants.
	Remove bunch of unneeded code duplication in switch.
	* pCodeConstants.c: Removed. Cecil provides them.

2007-12-16  Sebastien Pouliot  <sebastien@ximian.com> 

	* NullDerefAnalysis.cs: Avoid InvalidCastException
	* UseValueInPropertySetterRule.cs: Don't report error when a setter
	is simply throwing an exception.

2007-11-30  Nestor Salceda  <nestor.salceda@gmail.com>

	* FloatComparisonRule.cs: Extract a method for avoid the Long Method
	smell.  This fixes the warning in the self-test.

2007-11-22  Sebastien Pouliot  <sebastien@ximian.com> 

	* NullDerefFrame.cs: Remove use of /n using StringBuilder.AppendLine
	* dataflow/CFG.cs: Remove use of /n using StreamWriter.WriteLine

2007-11-22  Sebastien Pouliot  <sebastien@ximian.com>

	* UseValueInPropertySetterRule.cs: Apply JB's suggestion to use
	SemanticsAttributes instead of the SpecialName + "set_" checks.

2007-11-22  Sebastien Pouliot  <sebastien@ximian.com> 

	* UseValueInPropertySetterRule.cs: Avoid creating MessageCollection
	if unneeded (e.g. no error). Stop looping instruction when we 
	determine that value has been accessed.

2007-11-21  Sebastien Pouliot  <sebastien@ximian.com> 

	* CallingEqualsWithNullArgRule.cs: Avoid creating MessageCollection 
	if unneeded (e.g. no error). Check for calli (along with call and 
	callvirt). Check previous instructions (not just the last one) for
	ldnull (skipping NOP and constrained). Fix bug on MS.NET where a 
	constrained instruction could be found just before).

2007-11-03  Nestor Salceda  <nestor.salceda@gmail.com>
	
	* Gendarme.Rules.Correctness.xml.in: Added the Uri for
	CallingEqualsWithNullArgRule, AvoidConstructorsInStaticTypesRule,
	FloatComparisonRule, UseValueInPropertySetterRule.

2007-11-03  Nestor Salceda  <nestor.salceda@gmail.com>

	* AvoidConstructorsInStaticTypesRule.cs:  Added the code for avoid false
	positives if the class doesn't contains fields and methods.

2007-10-28  Nestor Salceda  <nestor.salceda@gmail.com>

	* Gendarme.Rules.Correctness.xml.in: Added documentation for
	AvoidConstructorsInStaticTypes, FloatComparisonRule and
	UseValueInPropertySetterRule.

2007-10-19  Nestor Salceda  <nestor.salceda@gmail.com>
	
	* UseValueInPropertySetterRule.cs:  If a method is empty, then the rule
	will skip this method, because could be an stub or empty method.  This
	fixes the NullReferenceException if the method body is empty.

2007-10-19  Nestor Salceda  <nestor.salceda@gmail.com>

	* FloatComparisonRule.cs: Before get the instructions from the method
	body, the existence of method body should be checked.  This fixes the
	NullReferenceException.

2007-10-19  Nestor Salceda  <nestor.salceda@gmail.com>

	* CallingEqualsWithNullArgRule.cs:  Before get the instructions from a
	method body, the existence of method body should be checked.  Perhaps
	exists better solutions for this case, but this solution fixes the
	NullReferenceException.

2007-10-09  Nestor Salceda  <nestor.salceda@gmail.com>

	* Makefile.am: Remove the duplicate entry of 
	CallingEqualsWithNullArgRule.cs in the building process.  This fixes a
	compiler warning.

2007-10-07  Sebastien Pouliot  <sebastien@ximian.com>

	* AvoidConstructorsInStaticTypesRule.cs: Unit tests (Lukasz Knop, 
	GSoC 2007)
	* CallingEqualsWithNullArgRule.cs: New rule (Nidhi Rawal, GSoC 2007)
	* FloatComparisonRule.cs: Unit tests (Lukasz Knop, GSoC 2007)
	* UseValueInPropertySetterRule.cs: Unit tests (Lukasz Knop, GSoC 2007)
	* Gendarme.Rules.Correctness.xml.in: Update rule description.
	* Gendarme.Rules.Correctness.mdp: Update project file.
	* Makefile.am: Update build file.

2007-03-12  Alp Toker  <alp@atoker.com>

	* Gendarme.Rules.Correctness.xml.in: Typo fix.

2007-02-27  Jb Evain  <jbevain@gmail.com>

	* MethodCanBeMadeStatic.cs:
		Add new rule.

2006-10-16  Sebastien Pouliot  <sebastien@ximian.com>

	* BadRecursiveInvocationRule.cs: Fix case where the compiler (CSC)
	selects the base class to call (fix by Aaron Tomb). Also remove the
	check for parameter names which may not match in the base class.

2006-10-15  Sebastien Pouliot  <sebastien@ximian.com>

	* Gendarme.Rules.Concurrency.xml.in: Update Uri for rules (to generate
	more useful reports).	

2006-09-28  Sebastien Pouliot  <sebastien@ximian.com>

	* Makefile.am: Adjust EXTRA_DIST to include project files in tarballs.

2006-09-28  Christian Birkl  <christian.birkl@gmail.com>

	* Gendarme.Rules.Correctness.csproj: Included ChangeLog
	* BadRecursiveInvocationRule.cs, NullDerefRule.cs, 
	NullDerefAnalysis.cs: Migrated untyped IList messages collection to 
	typed MessageCollection	class.
	  
2006-07-31  Sebastien Pouliot  <sebastien@ximian.com>

	* Gendarme.Rules.Correctness.mdp: New. Project file for MonoDevelop.

2006-06-13  Sebastien Pouliot  <sebastien@ximian.com>

	* Makefile.am: Use -pkg:mono-nunit to reference nunit assemblies.
	Added self-test target to promote compliance ;-)
