001    /*
002     * Sonar, open source software quality management tool.
003     * Copyright (C) 2008-2011 SonarSource
004     * mailto:contact AT sonarsource DOT com
005     *
006     * Sonar is free software; you can redistribute it and/or
007     * modify it under the terms of the GNU Lesser General Public
008     * License as published by the Free Software Foundation; either
009     * version 3 of the License, or (at your option) any later version.
010     *
011     * Sonar is distributed in the hope that it will be useful,
012     * but WITHOUT ANY WARRANTY; without even the implied warranty of
013     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014     * Lesser General Public License for more details.
015     *
016     * You should have received a copy of the GNU Lesser General Public
017     * License along with Sonar; if not, write to the Free Software
018     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
019     */
020    package org.sonar.api;
021    
022    import org.sonar.api.resources.ProjectFileSystem;
023    
024    /**
025     * CoreProperties is used to group various properties of Sonar as well
026     * as default values of configuration in a single place
027     * 
028     * @since 1.11
029     */
030    public interface CoreProperties {
031    
032      /* Global settings */
033      String SONAR_HOME = "sonar.home";
034      String PROJECT_BRANCH_PROPERTY = "sonar.branch";
035      String PROJECT_VERSION_PROPERTY = "sonar.projectVersion";
036    
037      /**
038       * @since 2.6
039       */
040      String PROJECT_KEY_PROPERTY = "sonar.projectKey";
041    
042      /**
043       * @since 2.6
044       */
045      String PROJECT_NAME_PROPERTY = "sonar.projectName";
046    
047      /**
048       * @since 2.6
049       */
050      String PROJECT_DESCRIPTION_PROPERTY = "sonar.projectDescription";
051    
052      /**
053       * To determine value of this property use {@link ProjectFileSystem#getSourceCharset()}.
054       * 
055       * @since 2.6
056       */
057      String ENCODING_PROPERTY = "sonar.sourceEncoding";
058    
059      /**
060       * Value format is yyyy-MM-dd
061       */
062      String PROJECT_DATE_PROPERTY = "sonar.projectDate";
063      String PROJECT_LANGUAGE_PROPERTY = "sonar.language";
064      String DYNAMIC_ANALYSIS_PROPERTY = "sonar.dynamicAnalysis";
065      String PROJECT_EXCLUSIONS_PROPERTY = "sonar.exclusions";
066    
067      /**
068       * @deprecated since 2.5. See discussion from http://jira.codehaus.org/browse/SONAR-1873
069       */
070      @Deprecated
071      String REUSE_RULES_CONFIGURATION_PROPERTY = "sonar.reuseExistingRulesConfiguration";
072    
073      /* Checkstyle */
074      String CHECKSTYLE_PLUGIN = "checkstyle";
075    
076      /* Cobertura */
077      String COBERTURA_PLUGIN = "cobertura";
078      String COBERTURA_REPORT_PATH_PROPERTY = "sonar.cobertura.reportPath";
079      String COBERTURA_MAXMEM_PROPERTY = "sonar.cobertura.maxmen";
080      String COBERTURA_MAXMEM_DEFAULT_VALUE = "64m";
081    
082      /* Sonar Core */
083      String CORE_PLUGIN = "core";
084      String CORE_VIOLATION_LOCALE_PROPERTY = "sonar.violationLocale";
085      String CORE_VIOLATION_LOCALE_DEFAULT_VALUE = "en";
086      String CORE_COVERAGE_PLUGIN_PROPERTY = "sonar.core.codeCoveragePlugin";
087      String CORE_IMPORT_SOURCES_PROPERTY = "sonar.importSources";
088      boolean CORE_IMPORT_SOURCES_DEFAULT_VALUE = true;
089      String CORE_SKIPPED_MODULES_PROPERTY = "sonar.skippedModules";
090      String CORE_RULE_WEIGHTS_PROPERTY = "sonar.core.rule.weight";
091      String CORE_RULE_WEIGHTS_DEFAULT_VALUE = "INFO=0;MINOR=1;MAJOR=3;CRITICAL=5;BLOCKER=10";
092      String CORE_TENDENCY_DEPTH_PROPERTY = "tendency.depth";
093      int CORE_TENDENCY_DEPTH_DEFAULT_VALUE = 30;
094      String CORE_FORCE_AUTHENTICATION_PROPERTY = "sonar.forceAuthentication";
095      boolean CORE_FORCE_AUTHENTICATION_DEFAULT_VALUE = false;
096      String CORE_ALLOW_USERS_TO_SIGNUP_PROPERTY = "sonar.allowUsersToSignUp";
097      String CORE_DEFAULT_GROUP = "sonar.defaultGroup";
098      String CORE_DEFAULT_GROUP_DEFAULT_VALUE = "sonar-users";
099      boolean CORE_ALLOW_USERS_TO_SIGNUP_DEAULT_VALUE = false;
100      String CORE_AUTHENTICATOR_CLASS = "sonar.authenticator.class";
101      String CORE_AUTHENTICATOR_IGNORE_STARTUP_FAILURE = "sonar.authenticator.ignoreStartupFailure";
102      String CORE_AUTHENTICATOR_CREATE_USERS = "sonar.authenticator.createUsers";
103      String SERVER_VERSION = "sonar.core.version";
104      String SERVER_ID = "sonar.core.id";
105      String SERVER_STARTTIME = "sonar.core.startTime"; // format is yyyy-MM-dd'T'HH:mm:ssZ
106      String SKIP_TENDENCIES_PROPERTY = "sonar.skipTendencies";
107      boolean SKIP_TENDENCIES_DEFAULT_VALUE = false;
108      String BATCH_INCLUDE_PLUGINS = "sonar.includePlugins";
109      String BATCH_EXCLUDE_PLUGINS = "sonar.excludePlugins";
110    
111      /**
112       * @since 2.10
113       */
114      String SERVER_BASE_URL = "sonar.core.serverBaseURL";
115    
116      /**
117       * @since 2.10
118       * @see #SERVER_BASE_URL
119       */
120      String SERVER_BASE_URL_DEFAULT_VALUE = "http://localhost:9000";
121    
122      /* CPD */
123      String CPD_PLUGIN = "cpd";
124      String CPD_MINIMUM_TOKENS_PROPERTY = "sonar.cpd.minimumTokens";
125      int CPD_MINIMUM_TOKENS_DEFAULT_VALUE = 100;
126      String CPD_IGNORE_LITERALS_PROPERTY = "sonar.cpd.ignore_literals";
127      String CPD_IGNORE_LITERALS_DEFAULT_VALUE = "true";
128      String CPD_IGNORE_IDENTIFIERS_PROPERTY = "sonar.cpd.ignore_identifiers";
129      String CPD_IGNORE_IDENTIFIERS_DEFAULT_VALUE = "false";
130      String CPD_SKIP_PROPERTY = "sonar.cpd.skip";
131    
132      /* Design */
133    
134      /**
135       * Indicates whether Java bytecode analysis should be skipped.
136       * 
137       * @since 2.0
138       */
139      String DESIGN_SKIP_DESIGN_PROPERTY = "sonar.skipDesign";
140      boolean DESIGN_SKIP_DESIGN_DEFAULT_VALUE = false;
141    
142      /**
143       * Indicates whether Package Design Analysis should be skipped.
144       * 
145       * @since 2.9
146       */
147      String DESIGN_SKIP_PACKAGE_DESIGN_PROPERTY = "sonar.skipPackageDesign";
148      boolean DESIGN_SKIP_PACKAGE_DESIGN_DEFAULT_VALUE = false;
149    
150      /* Findbugs */
151      String FINDBUGS_PLUGIN = "findbugs";
152      String FINDBUGS_EFFORT_PROPERTY = "sonar.findbugs.effort";
153      String FINDBUGS_EFFORT_DEFAULT_VALUE = "Default";
154      String FINDBUGS_REPORT_PATH = "sonar.findbugs.reportPath";
155      String FINDBUGS_TIMEOUT_PROPERTY = "sonar.findbugs.timeout";
156      long FINDBUGS_TIMEOUT_DEFAULT_VALUE = 600000;
157    
158      /* Google Analytics */
159      String GOOGLE_ANALYTICS_PLUGIN = "google-analytics";
160      String GOOGLE_ANALYTICS_ACCOUNT_PROPERTY = "sonar.google-analytics.account";
161    
162      /* PMD */
163      String PMD_PLUGIN = "pmd";
164    
165      /* Squid */
166      String SQUID_PLUGIN = "squid";
167    
168      /* Surefire */
169      String SUREFIRE_PLUGIN = "surefire";
170      String SUREFIRE_REPORTS_PATH_PROPERTY = "sonar.surefire.reportsPath";
171    
172      /* Time machine periods */
173      String TIMEMACHINE_PERIOD_PREFIX = "sonar.timemachine.period";
174      String TIMEMACHINE_MODE_PREVIOUS_ANALYSIS = "previous_analysis";
175      String TIMEMACHINE_MODE_DATE = "date";
176      String TIMEMACHINE_MODE_VERSION = "version";
177      String TIMEMACHINE_MODE_DAYS = "days";
178      String TIMEMACHINE_DEFAULT_PERIOD_1 = TIMEMACHINE_MODE_PREVIOUS_ANALYSIS;
179      String TIMEMACHINE_DEFAULT_PERIOD_2 = "5";
180      String TIMEMACHINE_DEFAULT_PERIOD_3 = "30";
181      String TIMEMACHINE_DEFAULT_PERIOD_4 = "";
182      String TIMEMACHINE_DEFAULT_PERIOD_5 = "";
183    }