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;
+	}
+}