You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/04/25 08:18:26 UTC
[27/46] FlexPMD Donation from Adobe Systems Inc
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/.pmd
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/.pmd b/FlexPMD/flex-pmd-metrics/.pmd
new file mode 100644
index 0000000..b5adf0f
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/.pmd
@@ -0,0 +1,975 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+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.
+
+-->
+<pmd>
+ <useProjectRuleSet>false</useProjectRuleSet>
+ <ruleSetFile>.ruleset</ruleSetFile>
+ <rules>
+ <rule>
+ <name>LooseCoupling</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloneMethodMustImplementCloneable</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedImports</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SignatureDeclareThrowsException</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IfStmtsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>WhileLoopsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IfElseStmtsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ForLoopsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseSingleton</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyBooleanReturns</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyBooleanExpressions</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SwitchStmtsShouldHaveDefault</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDeeplyNestedIfStmts</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidReassigningParameters</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SwitchDensity</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ConstructorCallsOverridableMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AccessorClassGeneration</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalFieldCouldBeStatic</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloseResource</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NonStaticInitializer</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DefaultLabelNotLastInSwitchStmt</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NonCaseLabelInSwitchStatement</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>OptimizableToArrayCall</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BadComparison</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EqualsNull</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ConfusingTernary</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InstantiationToGetClass</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IdempotentOperations</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimpleDateFormatNeedsLocale</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ImmutableField</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseLocaleWithCaseConversions</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidProtectedFieldInFinalClass</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AssignmentToNonFinalStatic</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MissingStaticMethodInNonInstantiatableClass</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidSynchronizedAtMethodLevel</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MissingBreakInSwitch</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseNotifyAllInsteadOfNotify</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidInstanceofChecksInCatchClause</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AbstractClassWithoutAbstractMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyConditional</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CompareObjectsWithEquals</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>PositionLiteralsFirstInComparisons</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryLocalBeforeReturn</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NonThreadSafeSingleton</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UncommentedEmptyMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UncommentedEmptyConstructor</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidConstantsInterface</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnsynchronizedStaticDateFormatter</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>PreserveStackTrace</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseCollectionIsEmpty</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ClassWithOnlyPrivateConstructorsShouldBeFinal</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyMethodInAbstractClassShouldBeAbstract</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SingularField</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReturnEmptyArrayRatherThanNull</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AbstractClassWithoutAnyMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooFewBranchesForASwitchStatement</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidCatchingThrowable</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SignatureDeclareThrowsException</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExceptionAsFlowControl</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidCatchingNPE</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidThrowingRawExceptionTypes</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidThrowingNullPointerException</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidRethrowingException</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotExtendJavaLangError</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotThrowExceptionInFinally</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidThrowingNewInstanceOfSameException</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedPrivateField</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedLocalVariable</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedPrivateMethod</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedFormalParameter</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MoreThanOneLogger</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LoggerIsNotStaticFinal</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SystemPrintln</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidPrintStackTrace</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDuplicateLiterals</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StringInstantiation</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StringToString</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InefficientStringBuffering</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryCaseChange</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseStringBufferLength</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AppendCharacterWithChar</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ConsecutiveLiteralAppends</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseIndexOfChar</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InefficientEmptyStringCheck</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InsufficientStringBufferDeclaration</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UselessStringValueOf</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StringBufferInstantiationWithChar</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseEqualsToCompareStrings</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidStringBufferField</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReplaceVectorWithList</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReplaceHashtableWithMap</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReplaceEnumerationWithIterator</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidEnumAsIdentifier</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidAssertAsIdentifier</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IntegerInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ByteInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ShortInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LongInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4TestShouldUseBeforeAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4TestShouldUseAfterAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4TestShouldUseTestAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4SuitesShouldUseSuiteAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitUseExpected</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseProperClassLoader</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MDBAndSessionBeanNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>RemoteSessionInterfaceNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LocalInterfaceSessionNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LocalHomeNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>RemoteInterfaceNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotCallSystemExit</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StaticEJBFieldShouldBeFinal</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotUseThreads</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LocalVariableCouldBeFinal</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodArgumentCouldBeFinal</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidInstantiatingObjectsInLoops</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseArrayListInsteadOfVector</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyStartsWith</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseStringBufferForStringAppends</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseArraysAsList</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidArrayLoops</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryWrapperObjectCreation</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AddEmptyString</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyCatchBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyIfStmt</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyWhileStmt</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyTryBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyFinallyBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptySwitchStatements</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JumbledIncrementer</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ForLoopShouldBeWhileLoop</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryConversionTemporary</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>OverrideBothEqualsAndHashcode</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoubleCheckedLocking</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReturnFromFinallyBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptySynchronizedBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryReturn</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyStaticInitializer</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnconditionalIfStatement</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyStatementNotInLoop</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BooleanInstantiation</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryFinalModifier</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CollapsibleIfStatements</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UselessOverridingMethod</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ClassCastExceptionWithToArray</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDecimalLiteralsInBigDecimalConstructor</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UselessOperationOnImmutable</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MisplacedNullCheck</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedNullCheckInEquals</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidThreadGroup</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BrokenNullCheck</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BigIntegerInstantiation</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingOctalValues</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingHardCodedIP</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CheckResultSet</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidMultipleUnaryOperators</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyInitializer</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodReturnsInternalArray</name>
+ <ruleset>Security Code Guidelines</ruleset>
+ </rule>
+ <rule>
+ <name>ArrayIsStoredDirectly</name>
+ <ruleset>Security Code Guidelines</ruleset>
+ </rule>
+ <rule>
+ <name>CouplingBetweenObjects</name>
+ <ruleset>Coupling Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveImports</name>
+ <ruleset>Coupling Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LooseCoupling</name>
+ <ruleset>Coupling Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DuplicateImports</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DontImportJavaLang</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedImports</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ImportFromSamePackage</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooManyStaticImports</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitStaticSuite</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitSpelling</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitAssertionsShouldIncludeMessage</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitTestsShouldIncludeAssert</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TestClassWithoutTestCases</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryBooleanAssertion</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseAssertEqualsInsteadOfAssertTrue</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseAssertSameInsteadOfAssertTrue</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseAssertNullInsteadOfAssertTrue</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyBooleanAssertion</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryConstructor</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NullAssignment</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>OnlyOneReturn</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedModifier</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AssignmentInOperand</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AtLeastOneConstructor</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DontImportSun</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousOctalEscape</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CallSuperInConstructor</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryParentheses</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DefaultPackage</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BooleanInversion</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DataflowAnomalyAnalysis</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidFinalLocalVariable</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingShortType</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingVolatile</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingNativeCode</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidAccessibilityAlteration</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotCallGarbageCollectionExplicitly</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ShortVariable</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LongVariable</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ShortMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>VariableNamingConventions</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodNamingConventions</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ClassNamingConventions</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AbstractNaming</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDollarSigns</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodWithSameNameAsEnclosingClass</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousHashcodeMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousConstantFieldName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousEqualsMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidFieldNameMatchingTypeName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidFieldNameMatchingMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NoPackage</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>PackageCase</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MisleadingVariableName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BooleanGetMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NPathComplexity</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveMethodLength</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveParameterList</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveClassLength</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CyclomaticComplexity</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessivePublicCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooManyFields</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NcssMethodCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NcssTypeCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NcssConstructorCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooManyMethods</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyFinalizer</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeOnlyCallsSuperFinalize</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeOverloaded</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeDoesNotCallSuperFinalize</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeShouldBeProtected</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidCallingFinalize</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseCorrectExceptionLogging</name>
+ <ruleset>Jakarta Commons Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ProperLogger</name>
+ <ruleset>Jakarta Commons Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BeanMembersShouldSerialize</name>
+ <ruleset>JavaBean Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MissingSerialVersionUID</name>
+ <ruleset>JavaBean Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ProperCloneImplementation</name>
+ <ruleset>Clone Implementation Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloneThrowsCloneNotSupportedException</name>
+ <ruleset>Clone Implementation Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloneMethodMustImplementCloneable</name>
+ <ruleset>Clone Implementation Rules</ruleset>
+ </rule>
+ </rules>
+ <includeDerivedFiles>false</includeDerivedFiles>
+ <violationsAsErrors>true</violationsAsErrors>
+</pmd>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/pom.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/pom.xml b/FlexPMD/flex-pmd-metrics/pom.xml
new file mode 100644
index 0000000..e4d4d35
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/pom.xml
@@ -0,0 +1,98 @@
+<!--
+
+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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.adobe.ac</groupId>
+ <artifactId>flex-pmd-metrics</artifactId>
+ <name>Adobe Flex Metrics</name>
+
+ <parent>
+ <groupId>com.adobe.ac</groupId>
+ <artifactId>flex-pmd-java-parent</artifactId>
+ <version>1.3-SNAPSHOT</version>
+ <relativePath>../flex-pmd-java-parent/pom.xml</relativePath>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>as3-plugin-utils</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>flex-pmd-files</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>flex-pmd-ruleset-api</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>${dom4j.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.parent.groupId}</groupId>
+ <artifactId>flex-pmd-test-resources</artifactId>
+ <version>${project.parent.version}</version>
+ <classifier>resources</classifier>
+ <type>zip</type>
+ <scope>provided</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <testResources>
+ <testResource>
+ <directory>${project.build.directory}/test/generated-resources</directory>
+ </testResource>
+ </testResources>
+
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack-test-resources</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeGroupIds>${project.groupId}</includeGroupIds>
+ <includes>**/*.as,**/*.mxml</includes>
+ <outputDirectory>${project.build.directory}/test/generated-resources</outputDirectory>
+ <excludeTransitive>true</excludeTransitive>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractNamedMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractNamedMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractNamedMetrics.java
new file mode 100644
index 0000000..039d32c
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractNamedMetrics.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.metrics;
+
+public abstract class AbstractNamedMetrics extends AbstractPackagedMetrics
+{
+ private final String name;
+
+ protected AbstractNamedMetrics( final int nonCommentStatements,
+ final String nameToBeSet,
+ final String packageName,
+ final int ccn,
+ final int asDocs,
+ final int multiLineCommentsToBeSet )
+ {
+ super( nonCommentStatements, packageName, ccn, asDocs, multiLineCommentsToBeSet );
+ name = nameToBeSet;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractPackagedMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractPackagedMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractPackagedMetrics.java
new file mode 100644
index 0000000..92ed8fa
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AbstractPackagedMetrics.java
@@ -0,0 +1,89 @@
+/*
+ * 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.metrics;
+
+import java.text.MessageFormat;
+
+public abstract class AbstractPackagedMetrics implements IMetrics
+{
+ private final int asDocs;
+ private final int ccn;
+ private final int multiLineComments;
+ private final int nonCommentStatements;
+ private final String packageName;
+
+ protected AbstractPackagedMetrics( final int nonCommentStatementsToBeSet,
+ final String packageNameToBeSet,
+ final int ccnToBeSet,
+ final int asDocsToBeSet,
+ final int multiLineCommentsToBeSet )
+ {
+ super();
+ nonCommentStatements = nonCommentStatementsToBeSet;
+ packageName = packageNameToBeSet;
+ ccn = ccnToBeSet;
+ asDocs = asDocsToBeSet;
+ multiLineComments = multiLineCommentsToBeSet;
+ }
+
+ public int getAsDocs()
+ {
+ return asDocs;
+ }
+
+ public abstract String getFullName();
+
+ public abstract String getMetricsName();
+
+ public int getMultiLineComments()
+ {
+ return multiLineComments;
+ }
+
+ public int getNonCommentStatements()
+ {
+ return getNcss()
+ + nonCommentStatements;
+ }
+
+ public String getPackageName()
+ {
+ return packageName;
+ }
+
+ public String toXmlString()
+ {
+ return new StringBuffer().append( MessageFormat.format( "<{0}><name>{1}</name><ccn>{2}</ccn><ncss>{3}</ncss>"
+ + "<javadocs>{4}</javadocs>"
+ + "<javadoc_lines>{4}</javadoc_lines>"
+ + "<multi_comment_lines>{5}</multi_comment_lines>"
+ + "<single_comment_lines>0</single_comment_lines>"
+ + "{6}</{7}>",
+ getMetricsName(),
+ getFullName().equals( "" ) ? "."
+ : getFullName(),
+ String.valueOf( ccn ),
+ String.valueOf( getNonCommentStatements() ),
+ String.valueOf( asDocs ),
+ String.valueOf( multiLineComments ),
+ getContreteXml(),
+ getMetricsName() ) )
+ .toString();
+ }
+
+ protected abstract int getNcss();
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageClassMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageClassMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageClassMetrics.java
new file mode 100644
index 0000000..f1f4514
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageClassMetrics.java
@@ -0,0 +1,57 @@
+/*
+ * 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.metrics;
+
+import java.util.List;
+
+public final class AverageClassMetrics extends AverageMetricsBase
+{
+ public static AverageClassMetrics create( final List< ClassMetrics > classMetrics,
+ final TotalPackageMetrics totalPackageMetrics )
+ {
+ int functions = 0;
+
+ for ( final ClassMetrics metrics : classMetrics )
+ {
+ functions += metrics.getFunctions();
+ }
+ return new AverageClassMetrics( totalPackageMetrics.getTotalStatements(),
+ functions,
+ totalPackageMetrics.getTotalAsDocs(),
+ totalPackageMetrics.getTotalMultiLineComment(),
+ classMetrics.size() );
+ }
+
+ private final double averageFunctions;
+
+ private AverageClassMetrics( final double nonCommentStatements,
+ final double functions,
+ final double asDocs,
+ final double multipleComments,
+ final double totalClassNumber )
+ {
+ super( totalClassNumber, asDocs, nonCommentStatements, multipleComments );
+ averageFunctions = totalClassNumber > 0 ? functions
+ / totalClassNumber
+ : 0;
+ }
+
+ public double getAverageFunctions()
+ {
+ return averageFunctions;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageFunctionMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageFunctionMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageFunctionMetrics.java
new file mode 100644
index 0000000..e81284e
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageFunctionMetrics.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.metrics;
+
+import java.util.List;
+
+public final class AverageFunctionMetrics extends AverageMetricsBase
+{
+ public static AverageFunctionMetrics create( final List< FunctionMetrics > functionMetrics,
+ final TotalPackageMetrics totalPackageMetrics )
+ {
+ return new AverageFunctionMetrics( totalPackageMetrics.getTotalStatements(),
+ totalPackageMetrics.getTotalAsDocs(),
+ totalPackageMetrics.getTotalMultiLineComment(),
+ functionMetrics.size() );
+ }
+
+ private AverageFunctionMetrics( final double nonCommentStatements,
+ final double asDocs,
+ final double multipleComments,
+ final double totalFunctions )
+ {
+ super( totalFunctions, asDocs, nonCommentStatements, multipleComments );
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageMetricsBase.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageMetricsBase.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageMetricsBase.java
new file mode 100644
index 0000000..00cbdaf
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/AverageMetricsBase.java
@@ -0,0 +1,53 @@
+/*
+ * 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.metrics;
+
+public class AverageMetricsBase
+{
+ private final double averageDocs;
+ private final double averageMultipleComments;
+ private final double averageStatements;
+
+ protected AverageMetricsBase( final double total,
+ final double asDocs,
+ final double totalStatements,
+ final double mutlipleComments )
+ {
+ super();
+ this.averageStatements = totalStatements
+ / total;
+ this.averageDocs = asDocs
+ / total;
+ this.averageMultipleComments = mutlipleComments
+ / total;
+ }
+
+ public double getAverageDocs()
+ {
+ return averageDocs;
+ }
+
+ public double getAverageMultipleComments()
+ {
+ return averageMultipleComments;
+ }
+
+ public double getAverageStatements()
+ {
+ return averageStatements;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ClassMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ClassMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ClassMetrics.java
new file mode 100644
index 0000000..9c01c14
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ClassMetrics.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.metrics;
+
+import java.io.File;
+
+import com.adobe.ac.pmd.files.IFlexFile;
+import com.adobe.ac.pmd.nodes.IClass;
+
+public final class ClassMetrics extends AbstractNamedMetrics
+{
+ public static ClassMetrics create( final String packageFullName,
+ final File fileInPackage,
+ final InternalFunctionMetrics functionMetrics,
+ final IClass classNode,
+ final IFlexFile file,
+ final double mxmlFactor )
+ {
+ final int average = classNode == null ? 0
+ : ( int ) Math.round( classNode.getAverageCyclomaticComplexity() );
+ final int asDocs = ( classNode == null
+ || classNode.getAsDoc() == null ? 0
+ : MetricUtils.computeNbOfLines( classNode.getAsDoc()
+ .getStringValue() ) )
+ + ( functionMetrics == null ? 0
+ : functionMetrics.getAsDocsInClass() );
+ final int multiLineComments = ( classNode == null ? 0
+ : MetricUtils.computeMultiLineComments( classNode ) )
+ + ( functionMetrics == null ? 0
+ : functionMetrics.getMultipleLineCommentInClass() );
+ final int nonCommentStatements = computeStatements( functionMetrics,
+ file,
+ mxmlFactor );
+ return new ClassMetrics( nonCommentStatements, // NOPMD
+ classNode == null ? 0
+ : classNode.getFunctions().size(),
+ fileInPackage.getName().replace( ".as",
+ "" ).replace( ".mxml",
+ "" ),
+ packageFullName,
+ average,
+ asDocs,
+ multiLineComments,
+ classNode );
+ }
+
+ private static int computeStatements( final InternalFunctionMetrics functionMetrics,
+ final IFlexFile file,
+ final double mxmlFactor )
+ {
+ int stts = functionMetrics == null ? 0
+ : functionMetrics.getNcssInClass();
+ if ( file.isMxml() )
+ {
+ stts += file.getLinesNb()
+ * mxmlFactor;
+ }
+ return stts;
+ }
+
+ private final IClass classNode;
+ private final int functions;
+
+ private ClassMetrics( final int nonCommentStatements,
+ final int functionsToBeSet,
+ final String name,
+ final String packageName,
+ final int ccn,
+ final int asDocs,
+ final int multiLineCommentsToBeSet,
+ final IClass classNodeToBeSet )
+ {
+ super( nonCommentStatements, name, packageName, ccn, asDocs, multiLineCommentsToBeSet );
+
+ functions = functionsToBeSet;
+ this.classNode = classNodeToBeSet;
+ }
+
+ public String getContreteXml()
+ {
+ return "<functions>"
+ + functions + "</functions>";
+ }
+
+ @Override
+ public String getFullName()
+ {
+ return getPackageName().compareTo( "" ) == 0 ? getName()
+ : getPackageName()
+ + "." + getName();
+ }
+
+ public int getFunctions()
+ {
+ return functions;
+ }
+
+ @Override
+ public String getMetricsName()
+ {
+ return "object";
+ }
+
+ @Override
+ protected int getNcss()
+ {
+ if ( classNode == null )
+ {
+ return 1;
+ }
+ return 1
+ + classNode.getAttributes().size() + classNode.getConstants().size() + functions;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/FunctionMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/FunctionMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/FunctionMetrics.java
new file mode 100644
index 0000000..9510a66
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/FunctionMetrics.java
@@ -0,0 +1,74 @@
+/*
+ * 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.metrics;
+
+import com.adobe.ac.pmd.nodes.IClass;
+import com.adobe.ac.pmd.nodes.IFunction;
+
+public final class FunctionMetrics extends AbstractNamedMetrics
+{
+ static FunctionMetrics create( final String packageFullName,
+ final IClass classNode,
+ final IFunction function,
+ final int asDocs,
+ final int multipleDoc )
+ {
+ return new FunctionMetrics( function.getStatementNbInBody(), // NOPMD
+ function.getName(),
+ packageFullName.compareTo( "" ) == 0 ? classNode.getName()
+ : packageFullName
+ + "." + classNode.getName(),
+ function.getCyclomaticComplexity(),
+ asDocs,
+ multipleDoc );
+ }
+
+ private FunctionMetrics( final int nonCommentStatements,
+ final String name,
+ final String packageName,
+ final int ccn,
+ final int asDocs,
+ final int multiLineCommentsToBeSet )
+ {
+ super( nonCommentStatements, name, packageName, ccn, asDocs, multiLineCommentsToBeSet );
+ }
+
+ public String getContreteXml()
+ {
+ return "";
+ }
+
+ @Override
+ public String getFullName()
+ {
+ return getPackageName().compareTo( "" ) == 0 ? getName()
+ : getPackageName()
+ + "::" + getName();
+ }
+
+ @Override
+ public String getMetricsName()
+ {
+ return "function";
+ }
+
+ @Override
+ protected int getNcss()
+ {
+ return 1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/IMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/IMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/IMetrics.java
new file mode 100644
index 0000000..7c7f814
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/IMetrics.java
@@ -0,0 +1,22 @@
+/*
+ * 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.metrics;
+
+public interface IMetrics
+{
+ String getContreteXml();
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/InternalFunctionMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/InternalFunctionMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/InternalFunctionMetrics.java
new file mode 100644
index 0000000..974837d
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/InternalFunctionMetrics.java
@@ -0,0 +1,85 @@
+/*
+ * 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.metrics;
+
+import com.adobe.ac.pmd.nodes.IAttribute;
+import com.adobe.ac.pmd.nodes.IClass;
+import com.adobe.ac.pmd.nodes.IFunction;
+
+public final class InternalFunctionMetrics
+{
+ public static InternalFunctionMetrics create( final ProjectMetrics metrics,
+ final String packageFullName,
+ final IClass classNode )
+ {
+ int ncssInClass = 0;
+ int asDocsInClass = 0;
+ int multipleLineCommentInClass = 0;
+
+ for ( final IFunction function : classNode.getFunctions() )
+ {
+ final int multipleDoc = MetricUtils.computeMultiLineComments( function );
+ final int asDocs = MetricUtils.computeAsDocs( function );
+
+ ncssInClass += function.getStatementNbInBody();
+ multipleLineCommentInClass += multipleDoc;
+
+ asDocsInClass += asDocs;
+
+ metrics.getFunctionMetrics().add( FunctionMetrics.create( packageFullName,
+ classNode,
+ function,
+ asDocs,
+ multipleDoc ) );
+ }
+
+ for ( final IAttribute attribute : classNode.getAttributes() )
+ {
+ asDocsInClass += MetricUtils.computeAsDocs( attribute );
+ }
+
+ return new InternalFunctionMetrics( ncssInClass, asDocsInClass, multipleLineCommentInClass );
+ }
+
+ private final int asDocsInClass;
+ private final int multipleLineCommentInClass;
+ private final int ncssInClass;
+
+ private InternalFunctionMetrics( final int ncssInClassToBeSet,
+ final int asDocsInClassToBeSet,
+ final int multipleLineCommentInClassToBeSet )
+ {
+ ncssInClass = ncssInClassToBeSet;
+ asDocsInClass = asDocsInClassToBeSet;
+ multipleLineCommentInClass = multipleLineCommentInClassToBeSet;
+ }
+
+ public int getAsDocsInClass()
+ {
+ return asDocsInClass;
+ }
+
+ public int getMultipleLineCommentInClass()
+ {
+ return multipleLineCommentInClass;
+ }
+
+ public int getNcssInClass()
+ {
+ return ncssInClass;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/MetricUtils.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/MetricUtils.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/MetricUtils.java
new file mode 100644
index 0000000..8dc8fe2
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/MetricUtils.java
@@ -0,0 +1,70 @@
+/*
+ * 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.metrics;
+
+import java.io.File;
+
+import com.adobe.ac.pmd.nodes.IAsDocHolder;
+import com.adobe.ac.pmd.nodes.ICommentHolder;
+import com.adobe.ac.pmd.parser.IParserNode;
+
+public final class MetricUtils
+{
+ public static int computeAsDocs( final IAsDocHolder attribute )
+ {
+ return attribute.getAsDoc() == null ? 0
+ : computeNbOfLines( attribute.getAsDoc().getStringValue() );
+ }
+
+ public static int computeMultiLineComments( final ICommentHolder commentHolder )
+ {
+ int lines = 0;
+
+ for ( final IParserNode comment : commentHolder.getMultiLinesComment() )
+ {
+ lines += comment.getStringValue() == null ? 0
+ : MetricUtils.computeNbOfLines( comment.getStringValue() );
+ }
+ return lines;
+ }
+
+ public static int computeNbOfLines( final String lines )
+ {
+ return lines.split( "\\n" ).length;
+ }
+
+ public static String getQualifiedName( final File sourceDirectory,
+ final File file )
+ {
+ final String qualifiedName = file.getAbsolutePath().replace( sourceDirectory.getAbsolutePath(),
+ "" ).replace( "/",
+ "." ).replace( "\\",
+ "." ).trim();
+
+ if ( qualifiedName.length() > 0
+ && qualifiedName.charAt( 0 ) == '.' )
+ {
+ return qualifiedName.substring( 1 );
+ }
+
+ return qualifiedName;
+ }
+
+ private MetricUtils()
+ {
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/PackageMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/PackageMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/PackageMetrics.java
new file mode 100644
index 0000000..3387fef
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/PackageMetrics.java
@@ -0,0 +1,95 @@
+/*
+ * 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.metrics;
+
+import java.io.File;
+import java.text.MessageFormat;
+import java.util.Collection;
+
+public final class PackageMetrics extends AbstractPackagedMetrics
+{
+ public static PackageMetrics create( final Collection< File > classesInPackage,
+ final String packageFullName,
+ final int functionsInPackage,
+ final int ncssInPackage,
+ final int asDocsInPackage,
+ final int multipleLineCommentInPackage,
+ final int imports )
+ {
+ return new PackageMetrics( ncssInPackage,// NOPMD
+ functionsInPackage,
+ classesInPackage.size(),
+ packageFullName,
+ asDocsInPackage,
+ multipleLineCommentInPackage,
+ imports );
+ }
+
+ private final int classes;
+ private final int functions;
+ private final int imports;
+
+ private PackageMetrics( final int nonCommentStatements,
+ final int functionsToBeSet,
+ final int classesToBeSet,
+ final String packageName,
+ final int asDocs,
+ final int multiLineComments,
+ final int importsToBeSet )
+ {
+ super( nonCommentStatements, packageName, 0, asDocs, multiLineComments );
+ functions = functionsToBeSet;
+ classes = classesToBeSet;
+ imports = importsToBeSet;
+ }
+
+ public int getClasses()
+ {
+ return classes;
+ }
+
+ public String getContreteXml()
+ {
+ return new StringBuffer().append( MessageFormat.format( "<functions>{0}</functions>"
+ + "<classes>{1}</classes>",
+ String.valueOf( functions ),
+ String.valueOf( classes ) ) ).toString();
+ }
+
+ @Override
+ public String getFullName()
+ {
+ return getPackageName();
+ }
+
+ public int getFunctions()
+ {
+ return functions;
+ }
+
+ @Override
+ public String getMetricsName()
+ {
+ return "package";
+ }
+
+ @Override
+ protected int getNcss()
+ {
+ return imports + 1;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ProjectMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ProjectMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ProjectMetrics.java
new file mode 100644
index 0000000..04325b4
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/ProjectMetrics.java
@@ -0,0 +1,118 @@
+/*
+ * 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.metrics;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+public final class ProjectMetrics
+{
+ private AverageFunctionMetrics averageFunctions;
+ private AverageClassMetrics averageObjects;
+ private final List< ClassMetrics > classMetrics;
+ private final String date;
+ private final List< FunctionMetrics > functionMetrics;
+ private final List< PackageMetrics > packageMetrics;
+ private final String time;
+ private TotalPackageMetrics totalPackages;
+
+ public ProjectMetrics()
+ {
+ super();
+
+ final Date now = new Date();
+
+ date = new SimpleDateFormat( "yyyy-M-d", Locale.US ).format( now );
+ time = new SimpleDateFormat( "k:m:s", Locale.US ).format( now );
+ classMetrics = new ArrayList< ClassMetrics >();
+ functionMetrics = new ArrayList< FunctionMetrics >();
+ packageMetrics = new ArrayList< PackageMetrics >();
+ }
+
+ public AverageFunctionMetrics getAverageFunctions()
+ {
+ return averageFunctions;
+ }
+
+ public AverageClassMetrics getAverageObjects()
+ {
+ return averageObjects;
+ }
+
+ public List< ClassMetrics > getClasses()
+ {
+ return classMetrics;
+ }
+
+ public List< ClassMetrics > getClassMetrics()
+ {
+ return classMetrics;
+ }
+
+ public String getDate()
+ {
+ return date;
+ }
+
+ public List< FunctionMetrics > getFunctionMetrics()
+ {
+ return functionMetrics;
+ }
+
+ public List< FunctionMetrics > getFunctions()
+ {
+ return functionMetrics;
+ }
+
+ public List< PackageMetrics > getPackageMetrics()
+ {
+ return packageMetrics;
+ }
+
+ public List< PackageMetrics > getPackages()
+ {
+ return packageMetrics;
+ }
+
+ public String getTime()
+ {
+ return time;
+ }
+
+ public TotalPackageMetrics getTotalPackages()
+ {
+ return totalPackages;
+ }
+
+ public void setAverageFunctions( final AverageFunctionMetrics averageFunctionsToBeSet )
+ {
+ averageFunctions = averageFunctionsToBeSet;
+ }
+
+ public void setAverageObjects( final AverageClassMetrics averageObjectsToBeSet )
+ {
+ averageObjects = averageObjectsToBeSet;
+ }
+
+ public void setTotalPackages( final TotalPackageMetrics totalPackagesToBeSet )
+ {
+ totalPackages = totalPackagesToBeSet;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/TotalPackageMetrics.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/TotalPackageMetrics.java b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/TotalPackageMetrics.java
new file mode 100644
index 0000000..2836ee9
--- /dev/null
+++ b/FlexPMD/flex-pmd-metrics/src/main/java/com/adobe/ac/pmd/metrics/TotalPackageMetrics.java
@@ -0,0 +1,107 @@
+/*
+ * 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.metrics;
+
+import java.text.MessageFormat;
+import java.util.List;
+
+public final class TotalPackageMetrics implements IMetrics
+{
+ public static TotalPackageMetrics create( final List< PackageMetrics > packageMetrics )
+ {
+ int nonCommentStatement = 0;
+ int functions = 0;
+ int classes = 0;
+ int asDocs = 0;
+ int multipleLineComments = 0;
+
+ for ( final PackageMetrics metrics : packageMetrics )
+ {
+ nonCommentStatement += metrics.getNonCommentStatements();
+ functions += metrics.getFunctions();
+ classes += metrics.getClasses();
+ asDocs += metrics.getAsDocs();
+ multipleLineComments += metrics.getMultiLineComments();
+ }
+ return new TotalPackageMetrics( nonCommentStatement, functions, classes, asDocs, multipleLineComments );
+ }
+
+ private final int totalAsDocs;
+ private final int totalClasses;
+ private final int totalFunctions;
+ private final int totalMultiLineComment;
+ private final int totalStatements;
+
+ private TotalPackageMetrics( final int totalStatementsToBeSet,
+ final int totalFunctionsToBeSet,
+ final int totalClassesToBeSet,
+ final int totalAsDocsToBeSet,
+ final int totalMultiLineCommentToBeSet )
+ {
+ super();
+
+ totalStatements = totalStatementsToBeSet;
+ totalFunctions = totalFunctionsToBeSet;
+ totalClasses = totalClassesToBeSet;
+ totalAsDocs = totalAsDocsToBeSet;
+ totalMultiLineComment = totalMultiLineCommentToBeSet;
+ }
+
+ public String getContreteXml()
+ {
+ return new StringBuffer().append( MessageFormat.format( "<total>"
+ + "<classes>{0}</classes>"
+ + "<functions>{1}</functions>"
+ + "<ncss>{2}</ncss>"
+ + "<javadocs>{3}</javadocs>"
+ + "<javadoc_lines>{3}</javadoc_lines>"
+ + "<single_comment_lines>0</single_comment_lines>"
+ + "<multi_comment_lines>{4}</multi_comment_lines>"
+ + "</total>",
+ String.valueOf( totalClasses ),
+ String.valueOf( totalFunctions ),
+ String.valueOf( totalStatements ),
+ String.valueOf( totalAsDocs ),
+ String.valueOf( totalMultiLineComment ) ) )
+ .toString();
+ }
+
+ public int getTotalAsDocs()
+ {
+ return totalAsDocs;
+ }
+
+ public int getTotalClasses()
+ {
+ return totalClasses;
+ }
+
+ public int getTotalFunctions()
+ {
+ return totalFunctions;
+ }
+
+ public int getTotalMultiLineComment()
+ {
+ return totalMultiLineComment;
+ }
+
+ public int getTotalStatements()
+ {
+ return totalStatements;
+ }
+}