linter: extract utility functions
diff --git a/linter/src/main/java/org/apache/royale/linter/LINTER.java b/linter/src/main/java/org/apache/royale/linter/LINTER.java
index 0a55f11..2abc08d 100644
--- a/linter/src/main/java/org/apache/royale/linter/LINTER.java
+++ b/linter/src/main/java/org/apache/royale/linter/LINTER.java
@@ -47,51 +47,6 @@
import org.apache.royale.linter.config.ConfigurationValue;
import org.apache.royale.linter.config.Configurator;
import org.apache.royale.linter.config.ILinterSettingsConstants;
-import org.apache.royale.linter.config.LineCommentPosition;
-import org.apache.royale.linter.rules.NoAnyTypeRule;
-import org.apache.royale.linter.rules.NoBooleanEqualityRule;
-import org.apache.royale.linter.rules.ClassNameRule;
-import org.apache.royale.linter.rules.ConstantNameRule;
-import org.apache.royale.linter.rules.NoConstructorDispatchEventRule;
-import org.apache.royale.linter.rules.NoConstructorReturnTypeRule;
-import org.apache.royale.linter.rules.NoDuplicateObjectKeysRule;
-import org.apache.royale.linter.rules.NoDynamicClassRule;
-import org.apache.royale.linter.rules.EmptyCommentRule;
-import org.apache.royale.linter.rules.EmptyFunctionBodyRule;
-import org.apache.royale.linter.rules.EmptyNestedBlockRule;
-import org.apache.royale.linter.rules.EmptyStatementRule;
-import org.apache.royale.linter.rules.FieldNameRule;
-import org.apache.royale.linter.rules.FunctionNameRule;
-import org.apache.royale.linter.rules.NoIfBooleanLiteralRule;
-import org.apache.royale.linter.rules.InterfaceNameRule;
-import org.apache.royale.linter.rules.LineCommentPositionRule;
-import org.apache.royale.linter.rules.LocalVarAndParameterNameRule;
-import org.apache.royale.linter.rules.LocalVarShadowsFieldRule;
-import org.apache.royale.linter.rules.MXMLEmptyAttributeRule;
-import org.apache.royale.linter.rules.MXMLIDRule;
-import org.apache.royale.linter.rules.MaxBlockDepthRule;
-import org.apache.royale.linter.rules.MaxParametersRule;
-import org.apache.royale.linter.rules.MissingASDocRule;
-import org.apache.royale.linter.rules.MissingConstructorSuperRule;
-import org.apache.royale.linter.rules.MissingNamespaceRule;
-import org.apache.royale.linter.rules.MissingSemicolonRule;
-import org.apache.royale.linter.rules.MissingTypeRule;
-import org.apache.royale.linter.rules.NoLeadingZeroesRule;
-import org.apache.royale.linter.rules.OverrideContainsOnlySuperCallRule;
-import org.apache.royale.linter.rules.PackageNameRule;
-import org.apache.royale.linter.rules.NoSparseArrayRule;
-import org.apache.royale.linter.rules.StaticConstantsRule;
-import org.apache.royale.linter.rules.StrictEqualityRule;
-import org.apache.royale.linter.rules.NoStringEventNameRule;
-import org.apache.royale.linter.rules.SwitchWithoutDefaultRule;
-import org.apache.royale.linter.rules.NoThisInClosureRule;
-import org.apache.royale.linter.rules.NoTraceRule;
-import org.apache.royale.linter.rules.UnsafeNegationRule;
-import org.apache.royale.linter.rules.ValidTypeofRule;
-import org.apache.royale.linter.rules.VariablesOnTopRule;
-import org.apache.royale.linter.rules.NoVoidOperatorRule;
-import org.apache.royale.linter.rules.NoWildcardImportRule;
-import org.apache.royale.linter.rules.NoWithRule;
import org.apache.royale.utils.FilenameNormalization;
/**
@@ -246,150 +201,8 @@
return false;
}
- settings = new LinterSettings();
- settings.ignoreProblems = configuration.getIgnoreParsingProblems();
-
- List<LinterRule> rules = new ArrayList<LinterRule>();
- if (configuration.getClassName()) {
- rules.add(new ClassNameRule());
- }
- if (configuration.getConstantName()) {
- rules.add(new ConstantNameRule());
- }
- if (configuration.getEmptyFunctionBody()) {
- rules.add(new EmptyFunctionBodyRule());
- }
- if (configuration.getEmptyNestedBlock()) {
- rules.add(new EmptyNestedBlockRule());
- }
- if (configuration.getFunctionName()) {
- rules.add(new FunctionNameRule());
- }
- if (configuration.getFieldName()) {
- rules.add(new FieldNameRule());
- }
- if (configuration.getOverrideSuper()) {
- rules.add(new OverrideContainsOnlySuperCallRule());
- }
- if (configuration.getEmptyComment()) {
- rules.add(new EmptyCommentRule());
- }
- if (configuration.getEmptyStatement()) {
- rules.add(new EmptyStatementRule());
- }
- if (configuration.getInterfaceName()) {
- rules.add(new InterfaceNameRule());
- }
- if (configuration.getLineCommentPosition() != null) {
- LineCommentPositionRule rule = new LineCommentPositionRule();
- rule.position = LineCommentPosition.valueOf(configuration.getLineCommentPosition().toUpperCase());
- rules.add(rule);
- }
- if (configuration.getLocalVarParamName()) {
- rules.add(new LocalVarAndParameterNameRule());
- }
- if (configuration.getLocalVarShadowsField()) {
- rules.add(new LocalVarShadowsFieldRule());
- }
- if (configuration.getMaxParams() > 0) {
- MaxParametersRule rule = new MaxParametersRule();
- rule.maximum = configuration.getMaxParams();
- rules.add(rule);
- }
- if (configuration.getMaxBlockDepth() > 0) {
- MaxBlockDepthRule rule = new MaxBlockDepthRule();
- rule.maximum = configuration.getMaxBlockDepth();
- rules.add(rule);
- }
- if (configuration.getMissingAsdoc()) {
- rules.add(new MissingASDocRule());
- }
- if (configuration.getMissingConstructorSuper()) {
- rules.add(new MissingConstructorSuperRule());
- }
- if (configuration.getMissingNamespace()) {
- rules.add(new MissingNamespaceRule());
- }
- if (configuration.getMissingSemicolon()) {
- rules.add(new MissingSemicolonRule());
- }
- if (configuration.getMissingType()) {
- rules.add(new MissingTypeRule());
- }
- if (configuration.getMxmlId()) {
- rules.add(new MXMLIDRule());
- }
- if (configuration.getMxmlEmptyAttr()) {
- rules.add(new MXMLEmptyAttributeRule());
- }
- if (configuration.getNoAnyType()) {
- rules.add(new NoAnyTypeRule());
- }
- if (configuration.getNoBooleanEquality()) {
- rules.add(new NoBooleanEqualityRule());
- }
- if (configuration.getNoConstructorDispatch()) {
- rules.add(new NoConstructorDispatchEventRule());
- }
- if (configuration.getNoConstructorReturnType()) {
- rules.add(new NoConstructorReturnTypeRule());
- }
- if (configuration.getNoDuplicateKeys()) {
- rules.add(new NoDuplicateObjectKeysRule());
- }
- if (configuration.getNoDynamicClass()) {
- rules.add(new NoDynamicClassRule());
- }
- if (configuration.getNoIfBoolean()) {
- rules.add(new NoIfBooleanLiteralRule());
- }
- if (configuration.getNoLeadingZero()) {
- rules.add(new NoLeadingZeroesRule());
- }
- if (configuration.getNoSparseArray()) {
- rules.add(new NoSparseArrayRule());
- }
- if (configuration.getNoStringEvent()) {
- rules.add(new NoStringEventNameRule());
- }
- if (configuration.getNoThisClosure()) {
- rules.add(new NoThisInClosureRule());
- }
- if (configuration.getNoTrace()) {
- rules.add(new NoTraceRule());
- }
- if (configuration.getNoVoidOperator()) {
- rules.add(new NoVoidOperatorRule());
- }
- if (configuration.getNoWildcardImport()) {
- rules.add(new NoWildcardImportRule());
- }
- if (configuration.getNoWith()) {
- rules.add(new NoWithRule());
- }
- if (configuration.getPackageName()) {
- rules.add(new PackageNameRule());
- }
- if (configuration.getStaticConstants()) {
- rules.add(new StaticConstantsRule());
- }
- if (configuration.getStrictEquality()) {
- rules.add(new StrictEqualityRule());
- }
- if (configuration.getSwitchDefault()) {
- rules.add(new SwitchWithoutDefaultRule());
- }
- if (configuration.getUnsafeNegation()) {
- rules.add(new UnsafeNegationRule());
- }
- if (configuration.getValidTypeof()) {
- rules.add(new ValidTypeofRule());
- }
- if (configuration.getVarsOnTop()) {
- rules.add(new VariablesOnTopRule());
- }
- settings.rules = rules;
- if (rules.size() == 0) {
+ settings = LinterUtils.configurationToLinterSettings(configuration);
+ if (settings.rules.size() == 0) {
ICompilerProblem problem = new ConfigurationProblem(null, -1, -1, -1, -1, "No linter rules were specified");
problems.add(problem);
return false;
diff --git a/linter/src/main/java/org/apache/royale/linter/LinterUtils.java b/linter/src/main/java/org/apache/royale/linter/LinterUtils.java
new file mode 100644
index 0000000..d7a4542
--- /dev/null
+++ b/linter/src/main/java/org/apache/royale/linter/LinterUtils.java
@@ -0,0 +1,225 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.linter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.royale.linter.config.Configuration;
+import org.apache.royale.linter.config.LineCommentPosition;
+import org.apache.royale.linter.rules.ClassNameRule;
+import org.apache.royale.linter.rules.ConstantNameRule;
+import org.apache.royale.linter.rules.EmptyCommentRule;
+import org.apache.royale.linter.rules.EmptyFunctionBodyRule;
+import org.apache.royale.linter.rules.EmptyNestedBlockRule;
+import org.apache.royale.linter.rules.EmptyStatementRule;
+import org.apache.royale.linter.rules.FieldNameRule;
+import org.apache.royale.linter.rules.FunctionNameRule;
+import org.apache.royale.linter.rules.InterfaceNameRule;
+import org.apache.royale.linter.rules.LineCommentPositionRule;
+import org.apache.royale.linter.rules.LocalVarAndParameterNameRule;
+import org.apache.royale.linter.rules.LocalVarShadowsFieldRule;
+import org.apache.royale.linter.rules.MXMLEmptyAttributeRule;
+import org.apache.royale.linter.rules.MXMLIDRule;
+import org.apache.royale.linter.rules.MaxBlockDepthRule;
+import org.apache.royale.linter.rules.MaxParametersRule;
+import org.apache.royale.linter.rules.MissingASDocRule;
+import org.apache.royale.linter.rules.MissingConstructorSuperRule;
+import org.apache.royale.linter.rules.MissingNamespaceRule;
+import org.apache.royale.linter.rules.MissingSemicolonRule;
+import org.apache.royale.linter.rules.MissingTypeRule;
+import org.apache.royale.linter.rules.NoAnyTypeRule;
+import org.apache.royale.linter.rules.NoBooleanEqualityRule;
+import org.apache.royale.linter.rules.NoConstructorDispatchEventRule;
+import org.apache.royale.linter.rules.NoConstructorReturnTypeRule;
+import org.apache.royale.linter.rules.NoDuplicateObjectKeysRule;
+import org.apache.royale.linter.rules.NoDynamicClassRule;
+import org.apache.royale.linter.rules.NoIfBooleanLiteralRule;
+import org.apache.royale.linter.rules.NoLeadingZeroesRule;
+import org.apache.royale.linter.rules.NoSparseArrayRule;
+import org.apache.royale.linter.rules.NoStringEventNameRule;
+import org.apache.royale.linter.rules.NoThisInClosureRule;
+import org.apache.royale.linter.rules.NoTraceRule;
+import org.apache.royale.linter.rules.NoVoidOperatorRule;
+import org.apache.royale.linter.rules.NoWildcardImportRule;
+import org.apache.royale.linter.rules.NoWithRule;
+import org.apache.royale.linter.rules.OverrideContainsOnlySuperCallRule;
+import org.apache.royale.linter.rules.PackageNameRule;
+import org.apache.royale.linter.rules.StaticConstantsRule;
+import org.apache.royale.linter.rules.StrictEqualityRule;
+import org.apache.royale.linter.rules.SwitchWithoutDefaultRule;
+import org.apache.royale.linter.rules.UnsafeNegationRule;
+import org.apache.royale.linter.rules.ValidTypeofRule;
+import org.apache.royale.linter.rules.VariablesOnTopRule;
+
+public class LinterUtils {
+ public static LinterSettings configurationToLinterSettings(Configuration configuration) {
+ LinterSettings settings = new LinterSettings();
+ settings.ignoreProblems = configuration.getIgnoreParsingProblems();
+
+ List<LinterRule> rules = LinterUtils.configurationToRules(configuration);
+ settings.rules = rules;
+
+ return settings;
+ }
+
+ public static List<LinterRule> configurationToRules(Configuration configuration) {
+ List<LinterRule> rules = new ArrayList<LinterRule>();
+ if (configuration.getClassName()) {
+ rules.add(new ClassNameRule());
+ }
+ if (configuration.getConstantName()) {
+ rules.add(new ConstantNameRule());
+ }
+ if (configuration.getEmptyFunctionBody()) {
+ rules.add(new EmptyFunctionBodyRule());
+ }
+ if (configuration.getEmptyNestedBlock()) {
+ rules.add(new EmptyNestedBlockRule());
+ }
+ if (configuration.getFunctionName()) {
+ rules.add(new FunctionNameRule());
+ }
+ if (configuration.getFieldName()) {
+ rules.add(new FieldNameRule());
+ }
+ if (configuration.getOverrideSuper()) {
+ rules.add(new OverrideContainsOnlySuperCallRule());
+ }
+ if (configuration.getEmptyComment()) {
+ rules.add(new EmptyCommentRule());
+ }
+ if (configuration.getEmptyStatement()) {
+ rules.add(new EmptyStatementRule());
+ }
+ if (configuration.getInterfaceName()) {
+ rules.add(new InterfaceNameRule());
+ }
+ if (configuration.getLineCommentPosition() != null) {
+ LineCommentPositionRule rule = new LineCommentPositionRule();
+ rule.position = LineCommentPosition.valueOf(configuration.getLineCommentPosition().toUpperCase());
+ rules.add(rule);
+ }
+ if (configuration.getLocalVarParamName()) {
+ rules.add(new LocalVarAndParameterNameRule());
+ }
+ if (configuration.getLocalVarShadowsField()) {
+ rules.add(new LocalVarShadowsFieldRule());
+ }
+ if (configuration.getMaxParams() > 0) {
+ MaxParametersRule rule = new MaxParametersRule();
+ rule.maximum = configuration.getMaxParams();
+ rules.add(rule);
+ }
+ if (configuration.getMaxBlockDepth() > 0) {
+ MaxBlockDepthRule rule = new MaxBlockDepthRule();
+ rule.maximum = configuration.getMaxBlockDepth();
+ rules.add(rule);
+ }
+ if (configuration.getMissingAsdoc()) {
+ rules.add(new MissingASDocRule());
+ }
+ if (configuration.getMissingConstructorSuper()) {
+ rules.add(new MissingConstructorSuperRule());
+ }
+ if (configuration.getMissingNamespace()) {
+ rules.add(new MissingNamespaceRule());
+ }
+ if (configuration.getMissingSemicolon()) {
+ rules.add(new MissingSemicolonRule());
+ }
+ if (configuration.getMissingType()) {
+ rules.add(new MissingTypeRule());
+ }
+ if (configuration.getMxmlId()) {
+ rules.add(new MXMLIDRule());
+ }
+ if (configuration.getMxmlEmptyAttr()) {
+ rules.add(new MXMLEmptyAttributeRule());
+ }
+ if (configuration.getNoAnyType()) {
+ rules.add(new NoAnyTypeRule());
+ }
+ if (configuration.getNoBooleanEquality()) {
+ rules.add(new NoBooleanEqualityRule());
+ }
+ if (configuration.getNoConstructorDispatch()) {
+ rules.add(new NoConstructorDispatchEventRule());
+ }
+ if (configuration.getNoConstructorReturnType()) {
+ rules.add(new NoConstructorReturnTypeRule());
+ }
+ if (configuration.getNoDuplicateKeys()) {
+ rules.add(new NoDuplicateObjectKeysRule());
+ }
+ if (configuration.getNoDynamicClass()) {
+ rules.add(new NoDynamicClassRule());
+ }
+ if (configuration.getNoIfBoolean()) {
+ rules.add(new NoIfBooleanLiteralRule());
+ }
+ if (configuration.getNoLeadingZero()) {
+ rules.add(new NoLeadingZeroesRule());
+ }
+ if (configuration.getNoSparseArray()) {
+ rules.add(new NoSparseArrayRule());
+ }
+ if (configuration.getNoStringEvent()) {
+ rules.add(new NoStringEventNameRule());
+ }
+ if (configuration.getNoThisClosure()) {
+ rules.add(new NoThisInClosureRule());
+ }
+ if (configuration.getNoTrace()) {
+ rules.add(new NoTraceRule());
+ }
+ if (configuration.getNoVoidOperator()) {
+ rules.add(new NoVoidOperatorRule());
+ }
+ if (configuration.getNoWildcardImport()) {
+ rules.add(new NoWildcardImportRule());
+ }
+ if (configuration.getNoWith()) {
+ rules.add(new NoWithRule());
+ }
+ if (configuration.getPackageName()) {
+ rules.add(new PackageNameRule());
+ }
+ if (configuration.getStaticConstants()) {
+ rules.add(new StaticConstantsRule());
+ }
+ if (configuration.getStrictEquality()) {
+ rules.add(new StrictEqualityRule());
+ }
+ if (configuration.getSwitchDefault()) {
+ rules.add(new SwitchWithoutDefaultRule());
+ }
+ if (configuration.getUnsafeNegation()) {
+ rules.add(new UnsafeNegationRule());
+ }
+ if (configuration.getValidTypeof()) {
+ rules.add(new ValidTypeofRule());
+ }
+ if (configuration.getVarsOnTop()) {
+ rules.add(new VariablesOnTopRule());
+ }
+ return rules;
+ }
+}