/* * Sonar JavaScript Plugin * Copyright (C) 2011 Eriks Nukis * dev@sonar.codehaus.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 */ package org.sonar.plugins.javascript; import java.util.ArrayList; import java.util.List; import org.sonar.api.Extension; import org.sonar.api.Plugin; import org.sonar.api.Properties; import org.sonar.api.Property; import org.sonar.plugins.javascript.colorizer.JavaScriptColorizerFormat; import org.sonar.plugins.javascript.complexity.JavaScriptComplexitySensor; import org.sonar.plugins.javascript.cpd.JavaScriptCpdMapping; import org.sonar.plugins.javascript.jslint.JavaScriptDefaultProfile; import org.sonar.plugins.javascript.jslint.JavaScriptJSLintSensor; import org.sonar.plugins.javascript.jslint.JavaScriptRuleRepository; import org.sonar.plugins.javascript.jslint.JsLintRuleManager; import org.sonar.plugins.javascript.squid.JavaScriptSquidSensor; @Properties({ @Property(key = JavaScriptPlugin.FILE_SUFFIXES_KEY, defaultValue = JavaScriptPlugin.FILE_SUFFIXES_DEFVALUE, name = "File suffixes", description = "Comma-separated list of suffixes for files to analyze. To not filter, leave the list empty.", global = true, project = true), // JSLint global settings (http://jslint.com/) @Property(key = JavaScriptPlugin.ASSUME_A_BROWSER_KEY, defaultValue = JavaScriptPlugin.FALSE, name = "Assume a browser", description = "Assume a browser", global = true, project = true), @Property(key = JavaScriptPlugin.ASSUME_CONSOLE_ALERT_KEY, defaultValue = JavaScriptPlugin.FALSE, name = "Assume console, alert, ...", description = "Assume console, alert, ...", global = true, project = true), @Property(key = JavaScriptPlugin.ASSUME_A_YAHOO_WIDGET_KEY, defaultValue = JavaScriptPlugin.FALSE, name = "Assume a Yahoo Widget", description = "Assume a Yahoo Widget", global = true, project = true), @Property(key = JavaScriptPlugin.ASSUME_WINDOWS_KEY, defaultValue = JavaScriptPlugin.FALSE, name = "Assume Windows", description = "Assume Windows", global = true, project = true), @Property(key = JavaScriptPlugin.ASSUME_RHINO_KEY, defaultValue = JavaScriptPlugin.FALSE, name = "Assume Rhino", description = "Assume Rhino", global = true, project = true), @Property(key = JavaScriptPlugin.SAFE_SUBSET_KEY, defaultValue = JavaScriptPlugin.FALSE, name = "Safe Subset", description = "Safe Subset", global = true, project = true), @Property(key = JavaScriptPlugin.PREDEFINED_KEY, defaultValue = "", name = "Predefined variables", description = "Predefined variables ( , separated) ", global = true, project = true), @Property(key = JavaScriptPlugin.MAXIMUM_NUMBER_OF_ERRORS_KEY, defaultValue = "50", name = "Maximum number of errors", description = "Maximum number of errors", global = true, project = true) }) public class JavaScriptPlugin implements Plugin { public String getKey() { return JAVASCRIPT_PLUGIN; } public String getName() { return "JavaScript"; } public String getDescription() { return "Analysis of JavaScript projects"; } public List<Class<? extends Extension>> getExtensions() { List<Class<? extends Extension>> list = new ArrayList<Class<? extends Extension>>(); list.add(JavaScriptColorizerFormat.class); list.add(JavaScript.class); list.add(JavaScriptSourceImporter.class); list.add(JavaScriptCpdMapping.class); list.add(JavaScriptRuleRepository.class); list.add(JavaScriptSquidSensor.class); list.add(JavaScriptJSLintSensor.class); list.add(JsLintRuleManager.class); list.add(JavaScriptDefaultProfile.class); list.add(JavaScriptComplexitySensor.class); return list; } public final static String FALSE = "false"; public final static String JAVASCRIPT_PLUGIN = "JavaScriptPlugin"; public static final String FILE_SUFFIXES_KEY = "sonar.javascript.file.suffixes"; public static final String FILE_SUFFIXES_DEFVALUE = "js"; public static final String PROPERTY_PREFIX = "sonar.javascript.lslint"; public static final String ASSUME_A_BROWSER_KEY = PROPERTY_PREFIX + ".browser"; public static final String ASSUME_CONSOLE_ALERT_KEY = PROPERTY_PREFIX + ".devel"; public static final String ASSUME_A_YAHOO_WIDGET_KEY = PROPERTY_PREFIX + ".widget"; public static final String ASSUME_WINDOWS_KEY = PROPERTY_PREFIX + ".windows"; public static final String ASSUME_RHINO_KEY = PROPERTY_PREFIX + ".rhino"; public static final String SAFE_SUBSET_KEY = PROPERTY_PREFIX + ".safe"; public static final String MAXIMUM_NUMBER_OF_ERRORS_KEY = PROPERTY_PREFIX + ".maxerr"; public static final String PREDEFINED_KEY = PROPERTY_PREFIX + ".predef"; public static final String[] GLOBAL_PARAMETERS = new String[] { ASSUME_A_BROWSER_KEY, ASSUME_CONSOLE_ALERT_KEY, ASSUME_A_YAHOO_WIDGET_KEY, ASSUME_WINDOWS_KEY, ASSUME_RHINO_KEY, SAFE_SUBSET_KEY, MAXIMUM_NUMBER_OF_ERRORS_KEY, PREDEFINED_KEY }; }