blob: d7a4542c348f5c898c2d7522fc767c4c174019c3 [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// 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;
}
}