You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2014/08/27 00:43:39 UTC

[08/51] [partial] Refactored the PMD Maven build - Adjusted the directory structure - Fixed a lot of compile problems - Fixed the maven setup - Made PMD build with Flexmojos 7.1.0 and Apache Flex 4.13.0 - Fixed a few UnitTests

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/event.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/event.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/event.xml
new file mode 100644
index 0000000..57f7c50
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/event.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Event Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Event ruleset contains a collection of rules related to event bad practices.
+	</description>
+	
+	<rule class="com.adobe.ac.pmd.rules.event.EventMissingCloneFunctionRule"
+		message="The clone event must be overiden in a custom event">
+		<description>When creating your own custom Event class, you must override the inherited Event.clone() method in order for it to duplicate the properties of your custom class. If you do not set all the properties that you add in your event subclass, those properties will not have the correct values when the event is cloned. This is important because the Flex SDK clones events whenever redispatching takes place. </description>
+		<priority>1</priority>
+		<example>
+public class FirstCustomEvent   // VIOLATION - clone method is missing
+{
+   public var lala : String;
+   
+   public function FirstCustomEvent()
+   {         
+   }
+}
+      </example>
+	</rule>
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.event.PublicVariableInCustomEventRule"
+		message="No public variables should be inside a custom event. This variable ({0}) is public">
+		<description>In order to improve encapsulation in your custom event, it is better not to have public variable in your event. Prefer having read-only attributes, set by the event constructor.</description>
+		<priority>3</priority>
+		<example>
+public class FirstCustomEvent   
+{
+   public var lala : String; // VIOLATION
+   
+   public function FirstCustomEvent()
+   {         
+   }
+}      
+	   </example>
+	</rule>
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.event.ConstructorDispatchingEventRule"
+		message="An event is dispatched in a constructor">
+		<description>This is pointless, since event listeners cannot be attached to an object before it has been constructed, so nothing can ever hear the event</description>
+		<priority>1</priority>
+		<example>
+public class BigModel   
+{
+   public function BigModel()
+   {    
+      dispatchEvent( new Event( "pointlessEvent" ) );     
+   }
+}
+		</example>
+	</rule>
+	<rule class="com.adobe.ac.pmd.rules.event.DefaultEventNameRule"
+		message="Event name should be set explicitly">
+		<priority>3</priority>
+		<example>
+public class DefaultNameEvent extends Event	
+{
+	public function DefaultNameEvent( type : String = "" )
+	{
+		super( type );
+	}
+}		
+		</example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.event.DispatchHardCodedEventNameRule"
+		message="DispatchEvent function must dispatch constant strings">
+		<description>You should not dispatch a plain string. If you rename this string, you need to replace the string listener as well. Use constants instead</description>
+		<priority>1</priority>
+		<example>
+public class Foo 
+{
+   public function bar() : void
+   {
+      dispatch( new Event( "myHardCodedEvent" ) ); // VIOLATION
+   }
+}
+      </example>
+	</rule>
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.event.ListenForHardCodedEventNameRule"
+		message="addEventListener must not contain hard coded strings">
+		<description>You should not listen for a plain string. If you rename this string, you need to replace the string listener as well. Use constants instead</description>
+		<priority>1</priority>
+		<example>
+public class Foo 
+{
+   public function bar() : void
+   {
+      addEventListener( "myHardCodedEvent", handleMyHardCodedEvent ); // VIOLATION
+   }
+}      
+      </example>
+	</rule>
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.event.UnboundTypeInMetadataRule"
+		message="This type ({0}) was not found within the scope against which PMD was run">
+		<priority>1</priority>
+		<example>
+[Event(name="myTypeEvent",type="UnknownType")] // VIOLATION
+public class UnboundMetadata
+{
+}		
+		</example>
+	</rule>
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.event.UntypedEventMetadataRule"
+		message="This event type is not specified">
+		<description>Specifying a type will allow Flash builder and the class to have this event exposed in its API</description>
+		<priority>3</priority>
+		<example>
+[Event(name="myTypeEvent")] // VIOLATION
+public class UnTypedMetadata
+{
+}		
+		</example>
+	</rule>
+	
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/indentation.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/indentation.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/indentation.xml
new file mode 100644
index 0000000..dd423a8
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/indentation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Indentations Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description/>
+	
+	<rule class="com.adobe.ac.pmd.rules.style.TabUsedAsIndentorRule" message="Tabulations are not accepted for indentation. Please use spaces instead.">
+		<priority>3</priority>
+	</rule>
+		
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/maintanability.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/maintanability.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/maintanability.xml
new file mode 100644
index 0000000..5864f3a
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/maintanability.xml
@@ -0,0 +1,236 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Maintanability Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Maintanability ruleset contains a collection of good practices around Maintanability.
+	</description>
+	
+	<rule since="1.1" class="com.adobe.ac.pmd.rules.maintanability.OnlyOneReturnRule" message="A method should have only one exit point, and that should be the last statement in the method">
+		<priority>3</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.maintanability.AlertShowRule" message="Do not call Alert.show directly">
+		<description>You should not Alert.show() directly. If an error occurred in the system, you should probably use an ErrorManager to have a consistent way to manage those errors.</description>
+		<priority>1</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.ExcessiveImportRule"
+		message="A high number of imports can indicate a high degree of coupling within an object. ({0} maximum but {1} actually)">
+		<description>A high number of imports can indicate a high degree of coupling within an object. Rule counts the number of unique imports and reports a violation if the count is above the user defined threshold.</description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>15</value>
+			</property>
+		</properties>
+		<example>
+import blah.blah.Baz;
+import blah.blah.Bif;
+// 18 others from the same package elided
+public class Foo 
+{
+   public function doWork() : void 
+   {
+   }
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.TrueFalseConditionRule"
+		message="This test contains a hard coded boolean value. You could remove it by having '{0}'">
+		<priority>3</priority>
+		<example>
+if ( true ) // VIOLATION
+{
+   if ( myCondition == false ) // VIOLATION
+   {
+   }
+}		
+		</example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.AvoidUsingPublicStaticFieldRule"
+	message="If this field ({0}) was meant to be a constant, make it constant. Otherwise, if it is used as a global variable, you may want to redesign this class">
+		<priority>3</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.DynamicClassRule" message="A class must not be dynamic">
+		<description>When using dynamic classes, you cannot control how the developer will use your class. It makes refactoring really difficult</description>
+		<priority>1</priority>
+		<example>
+dynamic public class DynamicObject // VIOLATION
+{
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.forbiddentypes.UseObjectTypeRule"
+		message="Do not use Object class">
+		<description>It is a bad practice to use the dynamic class Object. Prefer using strongly typed object, or marker interface in order to avoid silent compilation errors while refactoring</description>
+		<priority>1</priority>
+		<example>
+public class Foo
+{
+   public var bar : Object; // VIOLATION      
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.forbiddentypes.UseDictionaryTypeRule"
+		message="Do not use Dictionnary class">
+		<description>It is a bad practice to use the dynamic class Dictionary. Prefer using strongly typed object, or marker interface in order to avoid silent compilation errors while refactoring</description>
+		<priority>1</priority>
+		<example>
+public class Foo
+{
+   public var bar : Dictionnary; // VIOLATION      
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.NonStaticConstantFieldRule"
+		message="A constant field should be static ({0})">
+		<description>
+      </description>
+		<priority>1</priority>
+		<example>
+public class MyObject {
+   public static const MY_STATIC_CONSTANT : String = "myStaticConstant";
+   public const MY_NON_STATIC_CONSTANT : String = "myStaticConstant"; // VIOLATION
+}     
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.forbiddentypes.UseGenericTypeRule"
+		message="Use strongly typed objects instead of *">
+		<description></description>
+		<priority>1</priority>
+		<example>
+public class Foo
+{
+   public var bar : *; // VIOLATION      
+}
+        </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.UselessOverridenFunctionRule"
+		message="This method is empty. This should be removed ({0})">
+		<description>This function is not needed.</description>
+		<priority>3</priority>
+		<example>
+override protected function createChildren() : void
+{
+   super.createChildren();
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.AvoidProtectedFieldInFinalClassRule"
+		message="Protected accessors are useless in a final class. Make it private ({0})">
+		<priority>3</priority>
+		<example>
+final public class Foo
+{
+   protected var bar : int; // VIOLATION      
+}
+        </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.AvoidUsingWithKeyWordRule"
+		message="You should not use the with keyword. It does not help readability">
+		<priority>3</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.ArrayFieldWithNoArrayElementTypeRule"
+		message="ArrayElementType metadata is not specified for this array-type field ({0})">
+		<description>
+        </description>
+		<priority>3</priority>
+		<example>
+public class ArrayVO {
+   public var items:Array; //VIOLATION
+
+   [ArrayElementType("model.vo.MenuItemVO")]
+   public var menuItems : Array;
+}      
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.ClassAndExtensionAreIdenticalRule"
+		message="The extension name is the same as the class name">
+		<description/>
+		<priority>3</priority>
+		<example>
+package com.MyCompany
+{
+   public class SomeClass extends mx.SomeClass // VIOLATION
+   {
+   }
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.ProtectedStaticMethodRule"
+		message="This method ({0}) should be private">
+		<description/>
+		<priority>3</priority>
+		<example>
+protected static function foo() : void // VIOLATION
+{
+}
+		</example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.EmptyStatementRule"
+		message="This statement is empty">
+		<description/>
+		<priority>5</priority>
+		<example>
+protected function foo() : void
+{
+   var i : int = 0;
+   
+   ; // VIOLATION
+}
+		</example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.maintanability.ReferenceToVariableBindingFromItsInitializerRule"
+		message="The initializer refers to its variable. Its value will be null.">
+		<priority>1</priority>
+		<example>
+package
+{
+	public class Foo
+	{
+		public static const XYZ:String = XYZ; // meant to be "xyz"
+	}
+} 		
+		</example>
+	</rule>
+	<rule class="com.adobe.ac.pmd.rules.maintanability.AvoidUseOfAsKeywordRule"
+		message="Enforce that as is not used (silently ignores the cast and nulls the property when the type is wrong)">
+		<priority>5</priority>
+	</rule>
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/multitouch.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/multitouch.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/multitouch.xml
new file mode 100644
index 0000000..3b94f2e
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/multitouch.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Multitouch screen Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The MultiTouch ruleset contains a collection of good practices when developping multitouch applications.
+	</description>
+	
+	<rule since="1.2" class="com.adobe.ac.pmd.rules.multiscreen.AvoidRollMouseEventRule" 
+			message="Roll mouse events are not getting caught by a multi-touch device.">
+		<priority>1</priority>
+	</rule>
+
+	<rule since="1.2" class="com.adobe.ac.pmd.rules.multiscreen.AvoidTooltipRule" 
+			message="Tooltip cannot be visible on a multi-touch device.">
+		<priority>1</priority>
+	</rule>
+
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/naming.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/naming.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/naming.xml
new file mode 100644
index 0000000..fe65e44
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/naming.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Naming Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Basic As3 Ruleset contains a collection of good practices which everyone should follow.
+  </description>
+  
+	<rule class="com.adobe.ac.pmd.rules.naming.TooShortVariableRule"
+		message="This variable name is too short ({0} characters minimum, but {1} actually)">
+		<description>Detects when a field, local, or parameter has a very short name.</description>
+		<priority>5</priority>
+		<properties>
+			<property name="minimum">
+				<value>3</value>
+			</property>
+		</properties>
+		<example>
+public class Something 
+{
+   private var q : int = 15; // VIOLATION - Field
+
+   public function foo( as : String ) : void // VIOLATION - Formal 
+   {
+      var r : int = 20 + q; // VIOLATION - Local
+   }
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.naming.PackageCaseRule"
+		message="A package name should be lower case ({0})">
+		<description>Detects when a package definition contains upper case characters.</description>
+		<priority>3</priority>
+		<example>
+         <![CDATA[
+package com.MyCompany  // VIOLATION <- should be lower case name
+{
+   public class SomeClass 
+   {
+   }
+}
+         ]]>
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.naming.VariableNameEndingWithNumericRule"
+		message="Using digits at the end of a symbol does not help understanging the meaning of it. ({0})">
+		<priority>3</priority>
+		<example>
+		<![CDATA[
+public class SomeClass 
+{
+   public var correctField1 : int = 0; // VIOLATION <- numeric suffix is forbidden
+}		
+		]]>
+		</example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.naming.PropertyHiddenByLocalVariableRule"
+		message="A class property is hidden by this local variable ({0})">
+		<priority>3</priority>
+		<example>
+public class SomeClass 
+{
+   public var myField : int = 0;
+   
+   public function foo() : void
+   {
+   	var myField : int = 9; // VIOLATION
+   }
+}
+		</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.naming.IncorrectClassCase"
+		message="A class name must start by an uppercase character">
+		<description></description>
+		<priority>3</priority>
+		<example>
+public class foo // VIOLATION
+{
+}      
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.naming.WronglyNamedVariableRule"
+		message="This variable ({0}) seems to be incorrectly named. Let your creativity flow">
+		<priority>3</priority>	
+		<example>
+         <![CDATA[
+public class SomeClass 
+{
+   public var myField : int = 0; // VIOLATION <- my prefix is forbidden
+   
+   public function tmpFoo() : void // VIOLATION <- tmp prefix is forbidden
+   {
+   	var tempFoo : int = 9; // VIOLATION <- temp prefix is forbidden
+   }
+}		
+		]]>
+		</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.naming.BooleanAttributeShouldContainIsHasRule"
+		message="Differentiate the Boolean variables from other variable types ({0}); for example: canAnimate, isConnected, or hasChildren.">
+		<priority>5</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.naming.CapitalizeConstantsRule"
+		message="Constant variables should be in all CAPS with each word separated by an underscore ({0})">
+		<priority>3</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.naming.InterfaceNamingRule"
+		message="Interface name should start with I">
+		<priority>1</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.naming.TooLongFunctionNameRule"
+		message="This function name ({0}) is too long ({1} characters minimum, but {2} actually)">
+		<priority>5</priority>
+		<properties>
+			<property name="minimum">
+				<value>3</value>
+			</property>
+		</properties>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.naming.IncorrectEventHandlerNameRule"
+		message="This event handler name ({0}) is not correct. You should use [{1}] as prefix and [{2}] as suffix">
+		<priority>5</priority>
+		<properties>
+			<property name="prefix">
+				<value>on</value>
+			</property>
+			<property name="suffix">
+				<value></value>
+			</property>
+		</properties>
+	</rule>
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/parsley.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/parsley.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/parsley.xml
new file mode 100644
index 0000000..b29a92e
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/parsley.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset 
+	name="Parsley Rules" 
+	xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
+	>
+
+	<description>
+      The Parsley Ruleset contains a collection of good practices related to Parsley.
+    </description>
+    
+	<rule 
+		class="com.adobe.ac.pmd.rules.parsley.InaccessibleMetaDataRule"
+		message="Parsley metadata should not be placed on inaccessible members.">
+		<description>Parsley can only process metadata that is placed onto public members.</description>
+		<priority>1</priority>
+		<example>
+[MessageHandler]
+private function doSomething() : void // VIOLATION 
+{      
+}      
+      </example>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.parsley.MismatchedManagedEventRule"
+		message="Managed events should have matching [Event] metadata">
+		<description>Each managed event should have matching [Event] metadata.</description>
+		<priority>1</priority>
+		<example>
+[Event(name="message", type="my.package.MyEvemt")]
+[ManagedEvents(names="messag")] // VIOLATION
+public class MyClass  
+{      
+}      
+      </example>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.parsley.MessageInterceptorSignatureRule"
+		message="The signature of the message interceptor {0} is not correct. {1}.">
+		<description></description>
+		<priority>1</priority>
+		<example>
+		<![CDATA[
+[MessageInterceptor(type="a.b.MyMessage")]
+public function messageInterceptor( processor : MessageProcessor ) : void
+{
+   processor.proceed();
+}
+
+[MessageInterceptor(type="a.b.MyMessage")]
+public function messageInterceptor() : void // VIOLATION
+{
+}
+
+[MessageInterceptor(type="a.b.MyMessage")]
+public function messageInterceptor( type : MyMessage ) : void // VIOLATION
+{
+   type.something();
+}
+
+[MessageInterceptor(type="a.b.MyMessage")]
+public function messageInterceptor( processor : MessageProcessor, type : MyMessage ) : void // VIOLATION
+{
+}]]>
+              </example>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.parsley.MisplacedMetaDataRule"
+		message="This metadata {0} is misplaced">
+		<description></description>
+		<priority>1</priority>
+		<example>
+        </example>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.parsley.RedundantMessageHandlerTypeAttributeRule"
+		message="This type metadata argument is redundant with the handler argument type">
+		<description></description>
+		<priority>3</priority>
+		<example>
+		<![CDATA[
+[MessageHandler(type="a.b.MyMessage")] // VIOLATION
+public function doSomething( message : MyMessage ) : void
+{
+   message.toString();
+}]]>
+        </example>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.parsley.RedundantMethodAttributeRule"
+		message="This method metadata argument is redundant with the handler name">
+		<priority>3</priority>
+		<example> <![CDATA[
+[MessageHandler(method="doSomething")] // VIOLATION
+public function doSomething( message : MyMessage ) : void
+{
+   message.toString();
+}]]>
+        </example>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.parsley.UnknownMetaDataAttributeRule"
+		message="This metadata attribute {0} is unknown">
+		<description></description>
+		<priority>1</priority>
+		<example>
+		<![CDATA[
+[AsyncInit(x="y")] // VIOLATION
+public class UnknownMetaDataAttribute
+{
+   [Inject(x="y")] // VIOLATION
+   public var inject;
+
+   [MessageHandler(x="y")] // VIOLATION
+   public function messageHandler() : void
+   {
+   }
+}]]>
+        </example>
+	</rule>
+
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/performance.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/performance.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/performance.xml
new file mode 100644
index 0000000..fc268e1
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/performance.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Performance Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      This Ruleset contains a collection of good practices related to the performance (CPU and memory).
+  </description>
+  
+	<rule class="com.adobe.ac.pmd.rules.performance.DynamicFiltersUsedInPopup"
+		message="A popup should not use dynamic filters">
+		<description>Prefer using embed filters in assets</description>
+		<priority>3</priority>
+		<example>
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.performance.CyclomaticComplexityRule"
+		message="This method is too complex. Maximum complexity is {0}, but its cyclomatic complexity was {1}">
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>10</value>
+			</property>
+		</properties>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.performance.HeavyConstructorRule"
+		message="Constructor must be as lightweight as possible. No control statement allowed, whereas a cyclomatic complexe of {0} has been detected">
+		<description><![CDATA[The Just-In-Time compiler does not compile constructors. Make them as lightweight as possible, or move the complexity of the code to a method called by the constructor. Then the complexity will be compiled by the JIT.]]></description>
+		<priority>3</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.performance.CreationPolicySetToAllRule"
+		message="creationPolicy to ALL impacts the performance significantly">
+		<priority>1</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.performance.BindableClassRule"
+		message="Globally bindable classes can lead to unexpected behaviour especially when you have a setter to a property, and hits the performance of the application">
+		<priority>3</priority>	
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.performance.AvoidInstanciationInLoopRule"
+		message="Instanciating a variable in a loop can be expensive">
+		<description></description>
+		<priority>5</priority>
+		<example>
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.performance.AvoidDeclarationInLoopRule"
+		message="Declaring a variable in a loop can be expensive">
+		<description></description>
+		<priority>5</priority>
+		<example>
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.performance.DeeplyNestedIfRule"
+		message="Nested if statements are not a good design">
+		<priority>3</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.performance.RecursiveStyleManagerRule"
+		message="Detect calls to the StyleManager that don’t pass “false” as the second parameter">
+		<description>A recursive style manager call can be a very expensive operation, causing parts of the UI to flicker visibly. Instead it is preferable to defer the creation of parts of the UI that depend on a runtime CSS SWF until after the SWF has been loaded. In this case a recursive call is not required.</description>
+		<priority>3</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.performance.AvoidUsingMathFloorRule"
+		message="VM will automatically do the rounding when using an int, so it should be : var position:int = floatingValue;">
+		<priority>5</priority>
+		<example>
+var position:Number = Math.floor ( floatingValue ); 
+		</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.performance.AvoidUsingMathCeilRule"
+		message="VM will automatically do the rounding when using an int, so should be : var position:int = floatingValue + 1;">
+		<priority>5</priority>
+		<example>
+var position:Number = Math.ceil ( floatingValue );
+		</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.performance.AvoidUsingMathRoundRule"
+		message="manual calculation will be much faster : var position:int = (floatingValue > 0.0) ? int(floatingValue + 0.5) : int(floatingValue - 0.5);">
+		<priority>5</priority>
+		<example>
+var position:Number = Math.round ( floatingValue );
+		</example>
+	</rule>
+
+</ruleset>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/security.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/security.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/security.xml
new file mode 100644
index 0000000..02172a7
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/security.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Security Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Security AS3 Ruleset contains a collection of best practices related to secure code.
+    </description>
+    
+	<rule class="com.adobe.ac.pmd.rules.security.InsecureExactSettingsRule"
+		message="Security.exactSettings is set to an insecure value">
+		<description>The security.exactSettings value should remain set at the default true value. Setting this value to false could make the SWF vulnerable to cross-domain attacks.</description>
+		<priority>1</priority>
+		<example>
+			//exactSettings should be left as the default
+   			Security.exactSettings = true;
+      	</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.security.AllowAllSecureDomainRule"
+		message="Security.allowDomain is set to an insecure value">
+		<description>The security.allowDomain value of "*" will allow any domain to cross-script into the domain of this SWF and exercise its functionality.</description>
+		<priority>1</priority>
+		<example>
+			//The allowDomain settings should be specific
+   			Security.allowDomain("www.example.org");
+      	</example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.security.LocalConnectionStarRule"
+		message="LocalConnection.allowDomain is set to an insecure value">
+		<description>The LocalConnection.allowDomain value of "*" will allow any domain to connect to this SWF and call its functions.</description>
+		<priority>1</priority>
+		<example>
+			//The allowDomain setting should be specific
+   			LocalConnection.allowDomain("www.example.org");
+      	</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.security.AllowInsecureDomainRule"
+		message="Potentially unnecessary use of allowInsecureDomain">
+		<description>Using allowInsecureDomain will allow untrusted content from an HTTP site to inject data into a trusted HTTPS connection which may comprimise the integrity of the HTTPS connection. The use of allowDomain is preferred.</description>
+		<priority>1</priority>
+		<example>
+			//Use the allowDomain setting instead
+   			LocalConnection.allowDomain("www.example.org");
+			Security.allowDomain("www.example.org");
+      	</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.security.LSOSecureFalseRule"
+		message="The secure flag is set to false">
+		<description>If this SWF is being served over HTTPS then the secure flag should be set to true. This can help prevent sensitive SSL protected information from being shared within insecure HTTP content. If this SWF is served over HTTP then you can ignore this warning.</description>
+		<priority>5</priority>
+		<example>
+			//Setting secure values for LSOs
+   			LSO.getLocal(name, null, true);
+      	</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.security.ImportLoadBestPracticeRule"
+		message="Set allowCodeImport to false when import loading images">
+		<description>If this loader is only intended to load image files (GIF,JPG,PNG) then be sure to set the allowCodeImport value to false. Setting this flag will reduce the chances of an untrusted SWF gaining access to your site. If your intent is to load a SWF, the URL for the request is a static value for a trusted site and/or you have already set the allowCodeImport flag, then you can ignore this warning.</description>
+		<priority>5</priority>
+	</rule>
+	
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/sizing.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/sizing.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/sizing.xml
new file mode 100644
index 0000000..78337d1
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/sizing.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Sizing Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Sizing As3 Ruleset contains a collection of good practices related to code sizing.
+    </description>
+    
+	<rule class="com.adobe.ac.pmd.rules.sizing.TooManyFunctionRule"
+		message="Too many methods detected ({0} maximum, but {1} actually)">
+		<description>A class with too many methods is probably a good suspect for refactoring, in order to reduce its complexity and find a way to have more fine grained objects.</description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>10</value>
+			</property>
+		</properties>
+		<example>
+   public class Foo 
+   {
+      public function doWork() : void {}
+      public function doMoreWork() : void {}
+      public function doWorkAgain() : void {}
+      // [... more more public methods ...]
+   }
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.sizing.TooLongFunctionRule"
+		message="This function is far too long ({0} maximum, but {1} actually)">
+		<description>Violations of this rule usually indicate that the method has too much responsibility. Try to reduce the method size by creating helper methods and removing any copy/pasted code.</description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>20</value>
+			</property>
+		</properties>
+		<example>
+   public class Foo 
+   {
+      public function doSomething() : void
+      {
+         System.out.println("Hello world!");
+         System.out.println("Hello world!");
+         // 98 copies omitted for brevity.
+      }
+   }
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.sizing.TooLongSwitchCaseRule"
+		message="Long switch case detected ({0} lines maximum, but {1} actually)">
+		<description>A switch case statement should be either empty, or contain a break, or call another method.</description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>3</value>
+			</property>
+		</properties>
+		<example>
+   public class Bar   
+   {
+      public function foo() : void
+      {
+          var i : int = 4;
+          
+          switch( i )
+          {
+             case 1:
+                handleFirstCase();
+                break;
+             case 2: // VIOLATION
+                googleResquest.url = "";
+                handleSecondCaseFirstPart();
+                handleSecondCaseSecondPart();
+                break;
+          }
+      }
+   }
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.sizing.TooManyParametersRule"
+		message="Long parameter list detected ({0} maximum, but {1} actually)">
+		<description>Long parameter lists can indicate that a new object should be created to wrap the numerous parameters.  Basically, try to group the parameters together.
+      </description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>4</value>
+			</property>
+		</properties>
+		<example>
+   public class Foo 
+   {
+      public function addData( p0 : int, p1 : int, p2 : int, p3 : int, p4 : int, p5 : int,
+                                             p6 : int, p7 : int, p8 : int, p9 : int, p10 : int ) : void 
+      {
+      }
+   }
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.sizing.TooManyPublicRule"
+		message="Too many public fields or functions detected ({0} maximum, but {1} actually)">
+		<description>A large number of public methods and attributes declared in a class can indicate the class may need to be broken up as increased effort will be required to thoroughly test it.</description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>10</value>
+			</property>
+		</properties>
+		<example>
+   public class Foo 
+   {
+      public var value : String;
+      public var something : Bar;
+      public var variable : Variable;
+
+      // [... more more public attributes ...]
+
+      public function doWork() : void {}
+      public function doMoreWork() : void {}
+      public function doWorkAgain() : void {}
+
+      // [... more more public methods ...]
+   }
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.sizing.TooManyFieldsRule"
+		message="Too many field detected ({0} maximum, but {1} actually)">
+		<description>Classes that have too many fields could be redesigned to have fewer fields, possibly  through some nested object grouping of some of the information.  For example, a class with  city/state/zipcode fields could instead have one Address field.</description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>5</value>
+			</property>
+		</properties>
+		<example>
+   public class Person 
+   {
+      private var one : String;
+      private var two : int;
+      private var three : int;
+
+      [... many more public fields ...]
+
+   }      
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.sizing.TooManyFieldInVORule"
+		message="Too many field detected ({0} maximum, but {1} actually)">
+		<priority>3</priority>
+	</rule>
+	
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/style.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/style.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/style.xml
new file mode 100644
index 0000000..776bc04
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/style.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Style Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Architecture ruleset contains a collection of good practices around architecture.
+	</description>
+
+	<rule class="com.adobe.ac.pmd.rules.style.ConstructorNonEmptyReturnTypeRule"
+		message="A constructor should not have a return type">
+		<description>Even if this is syntactically correct, there should not be a return type for a constructor.</description>
+		<priority>5</priority>
+		<example>
+   public class VoidConstructor   
+   {
+      public function VoidConstructor() : void // VIOLATION
+      {         
+      }      
+   }
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.style.OverLongLineRule"
+		message="Too long line ({0} maximum, but {1} actually)">
+		<description></description>
+		<priority>5</priority>
+		<properties>
+			<property name="maximum">
+				<value>200</value>
+			</property>
+		</properties>
+		<example>
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.style.ImportFromSamePackageRule"
+		message="Imports from the same package are not necessary">
+		<description></description>
+		<priority>5</priority>
+		<example>
+package com.adobe.ac
+{
+   import com.adobe.ac.MyModel; // VIOLATION HERE
+
+   public class BigModel   
+   {
+      public var model : MyModel = null;
+   }
+}         
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.style.CopyrightMissingRule"
+		message="The copyright header is missing in this file">
+		<priority>5</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.style.BadFormatLoggerRule"
+		message="The logger is not correctly formatted because {0}">
+		<description></description>
+		<priority>5</priority>
+		<example>
+      </example>
+	</rule>
+		
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/switches.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/switches.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/switches.xml
new file mode 100644
index 0000000..64d969c
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/switches.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Switches Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Architecture ruleset contains a collection of good practices around architecture.
+	</description>
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.switchrules.SwitchStatementsShouldHaveDefaultRule"
+		message="A switch statement does not contain a default statement">
+		<description>Switch statements should have a default label in order to detect corner cases.</description>
+		<priority>1</priority>
+		<example>
+public class Foo 
+{
+   public funciton bar() : void 
+   {
+      var  x : int = 2;
+      switch (x) 
+      {
+         case 2: var j : int = 8;
+      }
+   }
+}     
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.switchrules.NestedSwitchRule"
+		message="Switch must not be nested">
+		<description>As a general practice, switch statement should not be used. Prefer using inheritance. It is even harder to read when switch statements are nested.</description>
+		<priority>3</priority>
+		<example>
+public function foo( a : Number, b : Number ) : void
+{
+    switch( a )
+    {
+       case 1:
+          break;
+       case 2:                   
+          switch ( b ) 
+          {
+            case 3 :
+               break;
+            case 4 :
+               break;
+          }
+          break;                     
+    }
+}
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.switchrules.NonBreakableSwitchCaseRule"
+		message="Switch case must include break statement">
+		<priority>1</priority>
+		<example>
+switch(event.type){
+  case GoogleSearchPanel.LAUNCH_GOOGLE_WEB_SEARCH:
+	  googleResquest.url = ""; // VIOLATION
+  case GoogleSearchPanel.LAUNCH_GOOGLE_IMAGE_SEARCH:                   
+  case GoogleSearchPanel.LAUNCH_GOOGLE_IMAGE_SEARCH2:                   
+	  googleResquest.url = "";
+	  break;
+  default:
+	  return;
+}
+      </example>
+	</rule>
+
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.switchrules.TooFewBrancheInSwitchStatementRule"
+		message="There are too few branches in this switch statement ({0} minimum, but {1} actual)">
+		<description>Switch statements are designed for complex branches, and allow branches to share treatment. Using a switch for only 2 branches is ill advised, as switches are not as easy to understand as if. In this case, it's most likely is a good idea to use a if statement</description>
+		<priority>5</priority>
+		<properties>
+			<property name="minimum">
+				<value>3</value>
+			</property>
+		</properties>
+		<example>
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.switchrules.IdenticalSwitchCasesRule"
+		message="Two switch cases should not be identical">
+		<priority>1</priority>
+	</rule>
+		
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unittest.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unittest.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unittest.xml
new file mode 100644
index 0000000..0cb6808
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unittest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="FlexUnit Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The FlexUnit Ruleset contains a collection of good practices related to FlexUnit (1 and 4).
+    </description>
+    
+	<rule class="com.adobe.ac.pmd.rules.flexunit.EmptyUnitTest"
+		message="A test should contain at least one assertion">
+		<priority>3</priority>
+	</rule>
+	
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unused.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unused.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unused.xml
new file mode 100644
index 0000000..35ed526
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/unused.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<ruleset name="Unused Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	
+	<description>
+      The Architecture ruleset contains a collection of good practices around architecture.
+	</description>
+	
+	<rule class="com.adobe.ac.pmd.rules.unused.UnusedParameterRule"
+		message="This parameter ({0}) of this function is not used">
+		<description>
+      </description>
+		<priority>3</priority>
+		<example>
+      public function foo( param1 : Number, param2 : Number, param3 : Number, param4 : Number, param5 : Number ) : void // 4 violations
+      {
+         var i : int = param1;
+      }
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.unused.UnusedLocalVariableRule"
+		message="This variable ({0}) is not used">
+		<description>
+      </description>
+		<priority>3</priority>
+		<example>
+      public function foo() : void
+      {
+         var i : int = 0;// 1 violation
+      }
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.unused.UnusedPrivateMethodRule"
+		message="This private method ({0}) does not seem to be used">
+		<description>
+      </description>
+		<priority>1</priority>
+		<example>
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.unused.UnusedFieldRule"
+		message="This private attribute ({0}) does not seem to be used">
+		<description>
+      </description>
+		<priority>1</priority>
+		<example>
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.unused.EmptyPrivateMethodRule"
+		message="This private method ({0}) is used but its content is empty">
+		<description>
+      </description>
+		<priority>1</priority>
+		<example>
+      </example>
+	</rule>
+		
+</ruleset>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/MonkeyPatchingRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/MonkeyPatchingRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/MonkeyPatchingRuleTest.java
new file mode 100644
index 0000000..cb73566
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/MonkeyPatchingRuleTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.architecture;
+
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.AbstractFlexRuleTest;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class MonkeyPatchingRuleTest extends AbstractFlexRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "mx.controls.DateChooser2.as", new ViolationPosition[]
+      { new ViolationPosition( 0 ) } ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new MonkeyPatchingRule();
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/UseInternalClassOutsideApiClassTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/UseInternalClassOutsideApiClassTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/UseInternalClassOutsideApiClassTest.java
new file mode 100644
index 0000000..1691f2f
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/UseInternalClassOutsideApiClassTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.architecture;
+
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRuleTest;
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class UseInternalClassOutsideApiClassTest extends AbstractAstFlexRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "functional.func2.restricted.Func2RestrictedClass.as", new ViolationPosition[]
+       { new ViolationPosition( 34 ) } ),
+                  new ExpectedViolation( "functional.func1.restricted.Func1RestrictedClass.as",
+                                         new ViolationPosition[]
+                                         { new ViolationPosition( 35 ) } ),
+                  new ExpectedViolation( "functional.func2.api.Func2ExposedClass.as", new ViolationPosition[]
+                  { new ViolationPosition( 34 ) } ),
+                  new ExpectedViolation( "functional.func1.api.Func1ExposedClass.as", new ViolationPosition[]
+                  { new ViolationPosition( 36 ) } ),
+                  new ExpectedViolation( "functional.FunctionalClient.as", new ViolationPosition[]
+                  { new ViolationPosition( 34 ),
+                              new ViolationPosition( 36 ) } ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new UseInternalClassOutsideApiClass();
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/ViewComponentReferencedInModelRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/ViewComponentReferencedInModelRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/ViewComponentReferencedInModelRuleTest.java
new file mode 100644
index 0000000..1c6389d
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/architecture/ViewComponentReferencedInModelRuleTest.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.architecture;
+
+import com.adobe.ac.pmd.rules.core.AbstractRegExpBasedRuleTest;
+import com.adobe.ac.pmd.rules.core.AbstractRegexpBasedRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class ViewComponentReferencedInModelRuleTest extends AbstractRegExpBasedRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "com.adobe.ac.ncss.BigImporterModel.as", new ViolationPosition[]
+      { new ViolationPosition( 35 ) } ) };
+   }
+
+   @Override
+   protected String[] getMatchableLines()
+   {
+      return new String[]
+      { "import lala.view.MyObject;",
+                  "import MyObject   ",
+                  "   import lala.view.MyObject" };
+   }
+
+   @Override
+   protected AbstractRegexpBasedRule getRegexpBasedRule()
+   {
+      return new ViewComponentReferencedInModelRule();
+   }
+
+   @Override
+   protected String[] getUnmatchableLines()
+   {
+      return new String[]
+      { "mport lala.view.MyObject",
+                  " text=\"{ vfrfr().frfr.frf.lala }\"/>",
+                  " text=\"{vfrfr().frfr.frf.lala}\"/>",
+                  "public dynamic class DynamicObject {",
+                  "dynamic public class DynamicObject" };
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AbstractAsDocRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AbstractAsDocRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AbstractAsDocRuleTest.java
new file mode 100644
index 0000000..818f546
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AbstractAsDocRuleTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.asdocs;
+
+import java.io.File;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.logging.Logger;
+
+import net.sourceforge.pmd.PMDException;
+
+import com.adobe.ac.pmd.files.impl.FileUtils;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRuleTest;
+
+public abstract class AbstractAsDocRuleTest extends AbstractAstFlexRuleTest
+{
+   protected static final Logger LOGGER      = Logger.getLogger( AbstractAsDocRuleTest.class.getName() );
+   protected static final String TEST_FOLDER = "/asDocs";
+
+   public AbstractAsDocRuleTest()
+   {
+      super();
+
+      final URL resource = this.getClass().getResource( "/test"
+            + TEST_FOLDER );
+
+      if ( resource != null )
+      {
+         try
+         {
+            setTestFiles( FileUtils.computeFilesList( new File( resource.toURI().getPath() ),
+                                                      null,
+                                                      "",
+                                                      null ) );
+         }
+         catch ( final PMDException e )
+         {
+            LOGGER.warning( e.getLocalizedMessage() );
+         }
+         catch ( final URISyntaxException e )
+         {
+            LOGGER.warning( e.getLocalizedMessage() );
+         }
+      }
+   }
+
+   @Override
+   protected File getTestDirectory() // NO_UCD
+   {
+      return new File( super.getTestDirectory().getAbsolutePath()
+            + TEST_FOLDER );
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AttributeAsDocMissingRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AttributeAsDocMissingRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AttributeAsDocMissingRuleTest.java
new file mode 100644
index 0000000..5360851
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/AttributeAsDocMissingRuleTest.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.asdocs;
+
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class AttributeAsDocMissingRuleTest extends AbstractAsDocRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "EmptyClass.as", new ViolationPosition[]
+      { new ViolationPosition( 35 ) } ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new AttributeAsDocMissingRule();
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/ClassAsDocMissingRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/ClassAsDocMissingRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/ClassAsDocMissingRuleTest.java
new file mode 100644
index 0000000..d42e1f0
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/ClassAsDocMissingRuleTest.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.asdocs;
+
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class ClassAsDocMissingRuleTest extends AbstractAsDocRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "EmptyClass.as", new ViolationPosition[]
+      { new ViolationPosition( 33 ) } ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new ClassAsDocMissingRule();
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/MethodAsDocMissingRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/MethodAsDocMissingRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/MethodAsDocMissingRuleTest.java
new file mode 100644
index 0000000..87c09aa
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/asdocs/MethodAsDocMissingRuleTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.asdocs;
+
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class MethodAsDocMissingRuleTest extends AbstractAsDocRuleTest
+{
+
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "EmptyClass.as", new ViolationPosition[]
+      { new ViolationPosition( 37 ),
+                  new ViolationPosition( 41 ) } ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new MethodAsDocMissingRule();
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/BindingUtilsRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/BindingUtilsRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/BindingUtilsRuleTest.java
new file mode 100644
index 0000000..e2d18ff
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/BindingUtilsRuleTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.binding;
+
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRuleTest;
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class BindingUtilsRuleTest extends AbstractAstFlexRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "cairngorm.FatController.as", new ViolationPosition[]
+      { new ViolationPosition( 90 ) } ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new BindingUtilsRule();
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/ChangeWatcherRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/ChangeWatcherRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/ChangeWatcherRuleTest.java
new file mode 100644
index 0000000..22cd7fc
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/ChangeWatcherRuleTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.binding;
+
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRuleTest;
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class ChangeWatcherRuleTest extends AbstractAstFlexRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "AbstractRowData.as", new ViolationPosition[]
+      { new ViolationPosition( 35 ) } ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new ChangeWatcherRule();
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/TooLongBindingExpressionRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/TooLongBindingExpressionRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/TooLongBindingExpressionRuleTest.java
new file mode 100644
index 0000000..73d8214
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/binding/TooLongBindingExpressionRuleTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.binding;
+
+import com.adobe.ac.pmd.rules.core.AbstractRegExpBasedRuleTest;
+import com.adobe.ac.pmd.rules.core.AbstractRegexpBasedRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class TooLongBindingExpressionRuleTest extends AbstractRegExpBasedRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "com.adobe.ac.ncss.mxml.IterationsList2.mxml", new ViolationPosition[]
+      { new ViolationPosition( 54 ) } ) };
+   }
+
+   @Override
+   protected String[] getMatchableLines()
+   {
+      return new String[]
+      { " text=\"{ vfrfr.frfr.frf.lala }\"/>",
+                  " text=\"{ vfrfr().frfr.frf.lala }\"/>",
+                  " text=\"{vfrfr().frfr.frf.lala}\"/>" };
+   }
+
+   @Override
+   protected AbstractRegexpBasedRule getRegexpBasedRule()
+   {
+      return new TooLongBindingExpressionRule();
+   }
+
+   @Override
+   protected String[] getUnmatchableLines()
+   {
+      return new String[]
+      { " text=\"\"/>",
+                  "lala()",
+                  "<mx:Label text=\"{'a.b.c.d.e.f'}\" /> " };
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/cairngorm/BadCairngormEventNameFormatRuleTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/cairngorm/BadCairngormEventNameFormatRuleTest.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/cairngorm/BadCairngormEventNameFormatRuleTest.java
new file mode 100644
index 0000000..82f2677
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/test/java/com/adobe/ac/pmd/rules/cairngorm/BadCairngormEventNameFormatRuleTest.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.adobe.ac.pmd.rules.cairngorm;
+
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRuleTest;
+import com.adobe.ac.pmd.rules.core.AbstractFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+
+public class BadCairngormEventNameFormatRuleTest extends AbstractAstFlexRuleTest
+{
+   @Override
+   protected ExpectedViolation[] getExpectedViolatingFiles()
+   {
+      final ViolationPosition[] positions =
+      { new ViolationPosition( 38 ) };
+
+      return new ExpectedViolation[]
+      { new ExpectedViolation( "cairngorm.events.UncorrectConstructorEvent.as", positions ),
+                  new ExpectedViolation( "cairngorm.events.UncorrectConstantEvent.as", positions ) };
+   }
+
+   @Override
+   protected AbstractFlexRule getRule()
+   {
+      return new BadCairngormEventNameFormatRule();
+   }
+}