001    /*
002     * SonarQube, open source software quality management tool.
003     * Copyright (C) 2008-2013 SonarSource
004     * mailto:contact AT sonarsource DOT com
005     *
006     * SonarQube 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     * SonarQube 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 License
017     * along with this program; if not, write to the Free Software Foundation,
018     * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019     */
020    package org.sonar.api;
021    
022    /**
023     * CoreProperties is used to group various properties of Sonar as well
024     * as default values of configuration in a single place
025     *
026     * @since 1.11
027     */
028    public interface CoreProperties {
029    
030      /**
031       * @since 3.0
032       */
033      String ENCRYPTION_SECRET_KEY_PATH = "sonar.secretKeyPath";
034    
035      /**
036       * @since 2.11
037       */
038      String CATEGORY_GENERAL = "general";
039    
040      /**
041       * @since 4.0
042       */
043      String SUBCATEGORY_DATABASE_CLEANER = "databaseCleaner";
044    
045      /**
046       * @since 4.0
047       */
048      String SUBCATEGORY_DUPLICATIONS = "duplications";
049    
050      /**
051       * @since 4.0
052       */
053      String SUBCATEGORY_DIFFERENTIAL_VIEWS = "differentialViews";
054    
055      /**
056       *@since 4.0
057       */
058      String SUBCATEGORY_L10N = "localization";
059    
060      /**
061       * @since 2.11
062       */
063      String CATEGORY_CODE_COVERAGE = "codeCoverage";
064    
065      /**
066       * @since 2.11
067       * @deprecated since 4.0. See http://jira.codehaus.org/browse/SONAR-4660. Do not forget to remove the properties from core bundles
068       * @see #SUBCATEGORY_DUPLICATIONS
069       */
070      @Deprecated
071      String CATEGORY_DUPLICATIONS = "duplications";
072    
073      /**
074       * @since 2.11
075       */
076      String CATEGORY_SECURITY = "security";
077    
078      /**
079       * @since 2.11
080       * @deprecated since 4.0. See http://jira.codehaus.org/browse/SONAR-4660. Do not forget to remove the properties from core bundles
081       * @see #SUBCATEGORY_L10N
082       */
083      @Deprecated
084      String CATEGORY_L10N = "localization";
085    
086      /**
087       * @since 2.11
088       */
089      String CATEGORY_JAVA = "java";
090    
091      /**
092       * @since 2.11
093       * @deprecated since 4.0. See http://jira.codehaus.org/browse/SONAR-4660. Do not forget to remove the properties from core bundles
094       * @see #SUBCATEGORY_DIFFERENTIAL_VIEWS
095       */
096      @Deprecated
097      String CATEGORY_DIFFERENTIAL_VIEWS = "differentialViews";
098    
099      /**
100       * @since 3.3
101       */
102      String CATEGORY_EXCLUSIONS = "exclusions";
103    
104      /**
105       * @since 4.0
106       */
107      String SUBCATEGORY_FILES_EXCLUSIONS = "files";
108    
109      /**
110       * @since 4.0
111       */
112      String SUBCATEGORY_DUPLICATIONS_EXCLUSIONS = "duplications";
113    
114      /**
115       * @since 4.0
116       */
117      String SUBCATEGORY_COVERAGE_EXCLUSIONS = "coverage";
118    
119      /**
120       * @since 3.7
121       */
122      String CATEGORY_LICENSES = "licenses";
123    
124      /**
125       * @since 4.0
126       */
127      String CATEGORY_TECHNICAL_DEBT = "technicalDebt";
128    
129      /* Global settings */
130      String SONAR_HOME = "SONAR_HOME";
131      String PROJECT_BRANCH_PROPERTY = "sonar.branch";
132      String PROJECT_VERSION_PROPERTY = "sonar.projectVersion";
133    
134      /**
135       * @since 2.6
136       */
137      String PROJECT_KEY_PROPERTY = "sonar.projectKey";
138    
139      /**
140       * @since 2.6
141       */
142      String PROJECT_NAME_PROPERTY = "sonar.projectName";
143    
144      /**
145       * @since 2.6
146       */
147      String PROJECT_DESCRIPTION_PROPERTY = "sonar.projectDescription";
148    
149      /**
150       * To determine value of this property use {@link org.sonar.api.resources.ProjectFileSystem#getSourceCharset()}.
151       *
152       * @since 2.6
153       */
154      String ENCODING_PROPERTY = "sonar.sourceEncoding";
155    
156      /**
157       * Value format is yyyy-MM-dd
158       */
159      String PROJECT_DATE_PROPERTY = "sonar.projectDate";
160    
161      String PROJECT_LANGUAGE_PROPERTY = "sonar.language";
162      String DYNAMIC_ANALYSIS_PROPERTY = "sonar.dynamicAnalysis";
163    
164      /* Exclusions */
165      String PROJECT_INCLUSIONS_PROPERTY = "sonar.inclusions";
166      String PROJECT_EXCLUSIONS_PROPERTY = "sonar.exclusions";
167    
168      /**
169       * @since 3.3
170       */
171      String PROJECT_TEST_INCLUSIONS_PROPERTY = "sonar.test.inclusions";
172      String PROJECT_TEST_EXCLUSIONS_PROPERTY = "sonar.test.exclusions";
173      String GLOBAL_EXCLUSIONS_PROPERTY = "sonar.global.exclusions";
174      String GLOBAL_TEST_EXCLUSIONS_PROPERTY = "sonar.global.test.exclusions";
175      String GLOBAL_TEST_EXCLUSIONS_DEFAULT = "**/package-info.java";
176    
177      /**
178       * @deprecated since 2.5. See discussion from http://jira.codehaus.org/browse/SONAR-1873
179       */
180      @Deprecated
181      String REUSE_RULES_CONFIGURATION_PROPERTY = "sonar.reuseExistingRulesConfiguration";
182    
183      /* Sonar Core */
184      String CORE_VIOLATION_LOCALE_PROPERTY = "sonar.violationLocale";
185      String CORE_VIOLATION_LOCALE_DEFAULT_VALUE = "en";
186      String CORE_IMPORT_SOURCES_PROPERTY = "sonar.importSources";
187      boolean CORE_IMPORT_SOURCES_DEFAULT_VALUE = true;
188      String CORE_SKIPPED_MODULES_PROPERTY = "sonar.skippedModules";
189      String CORE_RULE_WEIGHTS_PROPERTY = "sonar.core.rule.weight";
190      String CORE_RULE_WEIGHTS_DEFAULT_VALUE = "INFO=0;MINOR=1;MAJOR=3;CRITICAL=5;BLOCKER=10";
191    
192      /**
193       * @since 4.0
194       */
195      String CORE_INCLUDED_MODULES_PROPERTY = "sonar.includedModules";
196    
197      /**
198       * @deprecated since 3.6. See http://jira.codehaus.org/browse/SONAR-4145
199       */
200      @Deprecated
201      String CORE_TENDENCY_DEPTH_PROPERTY = "tendency.depth";
202    
203      /**
204       * @deprecated since 2.5. See http://jira.codehaus.org/browse/SONAR-4145
205       */
206      @Deprecated
207      int CORE_TENDENCY_DEPTH_DEFAULT_VALUE = 30;
208    
209      String CORE_FORCE_AUTHENTICATION_PROPERTY = "sonar.forceAuthentication";
210      boolean CORE_FORCE_AUTHENTICATION_DEFAULT_VALUE = false;
211      String CORE_ALLOW_USERS_TO_SIGNUP_PROPERTY = "sonar.allowUsersToSignUp";
212      String CORE_DEFAULT_GROUP = "sonar.defaultGroup";
213      String CORE_DEFAULT_GROUP_DEFAULT_VALUE = "sonar-users";
214      boolean CORE_ALLOW_USERS_TO_SIGNUP_DEAULT_VALUE = false;
215    
216      /**
217       * @deprecated since 2.14. See http://jira.codehaus.org/browse/SONAR-3153. Replaced by {@link #CORE_AUTHENTICATOR_REALM}.
218       */
219      @Deprecated
220      String CORE_AUTHENTICATOR_CLASS = "sonar.authenticator.class";
221    
222      /**
223       * @since 2.14
224       */
225      String CORE_AUTHENTICATOR_REALM = "sonar.security.realm";
226    
227      String CORE_AUTHENTICATOR_IGNORE_STARTUP_FAILURE = "sonar.authenticator.ignoreStartupFailure";
228      String CORE_AUTHENTICATOR_CREATE_USERS = "sonar.authenticator.createUsers";
229    
230      /**
231       * @since 3.6
232       */
233      String CORE_AUTHENTICATOR_UPDATE_USER_ATTRIBUTES = "sonar.security.updateUserAttributes";
234    
235      String SERVER_VERSION = "sonar.core.version";
236      String SERVER_ID = "sonar.core.id";
237    
238      // format is yyyy-MM-dd'T'HH:mm:ssZ
239      String SERVER_STARTTIME = "sonar.core.startTime";
240    
241      /**
242       * @deprecated since 3.6. See http://jira.codehaus.org/browse/SONAR-4145
243       */
244      @Deprecated
245      String SKIP_TENDENCIES_PROPERTY = "sonar.skipTendencies";
246    
247      /**
248       * @deprecated since 3.6. See http://jira.codehaus.org/browse/SONAR-4145
249       */
250      @Deprecated
251      boolean SKIP_TENDENCIES_DEFAULT_VALUE = false;
252    
253      String BATCH_INCLUDE_PLUGINS = "sonar.includePlugins";
254      String BATCH_EXCLUDE_PLUGINS = "sonar.excludePlugins";
255    
256      /**
257       * @since 3.4
258       * @deprecated in 4.0 replaced by {@link CoreProperties#PREVIEW_INCLUDE_PLUGINS}
259       */
260      @Deprecated
261      String DRY_RUN_INCLUDE_PLUGINS = "sonar.dryRun.includePlugins";
262      /**
263       * @since 3.4
264       * @deprecated in 4.0 replaced by {@link CoreProperties#PREVIEW_INCLUDE_PLUGINS_DEFAULT_VALUE}
265       */
266      @Deprecated
267      String DRY_RUN_INCLUDE_PLUGINS_DEFAULT_VALUE = "";
268    
269      /**
270       * @since 3.4
271       * @deprecated in 4.0 replaced by {@link CoreProperties#PREVIEW_EXCLUDE_PLUGINS}
272       */
273      @Deprecated
274      String DRY_RUN_EXCLUDE_PLUGINS = "sonar.dryRun.excludePlugins";
275      /**
276       * @since 3.4
277       * @deprecated in 4.0 replaced by {@link CoreProperties#PREVIEW_EXCLUDE_PLUGINS_DEFAULT_VALUE}
278       */
279      @Deprecated
280      String DRY_RUN_EXCLUDE_PLUGINS_DEFAULT_VALUE = "devcockpit,pdfreport,report,scmactivity,views,jira";
281    
282      /**
283       * @since 2.10
284       */
285      String SERVER_BASE_URL = "sonar.core.serverBaseURL";
286    
287      /**
288       * @see #SERVER_BASE_URL
289       * @since 2.10
290       */
291      String SERVER_BASE_URL_DEFAULT_VALUE = "http://localhost:9000";
292    
293      /* CPD */
294      String CPD_PLUGIN = "cpd";
295    
296      /**
297       * @deprecated in 3.1
298       */
299      @Deprecated
300      String CPD_MINIMUM_TOKENS_PROPERTY = "sonar.cpd.minimumTokens";
301    
302      /**
303       * @deprecated in 3.1
304       */
305      @Deprecated
306      int CPD_MINIMUM_TOKENS_DEFAULT_VALUE = 100;
307    
308      /**
309       * @deprecated in 3.1
310       */
311      @Deprecated
312      String CPD_IGNORE_LITERALS_PROPERTY = "sonar.cpd.ignore_literals";
313    
314      /**
315       * @deprecated in 3.1
316       */
317      @Deprecated
318      String CPD_IGNORE_LITERALS_DEFAULT_VALUE = "true";
319    
320      /**
321       * @deprecated in 3.1
322       */
323      @Deprecated
324      String CPD_IGNORE_IDENTIFIERS_PROPERTY = "sonar.cpd.ignore_identifiers";
325    
326      /**
327       * @deprecated in 3.1
328       */
329      @Deprecated
330      String CPD_IGNORE_IDENTIFIERS_DEFAULT_VALUE = "false";
331    
332      String CPD_SKIP_PROPERTY = "sonar.cpd.skip";
333    
334      /**
335       * @since 2.11
336       * @deprecated in 3.1
337       */
338      @Deprecated
339      String CPD_ENGINE = "sonar.cpd.engine";
340    
341      /**
342       * @see #CPD_ENGINE
343       * @since 2.11
344       * @deprecated in 3.1
345       */
346      @Deprecated
347      String CPD_ENGINE_DEFAULT_VALUE = "sonar";
348    
349      /**
350       * @since 2.11
351       */
352      String CPD_CROSS_RPOJECT = "sonar.cpd.cross_project";
353    
354      /**
355       * @see #CPD_CROSS_RPOJECT
356       * @since 2.11
357       */
358      boolean CPD_CROSS_RPOJECT_DEFAULT_VALUE = false;
359    
360      /**
361       * @since 3.5
362       */
363      String CPD_EXCLUSIONS = "sonar.cpd.exclusions";
364    
365      /* Design */
366    
367      /**
368       * Indicates whether Java bytecode analysis should be skipped.
369       *
370       * @since 2.0
371       */
372      String DESIGN_SKIP_DESIGN_PROPERTY = "sonar.skipDesign";
373      boolean DESIGN_SKIP_DESIGN_DEFAULT_VALUE = false;
374    
375      /**
376       * Indicates whether Package Design Analysis should be skipped.
377       *
378       * @since 2.9
379       */
380      String DESIGN_SKIP_PACKAGE_DESIGN_PROPERTY = "sonar.skipPackageDesign";
381      boolean DESIGN_SKIP_PACKAGE_DESIGN_DEFAULT_VALUE = false;
382    
383      /* Google Analytics */
384      String GOOGLE_ANALYTICS_PLUGIN = "google-analytics";
385      String GOOGLE_ANALYTICS_ACCOUNT_PROPERTY = "sonar.google-analytics.account";
386    
387      /* Time machine periods */
388      String TIMEMACHINE_PERIOD_PREFIX = "sonar.timemachine.period";
389      String TIMEMACHINE_MODE_PREVIOUS_ANALYSIS = "previous_analysis";
390      String TIMEMACHINE_MODE_DATE = "date";
391      String TIMEMACHINE_MODE_VERSION = "version";
392      String TIMEMACHINE_MODE_DAYS = "days";
393      String TIMEMACHINE_MODE_PREVIOUS_VERSION = "previous_version";
394      String TIMEMACHINE_DEFAULT_PERIOD_1 = TIMEMACHINE_MODE_PREVIOUS_ANALYSIS;
395      String TIMEMACHINE_DEFAULT_PERIOD_2 = "30";
396      String TIMEMACHINE_DEFAULT_PERIOD_3 = TIMEMACHINE_MODE_PREVIOUS_VERSION;
397      String TIMEMACHINE_DEFAULT_PERIOD_4 = "";
398      String TIMEMACHINE_DEFAULT_PERIOD_5 = "";
399    
400      /**
401       * @since 2.11
402       */
403      String ORGANISATION = "sonar.organisation";
404    
405      /**
406       * @since 2.11
407       */
408      String PERMANENT_SERVER_ID = "sonar.server_id";
409    
410      /**
411       * @since 2.11
412       */
413      String SERVER_ID_IP_ADDRESS = "sonar.server_id.ip_address";
414    
415      /**
416       * @since 3.3
417       */
418      String LINKS_HOME_PAGE = "sonar.links.homepage";
419    
420      /**
421       * @since 3.3
422       */
423      String LINKS_CI = "sonar.links.ci";
424    
425      /**
426       * @since 3.3
427       */
428      String LINKS_ISSUE_TRACKER = "sonar.links.issue";
429    
430      /**
431       * @since 3.3
432       */
433      String LINKS_SOURCES = "sonar.links.scm";
434    
435      /**
436       * @since 3.3
437       */
438      String LINKS_SOURCES_DEV = "sonar.links.scm_dev";
439    
440      /**
441       * @since 3.4
442       */
443      String LOGIN = "sonar.login";
444    
445      /**
446       * @since 3.4
447       */
448      String PASSWORD = "sonar.password";
449    
450      /**
451       * @since 3.4
452       */
453      String DRY_RUN = "sonar.dryRun";
454    
455      /**
456       * @since 3.5
457       */
458      String TASK = "sonar.task";
459    
460      /**
461       * @since 3.6
462       */
463      String SCAN_TASK = "scan";
464    
465      /**
466       * @since 3.6
467       */
468      String PROFILING_LOG_PROPERTY = "sonar.showProfiling";
469    
470      /**
471       * @deprecated replaced in v3.4 by properties specific to languages, for example sonar.java.coveragePlugin
472       *             See http://jira.codehaus.org/browse/SONARJAVA-39 for more details.
473       */
474      @Deprecated
475      String CORE_COVERAGE_PLUGIN_PROPERTY = "sonar.core.codeCoveragePlugin";
476    
477      /**
478       * @since 3.7
479       * @deprecated in 4.0 replaced by {@link CoreProperties#PREVIEW_READ_TIMEOUT_SEC}
480       */
481      @Deprecated
482      String DRY_RUN_READ_TIMEOUT_SEC = "sonar.dryRun.readTimeout";
483    
484      /**
485       * @since 4.0
486       */
487      String PREVIEW_READ_TIMEOUT_SEC = "sonar.preview.readTimeout";
488    
489      /**
490       * @since 4.0
491       */
492      String CORE_PREVENT_AUTOMATIC_PROJECT_CREATION = "sonar.preventAutoProjectCreation";
493    
494      /**
495       * @since 4.0
496       */
497      String ANALYSIS_MODE = "sonar.analysis.mode";
498    
499      /**
500       * @since 4.0
501       */
502      String ANALYSIS_MODE_ANALYSIS = "analysis";
503    
504      /**
505       * @since 4.0
506       */
507      String ANALYSIS_MODE_PREVIEW = "preview";
508    
509      /**
510       * @since 4.0
511       */
512      String ANALYSIS_MODE_INCREMENTAL = "incremental";
513    
514      /**
515       * @since 4.0
516       */
517      String PREVIEW_INCLUDE_PLUGINS = "sonar.preview.includePlugins";
518      String PREVIEW_INCLUDE_PLUGINS_DEFAULT_VALUE = "";
519    
520      /**
521       * @since 4.0
522       */
523      String PREVIEW_EXCLUDE_PLUGINS = "sonar.preview.excludePlugins";
524      String PREVIEW_EXCLUDE_PLUGINS_DEFAULT_VALUE = "devcockpit,pdfreport,report,scmactivity,views,jira";
525    
526      /**
527       * @since 4.0
528       */
529      String WORKING_DIRECTORY = "sonar.working.directory";
530      String WORKING_DIRECTORY_DEFAULT_VALUE = ".sonar";
531    }