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

	* DecorateThreadsRule.cs:
	* ThreadRocks.cs:
		Apply AvoidRepetitiveCallsToPropertiesRule

2010-06-09  Sebastien Pouliot  <sebastien@ximian.com> 

	* DecorateThreadsRule.cs: Rework to use ThreadModel to reduce
	memory allocations. Save 217kb on self-test
	* ThreadRocks.cs: Refactor to return ThreadModel (enum) instead of
	ThreadModelAttribute (class). Add helpers

2010-06-08  Sebastien Pouliot  <sebastien@ximian.com> 

	* ThreadRocks.cs: Refactor to share some code (property and events)
	and avoid allocations when looking for properties. Also avoid string
	allocation to get its suffix. Saves 317kb while running self-test.
	Check return value for CustomAttribute.Resolve

2010-06-08  Sebastien Pouliot  <sebastien@ximian.com>

	* ThreadRocks.cs: Resolving can be expensive so we avoid it 
	whenever possible

2010-06-08  Sebastien Pouliot  <sebastien@ximian.com> 

	* ThreadRocks.cs: Always check HasCustomAttributes before accessing
	a CustomAttributes property (which would allocate an empty collection
	if no custom attributes are present). Memory usage down by 463kb
	while running self-test

2010-06-08  Sebastien Pouliot  <sebastien@ximian.com>

	* Makefile.am: Remove ThreadModel.cs from build
	* ThreadModel.cs: Remove. There's already a copy in Gendarme's 
	framework
	* ThreadRocks.cs: Add using Gendarme.Framework so it can
	access ThreadModelAttribute

2010-06-04  Sebastien Pouliot  <sebastien@ximian.com>

	* DecorateThreadsRule.cs:
	* DontUseLockedRegionOutsideMethodRule.cs:
	* ProtectCallToEventDelegatesRule.cs:
	* ThreadRocks.cs:
 		Apply AvoidUnnecessarySpecializationRule

2010-05-23  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewLockUsedOnlyForOperationsOnVariablesRule.cs: Fix last unit
	test failure when compiled with VS2008 where CSC added some NOP
	instructions.

2010-05-08  Sebastien Pouliot  <sebastien@ximian.com>

	* DecorateThreadsRule.cs: Replace internal type MethodName (which
	did not compile with CSC) and it's data by a simpler method.

2010-04-29  Sebastien Pouliot  <sebastien@ximian.com>

	* DoNotLockOnWeakIdentityObjectsRule.cs: Apply AvoidRepetitiveCallsTo
	PropertiesRule to TypeReference::get_FullName
	* DecorateThreadsRule.cs: Apply AvoidRepetitiveCallsToPropertiesRule
	on MemberReference::get_DeclaringType (11) and TypeReference::get_Name
	(6)

2010-04-22  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewLockUsedOnlyForOperationsOnVariablesRule.cs: Handle case
	when a try handler correspond to the first instruction of a 
	method

2010-04-18  Sebastien Pouliot  <sebastien@ximian.com>

	* ReviewLockUsedOnlyForOperationsOnVariablesRule.cs: Fix rule to
	handle 4.0 Monitor.Enter(object, ref bool) as generated by CSC10
	while retaining compatibility with previous/existing compilers.

2010-04-17  Sebastien Pouliot  <sebastien@ximian.com> 

	* DoubleCheckLockingRule.cs: Ignore calls to Monitor.Enter(object,
	ref bool), introduced in FX4.0, since this rule is applied only
	to code compiled with a runtime earlier than 2.0

2010-04-17  Sebastien Pouliot  <sebastien@ximian.com>

	* DoNotLockOnThisOrTypesRule.cs: Update Analyze signature
	* DoNotLockOnWeakIdentityObjectsRule.cs: Update logic since CSC
	on FX4 use Monitor.Enter(object, ref bool)
	* LockAnalyzerRule.cs: Add a new 'enter' parameter to Analyze
	so its possible to query which Monitor.Enter overload is being
	used.

2010-04-13  Sebastien Pouliot  <sebastien@ximian.com>

	* DecorateThreadsRule.cs: Implement IEquatable<> on MethodName
	as suggested by Gendarme itself (self-test)
	* DontUseLockedRegionOutsideMethodRule.cs, 
	* LockAnalyzerRule.cs,
	* ReviewLockUsedOnlyForOperationsOnVariablesRule.cs:
		Don't assume a MethodReference for FlowControl.Call.
		Calli, while uncommon, would provide a CallSite.

2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>

	* DecorateThreadsRule.cs: Apply MethodCanBeMadeStaticRule
	* DoNotLockOnThisOrTypesRule.cs: Apply PreferEmptyInstanceOverNullRule
	* ThreadModel.cs: Apply MarkEnumerationsAsSerializableRule

2010-01-17  Sebastien Pouliot  <sebastien@ximian.com>

	* ThreadModel.cs: Avoid boxing when concatenating strings

2009-08-25  Jesse Jones  <jesjones@mindspring.com>

	* DontUseLockedRegionOutsideMethodRule.cs: Edited 
	the description.

2009-07-08  Jesse Jones  <jesjones@mindspring.com>

	* *Rule.cs: Edited most of the rule descriptions.

2009-06-10  Jesse Jones  <jesjones@mindspring.com>

	* DecorateThreadsRule.cs, ThreadModel.cs, ThreadRocks.cs, 
	Makefile.am: added new rule.

2009-01-23  Jesse Jones  <jesjones@mindspring.com>

	* DoNotUseThreadStaticWithInstanceFieldsRule.cs, Makefile.am: 
	added new rule.

2009-01-22  Stephane Delcroix  <sdelcroix@novell.com>

	* Makefile.am: removing references that slipped in by mistake.

2009-01-21  Jesse Jones  <jesjones@mindspring.com>

	* WriteStaticFieldFromInstanceMethodRule.cs: Ignore fields
	decorated with [ThreadStatic].

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

	* ProtectCallToEventDelegatesRule.cs: Deal with (null != variable)
	just like we did with (variable != null).

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

	* NonConstantStaticFieldsShouldNotBeVisibleRule.cs: Use HasFields

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

	* ProtectCallToEventDelegatesRule.cs: Change documentation comments
	to make it clear that this does not solve all potential problems
	wrt executing events while they are (possibly) being removed.

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

	* ProtectCallToEventDelegatesRule.cs: New. Rule that checks if calls
	to event delegates are null-protected and without a race condition.
	* Makefile.am: Added the new rule and tests to the build.

2008-11-07  Alan McGovern  <amcgovern@novell.com>

	* Makefile.am:
	* Gendarme.Rules.Concurrency.mdp:
	* Gendarme.Rules.Concurrency.csproj: Activate makefile integration for
	all the rules projects. Remove the old mdp files as they are no
	longer needed.

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

	* DoNotUseMethodImplOptionsSynchronizedRule.cs: New. Rule to warn 
	about method decorated with [MethodImpl(MethodImplOptions.Synchronized)]
	since the runtime lock is similar to a lock(this) or lock(typeof(X))
	* Gendarme.Rules.Concurrency.mdp: Updated MD project file.
	* Makefile.am: Added the new rule to the build.

2008-10-21  Néstor Salceda  <nestor.salceda@gmail.com>

	* Makefile.am: Removed common stuff in order to reduce duplication with
	other Makefiles.

2008-10-21  Cedric Vivier  <cedricv@neonux.com>

	* ReviewLockUsedOnlyForOperationsOnVariables.cs: New.
	Rule to check if a lock section is only used for operations
	that could be better handled by System.Threading.Interlocked class.

2008-10-19  Néstor Salceda  <nestor.salceda@gmail.com>

	* Makefile.am: Added support for generating the documentation files to
	the build process.

2008-10-19  Néstor Salceda  <nestor.salceda@gmail.com>

	* doc/index.xml, doc/ns-Gendarme.Rules.Concurrency.xml,
	doc/Gendarme.Rules.Concurrency: With the new code in the Makefiles we
	don't need to keep the documentation files in the repository.

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

	* DoNotLockOnWeakIdentityObjectsRule.cs: Add [FxCopCompatibility]
	attribute. Use new GetOperandRock to simplify the rule.
	* DontUseLockedRegionOutsideMethodRule.cs: Use OpCodeEngine to 
	ignore methods that do not contain call[virt] instructions.
	* DoubleCheckLockingRule.cs: Only apply rule to assemblies targetting
	runtimes before 2.0 (i.e. 1.x) Use OpCodeEngine to ignore methods that 
	do not contain call[virt] instructions. Update and expand the XML 
	documentation.
	* LockAnalyzerRule.cs: Use OpCodeEngine to ignore methods that do 
	not contain call[virt] instructions.
	* NonConstantStaticFieldsShouldNotBeVisibleRule.cs: Ignore 
	delegates.
	* WriteStaticFieldFromInstanceMethodRule.cs: Use OpCodeEngine to
	check for methods that contains Stsfld (store of static fields). Use 
	Resolve rock on fields.

2008-10-15  Néstor Salceda  <nestor.salceda@gmail.com>

	* doc/: Initial import documentation for the rules which belongs to this
	category.

2008-10-14  Néstor Salceda  <nestor.salceda@gmail.com>

	* DoNotLockOnThisOrTypesRule.cs: Added XML documentation.

2008-10-14  Néstor Salceda  <nestor.salceda@gmail.com>

	* DontUseLockedRegionOutsideMethodRule.cs: Append the Rule suffix to the
	file name, because it's a rule. 
	* Gendarme.Rules.Concurrency.mdp: Updated MD project file.
	* Makefile.am: Added the new file name to the build.

2008-10-14  Néstor Salceda  <nestor.salceda@gmail.com>

	* DontUseLockedRegionOutsideMethod.cs: Added XML documentation.

2008-10-14  Néstor Salceda  <nestor.salceda@gmail.com>

	* DoNotLockOnWeakIdentityObjectsRule.cs: Added XML documentation.

2008-10-06  Néstor Salceda  <nestor.salceda@gmail.com>

	* DoubleCheckLockingRule.cs: Fix a space in the XML documentation.

2008-10-06  Néstor Salceda  <nestor.salceda@gmail.com>

	* DoubleCheckLockingRule.cs: Added XML documentation.
	* NonConstantStaticFieldsShouldNotBeVisibleRule.cs: Added XML
	documentation.
	* WriteStaticFieldFromInstanceMethodRule.cs: Added XML documentation.

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

	* DoNotLockOnThisOrTypesRule.cs: Use TraceBack rocks. Don't ignore
	the rule on static methods (since they could still lock on a Type).
	* DoNotLockOnWeakIdentityObjectsRule.cs: Use new rocks.
	* LockAnalyzerRule.cs: Simplify now that we have InstructionRocks.

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

	* Makefile.am: Start using ../common.make

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

	* NonConstantStaticFieldsShouldNotBeVisibleRule.cs: Remove "public
	const string". Anyway it was not required since it was a "constant"
	message (and [Solution] handle this a lot better).
	* Makefile.am: Rebuild if the framework has changed.

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

	* DoNotLockOnThisOrTypesRule.cs: New. Rule to report when lock(this)
	or lock(typeof(X)) is being used.
	* DoNotLockOnWeakIdentityObjectsRule.cs: New. Rule to report when
	a lock is done on an object with a weak identity.
	* LockAnalyzerRule.cs: Base class for both new rules.
	* Gendarme.Rules.Concurrency.mdp: Update MD project file
	* Makefile.am: Add new rules/tests to build.

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

	* DontUseLockedRegionOutsideMethod.cs: Override Initialize to avoid
	executing the rule unless the current module use the Monitor class.

2008-05-05  Andres G. Aragoneses <aaragoneses@novell.com> 

	* DoubleCheckLockingRule.cs: More concrete link.

2008-05-05  Andres G. Aragoneses <aaragoneses@novell.com> 

	* DoubleCheckLockingRule.cs: Add an informative comment.

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

	* DontUseLockedRegionOutsideMethod.cs: Add missing reporting (not 
	very accurate now) and simplified logic a bit while making it work 
	with my new test case.

2008-04-26  Andres G. Aragoneses <aaragoneses@novell.com> 

	* Gendarme.Rules.Concurrency.mdp, DontUseLockedRegionOutsideMethod.cs:
	  My first rule with its tests! It's very simple but more will come
	  (noted in the TODO's). I hope it works because I cannot check it
	  right now, the Gendarme.Tests are failing compilation for me.

2008-04-11  Nestor Salceda  <nestor.salceda@gmail.com>

	* NonConstantStaticFieldsShouldNotBeVisibleRule.cs: Fix the spelling
	error in the error message.

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

	* DoubleCheckLockingRule.cs: Optimization by using Initialize 
	(mainly) and by removing allocations/using generic collections.
	* Makefile.am: Add reference to Test.Rules.dll for unit tests

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

	* DoubleCheckLockingRule.cs
	* NonConstantStaticFieldsShouldNotBeVisibleRule.cs
	* WriteStaticFieldFromInstanceMethodRule.cs:
		Update rules wrt framework changes.

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

	* Gendarme.Rules.Concurrency.xml.in: Fix copy-paste mistake for 
	NonConstantStaticFieldsShouldNotBeVisibleRule.
	[Backport of r95541]

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

	* NonConstantStaticFieldsShouldNotBeVisibleRule.cs: New. Rule that
	warns about non-constant static fields since their access needs to be
	synchronized in multithreaded applications [Andreas Noever]
	* Gendarme.Rules.Concurrency.xml.in: Add new rule description.
	* Makefile.am: Add rule/test to the build.

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

	* DoubleCheckingLockingRule.cs: Use new Location ctor. Delay 
	Hashtable creation a bit.
	* WriteStaticFieldFromInstanceMethodRule.cs: Use new Location ctor.
	Don't create MessageCollection until needed.

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

	* DoubleCheckingLockingRule.cs: Turn some methods to static.

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

	* DoubleCheckingLockingRule.cs: Extracted a method for return the error
	messages.  This fixes the AvoidLongMethod violation in self-test.  The
	source now conforms the Mono style.

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

	* Gendarme.Rules.Concurrency.mdp: Update project file.

2006-11-11  Sebastien Pouliot  <sebastien@ximian.com>

	* Gendarme.Rules.Concurrency.mdp: Add new rule to MonoDevelop project.
	* Gendarme.Rules.Concurrency.xml.in: Add description and information
	about the new WriteStaticFieldFromInstanceMethodRule rule.
	* Makefile.am: Add WriteStaticFieldFromInstanceMethodRule rule and 
	tests to the build.
	* WriteStaticFieldFromInstanceMethodRule.cs: New rule.

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.Concurrency.csproj: Included ChangeLog
	* DoubleCheckLockingRule.cs: Migrated untyped IList messages 
	  collection to typed MessageCollection class.

2006-07-31  Sebastien Pouliot  <sebastien@ximian.com>

	* Gendarme.Rules.Concurrency.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 ;-)
