flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cd...@apache.org
Subject [09/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
Date Tue, 26 Aug 2014 22:43:40 GMT
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.java
new file mode 100644
index 0000000..ef71b6d
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.java
@@ -0,0 +1,61 @@
+/*
+ * 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.style;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.adobe.ac.pmd.nodes.IPackage;
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class ImportFromSamePackageRule extends AbstractAstFlexRule
+{
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolations(com.adobe
+    * .ac.pmd.nodes.IPackage)
+    */
+   @Override
+   protected final void findViolations( final IPackage packageNode )
+   {
+      final String packageName = packageNode.getName();
+
+      for ( final IParserNode importNode : packageNode.getImports() )
+      {
+         if ( StringUtils.substringBeforeLast( importNode.toString(),
+                                               "." ).equals( packageName ) )
+         {
+            addViolation( importNode );
+         }
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.LOW;
+   }
+}
\ 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/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java
new file mode 100644
index 0000000..1e80663
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java
@@ -0,0 +1,114 @@
+/*
+ * 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.style;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.adobe.ac.pmd.IFlexViolation;
+import com.adobe.ac.pmd.files.IFlexFile;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+import com.adobe.ac.pmd.rules.core.thresholded.AbstractMaximizedFlexRule;
+
+/**
+ * @author xagnetti
+ */
+public class OverLongLineRule extends AbstractMaximizedFlexRule
+{
+   private static final int DEFAULT_THRESHOLD = 120;
+   private int              currentLineLength;
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractFlexRule#findViolationsInCurrentFile()
+    */
+   @Override
+   public final List< IFlexViolation > findViolationsInCurrentFile()
+   {
+      final List< IFlexViolation > violations = new ArrayList< IFlexViolation >();
+
+      if ( isConcernedByTheCurrentFile() )
+      {
+         final IFlexFile currentFile = getCurrentFile();
+
+         for ( int i = 1; i <= currentFile.getLinesNb(); i++ )
+         {
+            final String line = currentFile.getLineAt( i );
+
+            if ( !line.trim().startsWith( "import" )
+                  && line.length() > getThreshold() )
+            {
+               currentLineLength = line.length();
+               final ViolationPosition position = ViolationPosition.create( i,
+                                                                            i,
+                                                                            0,
+                                                                            currentLineLength );
+
+               addViolation( violations,
+                             position );
+            }
+         }
+      }
+      return violations;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @seecom.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#
+    * getActualValueForTheCurrentViolation()
+    */
+   @Override
+   public final int getActualValueForTheCurrentViolation()
+   {
+      return currentLineLength;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getDefaultThreshold
+    * ()
+    */
+   @Override
+   public final int getDefaultThreshold()
+   {
+      return DEFAULT_THRESHOLD;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.LOW;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractFlexRule#isConcernedByTheCurrentFile()
+    */
+   @Override
+   protected boolean isConcernedByTheCurrentFile()
+   {
+      return true;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.java
new file mode 100644
index 0000000..37f44a3
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.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.style;
+
+import com.adobe.ac.pmd.rules.core.AbstractRegexpBasedRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+public class TabUsedAsIndentorRule extends AbstractRegexpBasedRule
+{
+
+   @Override
+   protected ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.NORMAL;
+   }
+
+   @Override
+   protected String getRegexp()
+   {
+      return "^ *\t.*";
+   }
+
+   @Override
+   protected boolean isConcernedByTheCurrentFile()
+   {
+      return !getCurrentFile().isMxml();
+   }
+
+   @Override
+   protected boolean isViolationDetectedOnThisMatchingLine( final String line )
+   {
+      return true;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java
new file mode 100644
index 0000000..fad7a45
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java
@@ -0,0 +1,73 @@
+/*
+ * 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.switchrules;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class IdenticalSwitchCasesRule extends AbstractAstFlexRule
+{
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.LOW;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+    * ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitSwitch( final IParserNode ast )
+   {
+      super.visitSwitch( ast );
+
+      if ( ast.numChildren() > 0 )
+      {
+         final Map< String, IParserNode > cases = new LinkedHashMap< String, IParserNode >();
+
+         for ( final IParserNode caseStatement : ast.getChild( 1 ).getChildren() )
+         {
+            final String label = caseStatement.getChild( 0 ).toString();
+
+            if ( cases.containsKey( label ) )
+            {
+               addViolation( caseStatement );
+               break;
+            }
+            else
+            {
+               cases.put( label,
+                          caseStatement );
+            }
+         }
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.java
new file mode 100644
index 0000000..38dd7e5
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.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.switchrules;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class NestedSwitchRule extends AbstractAstFlexRule
+{
+   private int switchLevel = 0;
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.NORMAL;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+    * ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitSwitch( final IParserNode ast )
+   {
+      switchLevel++;
+      if ( switchLevel > 1 )
+      {
+         addViolation( ast );
+      }
+      super.visitSwitch( ast );
+
+      switchLevel--;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.java
new file mode 100644
index 0000000..3697903
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.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.switchrules;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+public class NonBreakableSwitchCaseRule extends AbstractAstFlexRule
+{
+   @Override
+   protected ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.HIGH;
+   }
+
+   @Override
+   protected void visitSwitchCase( final IParserNode switchCaseNode )
+   {
+      if ( switchCaseNode.getChildren() != null
+            && switchCaseNode.getChildren().size() > 0
+            && switchCaseNode.getLastChild().getStringValue().compareTo( "break" ) != 0 )
+      {
+         addViolation( switchCaseNode );
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java
new file mode 100644
index 0000000..163333e
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java
@@ -0,0 +1,75 @@
+/*
+ * 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.switchrules;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class SwitchStatementsShouldHaveDefaultRule extends AbstractAstFlexRule
+{
+   private boolean defaultStatementFound = false;
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.HIGH;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+    * ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitSwitch( final IParserNode ast )
+   {
+      super.visitSwitch( ast );
+
+      if ( !defaultStatementFound )
+      {
+         ast.getChild( 1 );
+
+         addViolation( ast );
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitchDefaultCase
+    * (com.adobe.ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitSwitchDefaultCase( final IParserNode child )
+   {
+      super.visitSwitchDefaultCase( child );
+
+      if ( child.numChildren() != 0 )
+      {
+         defaultStatementFound = true;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java
new file mode 100644
index 0000000..2f4aae9
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java
@@ -0,0 +1,144 @@
+/*
+ * 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.switchrules;
+
+import java.util.Map;
+
+import net.sourceforge.pmd.PropertyDescriptor;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+import com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule;
+
+/**
+ * @author xagnetti
+ */
+public class TooFewBrancheInSwitchStatementRule extends AbstractAstFlexRule implements IThresholdedRule
+{
+   public static final int DEFAULT_THRESHOLD = 3;
+   private int             switchCases;
+
+   /*
+    * (non-Javadoc)
+    * @seecom.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#
+    * getActualValueForTheCurrentViolation()
+    */
+   public final int getActualValueForTheCurrentViolation()
+   {
+      return switchCases;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getDefaultThreshold
+    * ()
+    */
+   public final int getDefaultThreshold()
+   {
+      return DEFAULT_THRESHOLD;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getThreshold()
+    */
+   public final int getThreshold()
+   {
+      return getIntProperty( propertyDescriptorFor( getThresholdName() ) );
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getThresholdName
+    * ()
+    */
+   public final String getThresholdName()
+   {
+      return MINIMUM;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.LOW;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see net.sourceforge.pmd.CommonAbstractRule#propertiesByName()
+    */
+   @Override
+   protected final Map< String, PropertyDescriptor > propertiesByName()
+   {
+      return getThresholdedRuleProperties( this );
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+    * ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitSwitch( final IParserNode ast )
+   {
+      switchCases = 0;
+
+      super.visitSwitch( ast );
+
+      if ( switchCases < getThreshold() )
+      {
+         addViolation( ast );
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitchCase(com.adobe
+    * .ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitSwitchCase( final IParserNode child )
+   {
+      super.visitSwitchCase( child );
+
+      switchCases++;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitchDefaultCase
+    * (com.adobe.ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected void visitSwitchDefaultCase( final IParserNode defaultCaseNode )
+   {
+      super.visitSwitchDefaultCase( defaultCaseNode );
+
+      switchCases++;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java
new file mode 100644
index 0000000..63640b2
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java
@@ -0,0 +1,130 @@
+/*
+ * 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.unused;
+
+import java.util.Map;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.parser.NodeKind;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+
+/**
+ * @author xagnetti
+ */
+abstract class AbstractUnusedVariableRule extends AbstractAstFlexRule
+{
+   private Map< String, IParserNode > variablesUnused;
+
+   /**
+    * @param variableName
+    * @param ast
+    */
+   protected final void addVariable( final String variableName,
+                                     final IParserNode ast )
+   {
+      variablesUnused.put( variableName,
+                           ast );
+   }
+
+   /**
+    * @return
+    */
+   protected Map< String, IParserNode > getVariablesUnused()
+   {
+      return variablesUnused;
+   }
+
+   /**
+    * @param variablesUnusedToBeSet
+    */
+   protected void setVariablesUnused( final Map< String, IParserNode > variablesUnusedToBeSet )
+   {
+      variablesUnused = variablesUnusedToBeSet;
+   }
+
+   /**
+    * @param ast
+    */
+   protected final void tryToAddVariableNodeInChildren( final IParserNode ast )
+   {
+      if ( ast != null
+            && !tryToAddVariableNode( ast ) && ast.is( NodeKind.VAR_LIST ) )
+      {
+         for ( final IParserNode child : ast.getChildren() )
+         {
+            tryToAddVariableNode( child );
+         }
+      }
+   }
+
+   /**
+    * @param ast
+    */
+   protected final void tryToMarkVariableAsUsed( final IParserNode ast )
+   {
+      if ( variablesUnused != null
+            && ast != null )
+      {
+         markVariableAsUsed( ast );
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitStatement(com.adobe
+    * .ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected void visitStatement( final IParserNode ast )
+   {
+      super.visitStatement( ast );
+
+      tryToMarkVariableAsUsed( ast );
+   }
+
+   private void markVariableAsUsed( final IParserNode ast )
+   {
+      if ( ast.numChildren() == 0 )
+      {
+         if ( variablesUnused.containsKey( ast.getStringValue() ) )
+         {
+            variablesUnused.remove( ast.getStringValue() );
+         }
+      }
+      else
+      {
+         for ( final IParserNode child : ast.getChildren() )
+         {
+            markVariableAsUsed( child );
+         }
+      }
+   }
+
+   private boolean tryToAddVariableNode( final IParserNode ast )
+   {
+      boolean result = false;
+
+      if ( ast.is( NodeKind.NAME_TYPE_INIT ) )
+      {
+         addVariable( ast.getChild( 0 ).getStringValue(),
+                      ast );
+         result = true;
+      }
+      return result;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.java
new file mode 100644
index 0000000..f9805c1
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.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.unused;
+
+import com.adobe.ac.pmd.nodes.IFunction;
+import com.adobe.ac.pmd.nodes.Modifier;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+public class EmptyPrivateMethodRule extends AbstractAstFlexRule
+{
+   @Override
+   protected final void findViolations( final IFunction function )
+   {
+      if ( function.is( Modifier.PRIVATE )
+            && function.getBody().numChildren() == 0 )
+      {
+         addViolation( function );
+      }
+   }
+
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.NORMAL;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java
new file mode 100644
index 0000000..c6bc6fd
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java
@@ -0,0 +1,128 @@
+/*
+ * 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.unused;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.parser.KeyWords;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedFieldRule extends AbstractUnusedVariableRule
+{
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#isConcernedByTheCurrentFile
+    * ()
+    */
+   @Override
+   public final boolean isConcernedByTheCurrentFile()
+   {
+      return !getCurrentFile().isMxml();
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.HIGH;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitClass(com.adobe.ac
+    * .pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitClass( final IParserNode classNode )
+   {
+      setVariablesUnused( new LinkedHashMap< String, IParserNode >() );
+
+      super.visitClass( classNode );
+
+      for ( final String variableName : getVariablesUnused().keySet() )
+      {
+         final IParserNode variable = getVariablesUnused().get( variableName );
+
+         addViolation( variable,
+                       variable,
+                       variableName );
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitVariableInitialization
+    * (com.adobe.ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitVariableInitialization( final IParserNode node )
+   {
+      super.visitVariableInitialization( node );
+
+      tryToMarkVariableAsUsed( node );
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitVarOrConstList(com
+    * .adobe.ac.pmd.parser.IParserNode,
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.VariableOrConstant,
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.VariableScope)
+    */
+   @Override
+   protected final void visitVarOrConstList( final IParserNode ast,
+                                             final VariableOrConstant varOrConst,
+                                             final VariableScope scope )
+   {
+      if ( scope.equals( VariableScope.IN_CLASS ) )
+      {
+         final List< IParserNode > modifiers = ast.getChild( 0 ).getChildren();
+         boolean isPrivate = false;
+
+         if ( !modifiers.isEmpty() )
+         {
+            for ( final IParserNode modifierNode : modifiers )
+            {
+               if ( modifierNode.getStringValue().equals( KeyWords.PRIVATE.toString() ) )
+               {
+                  isPrivate = true;
+                  break;
+               }
+            }
+         }
+         if ( isPrivate )
+         {
+            tryToAddVariableNodeInChildren( ast );
+         }
+      }
+      super.visitVarOrConstList( ast,
+                                 varOrConst,
+                                 scope );
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java
new file mode 100644
index 0000000..64df71a
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java
@@ -0,0 +1,76 @@
+/*
+ * 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.unused;
+
+import java.util.LinkedHashMap;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedLocalVariableRule extends AbstractUnusedVariableRule
+{
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.NORMAL;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitFunction(com.adobe
+    * .ac.pmd.parser.IParserNode,
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.FunctionType)
+    */
+   @Override
+   protected final void visitFunction( final IParserNode ast,
+                                       final FunctionType type )
+   {
+      setVariablesUnused( new LinkedHashMap< String, IParserNode >() );
+
+      super.visitFunction( ast,
+                           type );
+      for ( final String variableName : getVariablesUnused().keySet() )
+      {
+         final IParserNode variable = getVariablesUnused().get( variableName );
+
+         addViolation( variable,
+                       variable,
+                       variableName );
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.unused.AbstractUnusedVariableRule#visitStatement
+    * (com.adobe.ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitStatement( final IParserNode ast )
+   {
+      super.visitStatement( ast );
+      tryToAddVariableNodeInChildren( ast );
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java
new file mode 100644
index 0000000..305def5
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java
@@ -0,0 +1,239 @@
+/*
+ * 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.unused;
+
+import java.util.LinkedHashMap;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.parser.KeyWords;
+import com.adobe.ac.pmd.parser.NodeKind;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+import com.adobe.ac.pmd.rules.parsley.utils.ParsleyMetaData;
+import com.adobe.ac.pmd.rules.parsley.utils.MetaDataTag.Location;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedParameterRule extends AbstractUnusedVariableRule
+{
+   private static final String DATA_GRID_COLUMN         = "DataGridColumn";
+   private static final String FAULT_FUNCTION_NAME      = "fault";
+   private static final String RESPONDER_INTERFACE_NAME = "Responder";
+   private static final String RESULT_FUNCTION_NAME     = "result";
+
+   private static String computeFunctionName( final IParserNode functionAst )
+   {
+      String functionName = "";
+      for ( final IParserNode node : functionAst.getChildren() )
+      {
+         if ( node.is( NodeKind.NAME ) )
+         {
+            functionName = node.getStringValue();
+            break;
+         }
+      }
+      return functionName;
+   }
+
+   private static boolean isClassImplementingIResponder( final IParserNode currentClass2 )
+   {
+      for ( final IParserNode node : currentClass2.getChildren() )
+      {
+         if ( node.is( NodeKind.IMPLEMENTS_LIST ) )
+         {
+            for ( final IParserNode implementation : node.getChildren() )
+            {
+               if ( implementation.getStringValue() != null
+                     && implementation.getStringValue().contains( RESPONDER_INTERFACE_NAME ) )
+               {
+                  return true;
+               }
+            }
+         }
+      }
+      return false;
+   }
+
+   private static boolean isResponderImplementation( final IParserNode currentClass,
+                                                     final IParserNode functionAst )
+   {
+      if ( !isClassImplementingIResponder( currentClass ) )
+      {
+         return false;
+      }
+      final String functionName = computeFunctionName( functionAst );
+
+      return RESULT_FUNCTION_NAME.compareTo( functionName ) == 0
+            || FAULT_FUNCTION_NAME.compareTo( functionName ) == 0;
+   }
+
+   private IParserNode currentClass;
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.NORMAL;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitClass(com.adobe.ac
+    * .pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitClass( final IParserNode classNode )
+   {
+      currentClass = classNode;
+      super.visitClass( classNode );
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitFunction(com.adobe
+    * .ac.pmd.parser.IParserNode,
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.FunctionType)
+    */
+   @Override
+   protected final void visitFunction( final IParserNode functionAst,
+                                       final FunctionType type )
+   {
+      setVariablesUnused( new LinkedHashMap< String, IParserNode >() );
+      final boolean isOverriden = isFunctionOverriden( functionAst );
+
+      if ( !isOverriden
+            && !isResponderImplementation( currentClass,
+                                           functionAst ) && !isParsleyFunction( functionAst ) )
+      {
+         super.visitFunction( functionAst,
+                              type );
+
+         if ( !functionIsEventHandler( functionAst ) )
+         {
+            for ( final String variableName : getVariablesUnused().keySet() )
+            {
+               final IParserNode variable = getVariablesUnused().get( variableName );
+
+               addViolation( variable,
+                             variable,
+                             variableName );
+            }
+         }
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitParameters(com.adobe
+    * .ac.pmd.parser.IParserNode)
+    */
+   @Override
+   protected final void visitParameters( final IParserNode ast )
+   {
+      super.visitParameters( ast );
+
+      if ( ast.numChildren() != 0 )
+      {
+         for ( final IParserNode parameterNode : ast.getChildren() )
+         {
+            if ( !isParameterAnEvent( parameterNode )
+                  && parameterNode.numChildren() > 0
+                  && parameterNode.getChild( 0 ).numChildren() > 1
+                  && parameterNode.getChild( 0 ).getChild( 1 ).getStringValue().compareTo( DATA_GRID_COLUMN ) != 0 )
+            {
+               addVariable( parameterNode.getChild( 0 ).getChild( 0 ).getStringValue(),
+                            parameterNode );
+            }
+         }
+      }
+   }
+
+   private String extractFunctionName( final IParserNode ast )
+   {
+      if ( ast.numChildren() != 0 )
+      {
+         for ( final IParserNode node : ast.getChildren() )
+         {
+            if ( node.is( NodeKind.NAME ) )
+            {
+               return node.getStringValue();
+            }
+         }
+      }
+      return "";
+   }
+
+   private boolean functionIsEventHandler( final IParserNode ast )
+   {
+      final String functionName = extractFunctionName( ast );
+
+      return functionName.startsWith( "on" )
+            || functionName.startsWith( "handle" ) || functionName.endsWith( "handler" );
+   }
+
+   private boolean isFunctionOverriden( final IParserNode ast )
+   {
+      for ( final IParserNode child : ast.getChildren() )
+      {
+         if ( child.is( NodeKind.MOD_LIST ) )
+         {
+            for ( final IParserNode mod : child.getChildren() )
+            {
+               if ( mod.getStringValue().equals( KeyWords.OVERRIDE.toString() ) )
+               {
+                  return true;
+               }
+            }
+         }
+      }
+      return false;
+   }
+
+   private boolean isParameterAnEvent( final IParserNode parameterNode )
+   {
+      final IParserNode parameterType = getTypeFromFieldDeclaration( parameterNode );
+
+      return parameterType != null
+            && parameterType.getStringValue() != null && parameterType.getStringValue().contains( "Event" );
+   }
+
+   private boolean isParsleyFunction( final IParserNode functionAst )
+   {
+      for ( final IParserNode child : functionAst.getChildren() )
+      {
+         if ( child.is( NodeKind.META_LIST ) )
+         {
+            for ( final IParserNode metaDataChild : child.getChildren() )
+            {
+               if ( metaDataChild.getStringValue() != null
+                     && ParsleyMetaData.getPossibleMetaDataFromLocation( Location.FUNCTION )
+                                       .containsKey( metaDataChild.getStringValue() ) )
+               {
+                  return true;
+               }
+            }
+         }
+      }
+      return false;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java
new file mode 100644
index 0000000..6637b4f
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java
@@ -0,0 +1,183 @@
+/*
+ * 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.unused;
+
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.adobe.ac.pmd.files.IAs3File;
+import com.adobe.ac.pmd.nodes.IAttribute;
+import com.adobe.ac.pmd.nodes.IClass;
+import com.adobe.ac.pmd.nodes.IConstant;
+import com.adobe.ac.pmd.nodes.IFunction;
+import com.adobe.ac.pmd.nodes.IVariable;
+import com.adobe.ac.pmd.nodes.Modifier;
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedPrivateMethodRule extends AbstractAstFlexRule
+{
+   private Map< String, IFunction > privateFunctions = null;
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolations(com.adobe
+    * .ac.pmd.nodes.IClass)
+    */
+   @Override
+   protected final void findViolations( final IClass classNode )
+   {
+      fillPrivateFunctions( classNode.getFunctions() );
+      findUnusedFunction( classNode.getBlock() );
+
+      super.findViolations( classNode );
+
+      addViolations();
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolations(java.util
+    * .List)
+    */
+   @Override
+   protected final void findViolations( final List< IFunction > functions )
+   {
+      super.findViolations( functions );
+
+      for ( final IFunction function : functions )
+      {
+         findUnusedFunction( function.getBody() );
+      }
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolationsFromAttributes
+    * (java.util.List)
+    */
+   @Override
+   protected void findViolationsFromAttributes( final List< IAttribute > variables )
+   {
+      super.findViolationsFromAttributes( variables );
+
+      findViolationsFromVariables( variables );
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see
+    * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolationsFromConstants
+    * (java.util.List)
+    */
+   @Override
+   protected void findViolationsFromConstants( final List< IConstant > constants )
+   {
+      super.findViolationsFromConstants( constants );
+
+      findViolationsFromVariables( constants );
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+    */
+   @Override
+   protected final ViolationPriority getDefaultPriority()
+   {
+      return ViolationPriority.NORMAL;
+   }
+
+   private void addViolations()
+   {
+      final Set< Integer > ignoredLines = new HashSet< Integer >();
+
+      for ( final String functionName : privateFunctions.keySet() )
+      {
+         final IFunction function = privateFunctions.get( functionName );
+         ignoredLines.clear();
+         ignoredLines.add( getNameFromFunctionDeclaration( function.getInternalNode() ).getLine() );
+
+         if ( getCurrentFile() instanceof IAs3File
+               || !getCurrentFile().contains( functionName,
+                                              ignoredLines ) )
+         {
+            addViolation( function );
+         }
+      }
+   }
+
+   private void fillPrivateFunctions( final List< IFunction > functions )
+   {
+      privateFunctions = new LinkedHashMap< String, IFunction >();
+
+      for ( final IFunction function : functions )
+      {
+         if ( function.is( Modifier.PRIVATE ) )
+         {
+            privateFunctions.put( function.getName(),
+                                  function );
+         }
+      }
+   }
+
+   private void findUnusedFunction( final IParserNode body )
+   {
+      if ( body != null )
+      {
+         if ( body.getStringValue() != null )
+         {
+            for ( final String functionName : privateFunctions.keySet() )
+            {
+               if ( body.getStringValue().equals( functionName ) )
+               {
+                  privateFunctions.remove( functionName );
+                  break;
+               }
+            }
+         }
+         if ( body.numChildren() != 0 )
+         {
+            for ( final IParserNode child : body.getChildren() )
+            {
+               findUnusedFunction( child );
+            }
+         }
+      }
+   }
+
+   private void findViolationsFromVariables( final List< ? extends IVariable > variables )
+   {
+      for ( final IVariable constant : variables )
+      {
+         if ( constant.getInitializationExpression() != null )
+         {
+            findUnusedFunction( constant.getInitializationExpression().getInternalNode() );
+         }
+      }
+   }
+}

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/all_flex.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/all_flex.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/all_flex.xml
new file mode 100644
index 0000000..814086d
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/all_flex.xml
@@ -0,0 +1,48 @@
+<?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="All Flex 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>Every Flex Rule in FlexPMD</description>
+
+	<rule ref="com/adobe/ac/pmd/rulesets/architecture.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/asdocs.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/basic_mxml.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/binding.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/cairngorm.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/component.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/css.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/empty.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/event.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/indentation.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/maintanability.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/multitouch.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/naming.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/parsley.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/performance.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/sizing.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/style.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/switches.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/unittest.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/unused.xml" />
+
+</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/default_flex.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/default_flex.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/default_flex.xml
new file mode 100644
index 0000000..ef8fd61
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/default_flex.xml
@@ -0,0 +1,46 @@
+<?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="Default Flex 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>Every Flex Rule in FlexPMD</description>
+
+	<rule ref="com/adobe/ac/pmd/rulesets/architecture.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/basic_mxml.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/binding.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/cairngorm.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/component.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/css.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/empty.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/event.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/maintanability.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/naming.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/parsley.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/performance.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/security.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/sizing.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/style.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/switches.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/unittest.xml" />
+	<rule ref="com/adobe/ac/pmd/rulesets/unused.xml" />
+
+</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/architecture.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/architecture.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/architecture.xml
new file mode 100644
index 0000000..82adbe2
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/architecture.xml
@@ -0,0 +1,118 @@
+<?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="Architecture 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.architecture.ViewComponentReferencedInModelRule"
+		message="A view component should not be referenced in a model class">
+		<description></description>
+		<priority>3</priority>
+		<example>
+package com.adobe.ac
+{
+   import mx.controls.ComboBox; // VIOLATION
+
+   public class MyModelClass
+   {
+   }
+} 		
+      </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.architecture.MonkeyPatchingRule"
+		message="This class looks to be duplicated with a SDK class">
+		<description>Monkey patching can be a risky undertaking because it is not using intended extensibility points and thus may have unintended consequences or make migration to newer versions of the SDK more difficult</description>
+		<priority>1</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.architecture.UseInternalClassOutsideApiClass"
+		message="This class imports an internal class ({0}) from another function area ({1})">
+		<description>If you have different functionalities, you probably don't want every class of each to be accessible from any other functional areas.
+So you probably want to use this packaging:
+[org].[project].func1.api
+[org].[project].func1.restricted
+[org].[project].func2.api
+[org].[project].func2.restricted
+This rule makes sure that no restricted classes is accessed from outside its own function area.
+ </description>
+		<priority>1</priority>
+		<example>
+package functional
+{
+	import functional.func1.api.Func1ExposedClass;
+	import functional.func1.restricted.Func1RestrictedClass; // VIOLATION
+	import functional.func2.api.Func2ExposedClass;
+	import functional.func2.restricted.Func2RestrictedClass; // VIOLATION
+	
+	public class FunctionClient
+	{
+	}
+}
+package functional.func1.api
+
+{
+	import functional.func1.restricted.Func1RestrictedClass; 
+	import functional.func2.api.Func2ExposedClass;
+	import functional.func2.restricted.Func2RestrictedClass; // VIOLATION
+	
+	public class Func1ExposedClass
+	{
+	}
+}
+package functional.func1.restricted
+{
+	import functional.func1.api.Func1ExposedClass;
+	import functional.func2.api.Func2ExposedClass;
+	import functional.func2.restricted.Func2RestrictedClass; // VIOLATION
+	
+	public class Func1RestrictedClass
+	{
+	}
+}
+package functional.func2.api
+{
+	import functional.func1.api.Func1ExposedClass;
+	import functional.func1.restricted.Func1RestrictedClass; // VIOLATION
+	import functional.func2.restricted.Func2RestrictedClass;
+	
+	public class Func2ExposedClass
+	{
+	}
+}
+package functional.func2.restricted
+{
+	import functional.func1.api.Func1ExposedClass;
+	import functional.func1.restricted.Func1RestrictedClass; // VIOLATION
+	import functional.func2.api.Func2ExposedClass;
+	
+	public class Func2RestrictedClass
+	{
+	}
+}		
+		</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/asdocs.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/asdocs.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/asdocs.xml
new file mode 100644
index 0000000..3877230
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/asdocs.xml
@@ -0,0 +1,50 @@
+<?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="AsDocs 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 AsDocs Ruleset contains a collection of good practices related to AsDocs.
+    </description>
+    
+	<rule 
+		class="com.adobe.ac.pmd.rules.asdocs.AttributeAsDocMissingRule"
+		message="This attribute ({0}) should be documented with AsDocs.">
+		<priority>3</priority>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.asdocs.ClassAsDocMissingRule"
+		message="This class ({0}) should be documented with AsDocs.">
+		<priority>3</priority>
+	</rule>
+
+	<rule 
+		class="com.adobe.ac.pmd.rules.asdocs.MethodAsDocMissingRule"
+		message="This method ({0}) should be documented with AsDocs.">
+		<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/basic_mxml.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/basic_mxml.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/basic_mxml.xml
new file mode 100644
index 0000000..2f9fcf5
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/basic_mxml.xml
@@ -0,0 +1,65 @@
+<?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="Basic MXML 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 MXML Ruleset contains a collection of good practices which everyone should follow.
+    </description>
+
+	<rule class="com.adobe.ac.pmd.rules.mxml.MoreThanOneEntryPointInMxmlRule"
+		message="There is more than 1 public variable in this MXML component">
+		<priority>5</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.mxml.MoreThanTwoEntryPointsInMxmlRule"
+		message="There are more than 2 public variables in this MXML component">
+		<priority>3</priority>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.mxml.TooLongScriptBlockRule"
+		message="This script block is too long ({0} maximum, but {1} actually)">
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>50</value>
+			</property>
+		</properties>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.mxml.CodeBehindInMxmlRule"
+		message="Avoid using code behind files">
+		<description>Code behind files are tightly coupled with the view, not unit-testable, not easy to navigate the code code base and not reusable. Try using presentation model pattern, or observer pattern</description>
+		<priority>5</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.mxml.TooManyStatesInMxmlRule"
+	message="Having too many states does not help visibility. Try to refactor this view component.">
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>5</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/binding.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/binding.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/binding.xml
new file mode 100644
index 0000000..0eedc46
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/binding.xml
@@ -0,0 +1,70 @@
+<?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="Binding 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 Binding ruleset contains a collection of good practices around usage of binding.
+	</description>
+
+	<rule class="com.adobe.ac.pmd.rules.binding.BindingUtilsRule"
+		message="BindingUtils class uses hard coded strings, which won't be picked up by the compiler if you rename this attribute. You should probably consider refactoring using events">
+		<description></description>
+		<priority>1</priority>
+		<example>
+public class Controller extends FrontController
+{
+   public function Controller()
+   {
+   	 BindingUtils.bindSetter(setContent, value, "content"); // VIOLATION
+   }
+}	 
+      	 </example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.binding.ChangeWatcherRule"
+		message="ChangeWatcher class uses hard coded strings to specify the attribute name, to listen to. Prefer listening to events or setters">
+		<priority>1</priority>
+		<example>
+public final class Title 
+{
+	private var watcher : ChangeWatcher; // VIOLATION
+}		
+		</example>
+	</rule>
+
+	<rule class="com.adobe.ac.pmd.rules.binding.TooLongBindingExpressionRule"
+		message="This binding expression is too long ({0} dots maximum, but {1} actually)">
+		<description>A Binding expression is executed as soon as one of the bindable attributes changed. If a binding expression contains too many expression, there could be some performance issue.</description>
+		<priority>3</priority>
+		<properties>
+			<property name="maximum">
+				<value>3</value>
+			</property>
+		</properties>
+		<example>
+		<![CDATA[
+<mx:Label text="{ vfrfr.frfr.frf.lala }"/> <!-- Violation-->
+		]]>
+		</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/cairngorm.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/cairngorm.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/cairngorm.xml
new file mode 100644
index 0000000..43b425c
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/cairngorm.xml
@@ -0,0 +1,134 @@
+<?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="Cairngorm 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 Cairngorm Ruleset contains a collection of good practices related to Cairngorm.
+    </description>
+    
+	<rule class="com.adobe.ac.pmd.rules.cairngorm.BindableModelLocatorRule"
+		message="A modelLocator must not be Bindable at a class level">
+		<description>A bindable ModelLocator could leads to performance issues due to bindings</description>
+		<priority>1</priority>
+		<example>
+[Bindable]
+public class BindableModelLocator // VIOLATION 
+{      
+}      
+      </example>
+	</rule>
+	
+	<rule
+		class="com.adobe.ac.pmd.rules.cairngorm.ReferenceModelLocatorOutsideTheMainApplicationRule"
+		message="The ModelLocator should be only accessible from the main application file">
+		<description>The ModelLocator should be only accessible from the main application file. Then sub-models should be injected to the nested views.</description>
+		<priority>3</priority>
+		<example>
+package business
+{
+   import model.MyModelLocator; // VIOLATION
+   
+   public class MyBusinessClass 
+   {
+   } 
+}
+      </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.cairngorm.FatControllerRule"
+		message="A FrontController must nor add all its commands within the Controller constructor">
+		<description>Try split them into methods where you add commands depending on their functional area.</description>
+		<priority>3</priority>
+		<example>
+package control
+{
+   import control.GetItems1Command;
+   import control.GetItems1Event;
+   import control.GetItems2Command;
+   import control.GetItems2Event;
+   // A lot of other imports
+   
+   public class MyFrontController // VIOLATION
+   {
+      public function MyFrontController()
+      {
+         addCommand( 
+            GetItems1Event.EVENT_NAME,
+            GetItems1Command );
+
+         addCommand( 
+            GetItems2Event.EVENT_NAME,
+            GetItems2Command );
+
+         // A lot of other addCommand
+      }
+   } 
+}
+      </example>
+	</rule>
+
+	<rule
+		class="com.adobe.ac.pmd.rules.cairngorm.BadCairngormEventNameFormatRule"
+		message="A Cairngorm event name should contain the function area name before the actual event name">
+		<description>You would have something like 'productManagement.getProducts' as an event name.</description>
+		<priority>3</priority>
+		<example>
+
+public class UncorrectConstructorEvent extends CairngormEvent
+{
+   public function UncorrectConstructorEvent( model : IModel )
+   {
+      super( "eventName", model ); // VIOLATION. It should be "functionalArea.eventName" instead
+   }
+}
+public class UncorrectConstantEvent extends CairngormEnterpriseEvent
+{
+   public static const EVENT_NAME : String = "eventName";
+   
+   public function UncorrectConstantEvent( model : IModel )
+   {
+      super( EVENT_NAME, model ); // VIOLATION
+   }
+}
+       </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.cairngorm.CairngormEventDispatcherCallExplicitlyRule"
+		  message="CairngormEventDispatcher is called explicitly. {0}">
+		  <priority>3</priority>
+		  <example>
+		  <![CDATA[
+public function foo() : void
+{
+   CairngormEventDispatcher.getInstance().dispatchEvent(new Event(CONSTANT)); // VIOLATION <- use cairngormEvent.dispatch();
+   CairngormEventDispatcher.getInstance().addEventListener(CONSTANT, onHearing); // VIOLATION <- MVC broken
+}  
+		  ]]>
+		  </example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.cairngorm.ModelLocatorReferencedMoreThanOncePerClassRule"
+		message="Only one reference of ModelLocator is allowed per class">
+		<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/component.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/component.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/component.xml
new file mode 100644
index 0000000..daba3e1
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/component.xml
@@ -0,0 +1,43 @@
+<?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="Custom component 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 Component Ruleset contains a collection of good practices related to custom component development.
+   </description>
+   
+	<rule
+		class="com.adobe.ac.pmd.rules.component.UpdateChildrenNumberInUpdateDisplayListRule"
+		message="Flex specific - Do not add or remove displayable children from updateDisplayList">
+		<description>UpdateDisplayList is called everytime a child is invalidated. So calling addChild or removeChild in this function could be really CPU consuming</description>
+		<priority>1</priority>
+		<example></example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.component.CallLaterDirectlyRule"
+		message="Flex specific - Don't call 'callLater' explicitly">
+		<description>If you needed to call 'callLater' explicitly, then you probably did not extend the correct component life cycle.</description>
+		<priority>1</priority>
+	</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/css.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/css.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/css.xml
new file mode 100644
index 0000000..c580d39
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/css.xml
@@ -0,0 +1,41 @@
+<?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="CSS 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 Styling Ruleset contains a collection of good practices related to
+		styling.
+    </description>
+    
+	<rule class="com.adobe.ac.pmd.rules.css.StyleBlockInMxmlRule"
+		message="The style block is embed in the MXML file">
+		<description>It is not a good practice to embed style blocks inside the MXML component. Prefer using external CSS files.</description>
+		<priority>3</priority>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.css.UseCssInsteadOfEmbedMetaDataRule"
+		message="Embed metadata detected in source code where a stylesheet may be cleaner">
+		<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/empty.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/empty.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/empty.xml
new file mode 100644
index 0000000..e6f46c3
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/empty.xml
@@ -0,0 +1,66 @@
+<?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="Empty statement 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 Empty ruleset contains a collection of rules detecting empty statements.
+	</description>
+	
+	<rule class="com.adobe.ac.pmd.rules.empty.EmptyCatchStatementRule"
+		message="This catch statement is empty">
+		<priority>3</priority>
+		<example>
+public class Foo 
+{
+   public function bar( x : int ) : void
+   {
+      try
+      {
+      }
+      catch( e : Exception )         // VIOLATION
+      {
+      }
+   }
+} 		
+		</example>
+	</rule>
+	
+	<rule class="com.adobe.ac.pmd.rules.empty.EmptyIfStmtRule"
+		message="No statements in this if statement">
+		<description>Empty If Statement finds instances where a condition is checked but nothing is done about it. </description>
+		<priority>3</priority>
+		<example>
+public class Foo 
+{
+   public function bar( x : int ) : void
+   {
+      if ( x == 0 ) 
+      {
+         // VIOLATION
+      }
+   }
+} 
+      </example>
+	</rule>
+	
+</ruleset>


Mime
View raw message