@@ -31,10 +31,11 @@ package org.sonar.api; | |||
* <li>the method provide() is executed once by sonar</li> | |||
* <li>the method provide() must return an object, a class or an Iterable of objects. <strong>Arrays are excluded</strong>.</li> | |||
* </ul> | |||
* </p> | |||
* | |||
* | |||
* <p>Example: | |||
* <pre> | |||
* {@code | |||
* public class RuleRepositoryProvider extends ExtensionProvider implements ServerExtension { | |||
* private Language[] languages; | |||
* | |||
@@ -50,8 +51,9 @@ package org.sonar.api; | |||
* return result; | |||
* } | |||
* } | |||
* } | |||
* </pre> | |||
* </p> | |||
* | |||
* | |||
* @since 2.3 | |||
*/ |
@@ -31,8 +31,8 @@ import static java.util.Objects.requireNonNull; | |||
/** | |||
* Entry-point for plugins to inject extensions into SonarQube. | |||
* <p>The JAR manifest must declare the name of the implementation class in the property <code>Plugin-Class</code>. | |||
* This property is automatically set by sonar-packaging-maven-plugin when building plugin.</p> | |||
* <p>Example of implementation</p> | |||
* This property is automatically set by sonar-packaging-maven-plugin when building plugin. | |||
* <p>Example of implementation | |||
* <pre> | |||
* package com.mycompany.sonarqube; | |||
* public class MyPlugin implements Plugin { | |||
@@ -48,7 +48,7 @@ import static java.util.Objects.requireNonNull; | |||
* } | |||
* </pre> | |||
* | |||
* <p>Example of pom.xml</p> | |||
* <p>Example of pom.xml | |||
* <pre> | |||
* <project> | |||
* ... | |||
@@ -69,7 +69,7 @@ import static java.util.Objects.requireNonNull; | |||
* </project> | |||
* </pre> | |||
* | |||
* <p>Example of test</p> | |||
* <p>Example of test | |||
* <pre> | |||
* MyPlugin underTest = new MyPlugin(); | |||
* |
@@ -24,10 +24,10 @@ import java.lang.annotation.RetentionPolicy; | |||
/** | |||
* Plugin properties. This annotation is only used on classes implementing org.sonar.api.Plugin. | |||
* <p/> | |||
* <br> | |||
* Note that {@link org.sonar.api.config.PropertyDefinition} is an alternative, programmatic and recommended approach | |||
* to declare properties. | |||
* <p/> | |||
* <br> | |||
* Effective property values are accessible at runtime through the component {@link org.sonar.api.config.Settings} | |||
* | |||
* @since 1.10 |
@@ -29,7 +29,7 @@ import java.lang.annotation.Target; | |||
* <ul> | |||
* <li>System property</li> | |||
* <li>Batch command-line (-Dfoo=bar in Maven or sonar-runner)</li> | |||
* <li>Maven pom.xml (element <properties>)</li> | |||
* <li>Maven pom.xml (element {@literal <properties>})</li> | |||
* <li>Maven settings.xml</li> | |||
* <li>SonarQube web administration console</li> | |||
* </ul> | |||
@@ -84,15 +84,15 @@ public @interface Property { | |||
/** | |||
* Options for *_LIST types | |||
* | |||
* @since 3.0 Options for property of type PropertyType.SINGLE_SELECT_LIST</code> | |||
* @since 3.0 Options for property of type {@link PropertyType#SINGLE_SELECT_LIST} | |||
* For example {"property_1", "property_3", "property_3"}). | |||
* | |||
* @since 3.3 Options for property of type PropertyType.METRIC</code>. | |||
* If no option is specified, any metric will match. | |||
* If options are specified, all must match for the metric to be displayed. | |||
* Three types of filter are supported <code>key:REGEXP</code>, <code>domain:REGEXP</code> and <code>type:comma_separated__list_of_types</code>. | |||
* For example <code>key:new_.*</code> will match any metric which key starts by <code>new_</code>. | |||
* For example <code>type:INT,FLOAT</code> will match any metric of type <code>INT</code> or <code>FLOAT</code>. | |||
* @since 3.3 Options for property of type {@link PropertyType#METRIC}<br> | |||
* If no option is specified, any metric will match.<br> | |||
* If options are specified, all must match for the metric to be displayed.<br> | |||
* Three types of filter are supported <code>key:REGEXP</code>, <code>domain:REGEXP</code> and <code>type:comma_separated__list_of_types</code>.<br> | |||
* For example <code>key:new_.*</code> will match any metric which key starts by <code>new_</code>.<br> | |||
* For example <code>type:INT,FLOAT</code> will match any metric of type <code>INT</code> or <code>FLOAT</code>.<br> | |||
* For example <code>type:NUMERIC</code> will match any metric of numerictype. | |||
*/ | |||
String[] options() default {}; |
@@ -23,9 +23,9 @@ import java.util.List; | |||
/** | |||
* Plugin entry-point used to declare its extensions (see {@link org.sonar.api.Extension}. | |||
* <p/> | |||
* <br> | |||
* <p>The JAR manifest must declare the name of the implementation class in the property <code>Plugin-Class</code>. | |||
* This property is automatically set by sonar-packaging-maven-plugin when building plugin.</p> | |||
* This property is automatically set by sonar-packaging-maven-plugin when building plugin. | |||
* | |||
* @since 2.8 | |||
*/ |
@@ -81,12 +81,12 @@ import static java.util.Objects.requireNonNull; | |||
* } | |||
* } | |||
* </pre> | |||
* <p></p> | |||
* <p> | |||
* The minimal supported version of SonarQube is verified at runtime. As plugin is built | |||
* with sonar-plugin-api 5.6, we assume that the plugin requires v5.6 or greater at runtime. | |||
* For this reason the plugin must default which is the minimal supported version | |||
* in the configuration of sonar-packaging-maven-plugin 1.16+: | |||
* <p></p> | |||
* <p> | |||
* <pre> | |||
* <packaging>sonar-plugin</packaging> | |||
* |
@@ -35,12 +35,10 @@ import org.sonar.api.resources.Resource; | |||
@Deprecated | |||
public abstract class AbstractSumChildrenDecorator implements Decorator { | |||
/** | |||
* Each metric is used individually. There are as many generated measures than metrics. | |||
* <p/> | |||
* <p><b>Important</b> : annotations are not inherited, so you have to copy the @DependedUpon annotation | |||
* when implementing this method.</p> | |||
* when implementing this method. | |||
* | |||
* @return not null list of metrics | |||
*/ |
@@ -21,7 +21,7 @@ package org.sonar.api.batch; | |||
/** | |||
* Barriers are used to define the order of execution of Decorators. Decorators must be annotated with the following : | |||
* <p/> | |||
* <br> | |||
* <ul> | |||
* <li>{@code @DependsUpon(BARRIER)} in order to be executed after BARRIER</li> | |||
* <li>{@code @DependedUpon(BARRIER)} in order to be executed before BARRIER</li> | |||
@@ -70,7 +70,7 @@ public interface DecoratorBarriers { | |||
/** | |||
* Extensions which call the method {@code Violation#setSwitchedOff} must be executed before this barrier | |||
* ({@code @DependedUpon(value=DecoratorBarriers.VIOLATION_TRACKING}) | |||
* <p/> | |||
* <br> | |||
* This barrier is after {@code END_OF_VIOLATIONS_GENERATION} | |||
* | |||
* @since 2.8 |
@@ -26,11 +26,11 @@ import org.sonar.api.resources.Project; | |||
* <p> | |||
* Initializer can execute external tool (like a Maven plugin), change project configuration. For example CoberturaMavenInitializer invokes | |||
* the Codehaus Cobertura Mojo and sets path to Cobertura report according to Maven POM. | |||
* </p> | |||
* | |||
* | |||
* <p> | |||
* Initializers are executed first and once during project analysis. | |||
* </p> | |||
* | |||
* | |||
* @since 2.6 | |||
*/ |
@@ -24,7 +24,7 @@ import org.sonar.api.resources.Project; | |||
/** | |||
* PostJobs are executed at the very end of batch analysis. A PostJob can't do any modification | |||
* since everything is already computed (issues, measures,...). <br/> | |||
* since everything is already computed (issues, measures,...). <br> | |||
* WANRING: Do not rely on the fact that analysis results are available on server side. Starting from 5.x | |||
* it is an asynchronous processing on server side. | |||
* |
@@ -27,17 +27,17 @@ import org.sonar.api.resources.Project; | |||
* A Sensor is invoked once during the analysis of a project. The sensor can parse a flat file, connect to a web server... Sensor are | |||
* generally used to add measure at the lowest level of the resource tree. A sensor can access and save measures on the whole tree of | |||
* resources. | |||
* </p> | |||
* | |||
* | |||
* <p> | |||
* For example the Cobertura Sensor parses Cobertura report and saves the first-level of measures on resources. | |||
* </p> | |||
* | |||
* | |||
* <p> | |||
* A particular attention should be given to resource exclusion. Sonar already manages exclusions at file level : if you try to save a | |||
* measure on a resource that is excluded in the settings, then Sonar will not save the measure. When handling a plugin or an external tool, | |||
* you should make sure that exclusions are passed if you are going to get back consolidated data. | |||
* </p> | |||
* | |||
* | |||
* @since 1.10 | |||
*/ |
@@ -146,7 +146,7 @@ public interface SensorContext extends org.sonar.api.batch.sensor.SensorContext | |||
* <p> | |||
* The resource is automatically saved, so there is no need to execute the method saveResource(). Does nothing if the resource is set as | |||
* excluded. | |||
* </p> | |||
* | |||
*/ | |||
Measure saveMeasure(Resource resource, Metric metric, Double value); | |||
@@ -155,7 +155,7 @@ public interface SensorContext extends org.sonar.api.batch.sensor.SensorContext | |||
* <p> | |||
* The resource is automatically saved, so there is no need to execute the method saveResource(). Does nothing if the resource is set as | |||
* excluded. | |||
* </p> | |||
* | |||
*/ | |||
Measure saveMeasure(Resource resource, Measure measure); | |||
@@ -42,7 +42,7 @@ public interface FilePredicates { | |||
* Predicate that gets a file by its absolute path. The parameter | |||
* accepts forward/back slashes as separator and non-normalized values | |||
* (<code>/path/to/../foo.txt</code> is same as <code>/path/foo.txt</code>). | |||
* <p/> | |||
* <p> | |||
* Warning - not efficient because absolute path is not indexed yet. | |||
*/ | |||
FilePredicate hasAbsolutePath(String s); | |||
@@ -57,12 +57,12 @@ public interface FilePredicates { | |||
/** | |||
* Predicate that gets the files which relative or absolute path matches a wildcard pattern. | |||
* <p/> | |||
* <br> | |||
* If the parameter starts with <code>file:</code>, then absolute path is used, else relative path. Pattern | |||
* is case-sensitive, except for file extension. | |||
* <p/> | |||
* <br> | |||
* Supported wildcards are <code>*</code> and <code>**</code>, but not <code>?</code>. | |||
* <p/> | |||
* <br> | |||
* Examples: | |||
* <ul> | |||
* <li><code>**/*Foo.java</code> matches Foo.java, src/Foo.java and src/java/SuperFoo.java</li> |
@@ -19,17 +19,15 @@ | |||
*/ | |||
package org.sonar.api.batch.fs; | |||
import org.sonar.api.batch.BatchSide; | |||
import javax.annotation.CheckForNull; | |||
import java.io.File; | |||
import java.nio.charset.Charset; | |||
import java.util.SortedSet; | |||
import javax.annotation.CheckForNull; | |||
import org.sonar.api.batch.BatchSide; | |||
/** | |||
* The {@link FileSystem} manages all the source files to be analyzed. | |||
* <p/> | |||
* <p> | |||
* This is not an extension point so it must not be implemented by plugins. It must be injected as a | |||
* constructor parameter : | |||
* <pre> | |||
@@ -70,7 +68,7 @@ public interface FileSystem { | |||
/** | |||
* Absolute work directory. It can be used to | |||
* store third-party analysis reports. | |||
* <p/> | |||
* <br> | |||
* The work directory can be located outside {@link #baseDir()}. | |||
*/ | |||
File workDir(); | |||
@@ -85,7 +83,7 @@ public interface FileSystem { | |||
* the predicate, then {@link IllegalArgumentException} is thrown. Returns {@code null} | |||
* if no files match. | |||
* | |||
* <p/> | |||
* <p> | |||
* How to use : | |||
* <pre> | |||
* InputFile file = fs.inputFile(fs.predicates().hasRelativePath("src/Foo.php")); | |||
@@ -99,7 +97,7 @@ public interface FileSystem { | |||
/** | |||
* Returns {@link InputDir} matching the current {@link File}. | |||
* @return null if directory is not indexed. | |||
* @throw {@link IllegalArgumentException} is File is null or not a directory. | |||
* @throws IllegalArgumentException is File is null or not a directory. | |||
* | |||
* @since 4.5 | |||
*/ | |||
@@ -109,15 +107,17 @@ public interface FileSystem { | |||
/** | |||
* Input files matching the given attributes. Return all the files if the parameter | |||
* <code>attributes</code> is empty. | |||
* <p/> | |||
* <p> | |||
* <b>Important</b> - result is an {@link java.lang.Iterable} to benefit from streaming and decreasing | |||
* memory consumption. It should be iterated only once, else copy it into a list : | |||
* {@code com.google.common.collect.Lists.newArrayList(inputFiles(predicate))} | |||
* <p/> | |||
* <p> | |||
* How to use : | |||
* <pre> | |||
* {@code | |||
* FilePredicates p = fs.predicates(); | |||
* Iterable<InputFile> files = fs.inputFiles(p.and(p.hasLanguage("java"), p.hasType(InputFile.Type.MAIN))); | |||
* } | |||
* </pre> | |||
* | |||
* @see #predicates() |
@@ -33,11 +33,11 @@ public interface InputDir extends InputPath { | |||
* Path relative to module base directory. Path is unique and identifies directory | |||
* within given <code>{@link FileSystem}</code>. File separator is the forward | |||
* slash ('/'), even on Microsoft Windows. | |||
* <p/> | |||
* <br> | |||
* Returns <code>src/main/java/com</code> if module base dir is | |||
* <code>/path/to/module</code> and if directory is | |||
* <code>/path/to/module/src/main/java/com</code>. | |||
* <p/> | |||
* <br> | |||
* Relative path is not null and is normalized ('foo/../foo' is replaced by 'foo'). | |||
*/ | |||
@Override | |||
@@ -45,7 +45,7 @@ public interface InputDir extends InputPath { | |||
/** | |||
* Normalized absolute path. File separator is forward slash ('/'), even on Microsoft Windows. | |||
* <p/> | |||
* <br> | |||
* This is not canonical path. Symbolic links are not resolved. For example if /project/src links | |||
* to /tmp/src and basedir is /project, then this method returns /project/src. Use | |||
* {@code file().getCanonicalPath()} to resolve symbolic link. |
@@ -54,11 +54,11 @@ public interface InputFile extends InputPath { | |||
* Path relative to module base directory. Path is unique and identifies file | |||
* within given <code>{@link FileSystem}</code>. File separator is the forward | |||
* slash ('/'), even on Microsoft Windows. | |||
* <p/> | |||
* <br> | |||
* Returns <code>src/main/java/com/Foo.java</code> if module base dir is | |||
* <code>/path/to/module</code> and if file is | |||
* <code>/path/to/module/src/main/java/com/Foo.java</code>. | |||
* <p/> | |||
* <br> | |||
* Relative path is not null and is normalized ('foo/../foo' is replaced by 'foo'). | |||
*/ | |||
@Override | |||
@@ -66,7 +66,7 @@ public interface InputFile extends InputPath { | |||
/** | |||
* Normalized absolute path. File separator is forward slash ('/'), even on Microsoft Windows. | |||
* <p/> | |||
* <br> | |||
* This is not canonical path. Symbolic links are not resolved. For example if /project/src links | |||
* to /tmp/src and basedir is /project, then this method returns /project/src/index.php. Use | |||
* {@code file().getCanonicalPath()} to resolve symbolic link. | |||
@@ -103,8 +103,13 @@ public interface InputFile extends InputPath { | |||
Status status(); | |||
/** | |||
* Number of physical lines. This method supports all end-of-line characters. Formula is (number of line break + 1). Returns | |||
* 1 if the file is empty.</br> Returns 2 for <tt>foo\nbar</tt>. Returns 3 for <tt>foo\nbar\n</tt>. | |||
* Number of physical lines. This method supports all end-of-line characters. Formula is (number of line break + 1). | |||
* <p> | |||
* Returns 1 if the file is empty. | |||
* <br> | |||
* Returns 2 for <tt>foo\nbar</tt>. | |||
* <br> | |||
* Returns 3 for <tt>foo\nbar\n</tt>. | |||
*/ | |||
int lines(); | |||
@@ -118,7 +123,7 @@ public interface InputFile extends InputPath { | |||
* Returns a {@link TextPointer} in the given file. | |||
* @param line Line of the pointer. Start at 1. | |||
* @param lineOffset Offset in the line. Start at 0. | |||
* @throw {@link IllegalArgumentException} if line or offset is not valid for the given file. | |||
* @throws IllegalArgumentException if line or offset is not valid for the given file. | |||
* @since 5.2 | |||
*/ | |||
TextPointer newPointer(int line, int lineOffset); | |||
@@ -127,7 +132,7 @@ public interface InputFile extends InputPath { | |||
* Returns a {@link TextRange} in the given file. | |||
* @param start start pointer | |||
* @param end end pointer | |||
* @throw {@link IllegalArgumentException} if start or stop pointers are not valid for the given file. | |||
* @throws IllegalArgumentException if start or stop pointers are not valid for the given file. | |||
* @since 5.2 | |||
*/ | |||
TextRange newRange(TextPointer start, TextPointer end); | |||
@@ -138,7 +143,7 @@ public interface InputFile extends InputPath { | |||
* <li><code>newRange(1, 0, 1, 1)</code> selects the first character at line 1</li> | |||
* <li><code>newRange(1, 0, 1, 10)</code> selects the 10 first characters at line 1</li> | |||
* </ul> | |||
* @throw {@link IllegalArgumentException} if start or stop positions are not valid for the given file. | |||
* @throws IllegalArgumentException if start or stop positions are not valid for the given file. | |||
* @since 5.2 | |||
*/ | |||
TextRange newRange(int startLine, int startLineOffset, int endLine, int endLineOffset); | |||
@@ -146,7 +151,7 @@ public interface InputFile extends InputPath { | |||
/** | |||
* Returns a {@link TextRange} in the given file that select the full line. | |||
* @param line Start at 1. | |||
* @throw {@link IllegalArgumentException} if line is not valid for the given file. | |||
* @throws IllegalArgumentException if line is not valid for the given file. | |||
* @since 5.2 | |||
*/ | |||
TextRange selectLine(int line); |
@@ -21,17 +21,6 @@ package org.sonar.api.batch.fs.internal; | |||
import com.google.common.base.Function; | |||
import com.google.common.collect.Iterables; | |||
import org.sonar.api.batch.fs.FilePredicate; | |||
import org.sonar.api.batch.fs.FilePredicates; | |||
import org.sonar.api.batch.fs.FileSystem; | |||
import org.sonar.api.batch.fs.InputDir; | |||
import org.sonar.api.batch.fs.InputFile; | |||
import org.sonar.api.scan.filesystem.PathResolver; | |||
import org.sonar.api.utils.PathUtils; | |||
import javax.annotation.CheckForNull; | |||
import javax.annotation.Nullable; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.nio.charset.Charset; | |||
@@ -44,6 +33,15 @@ import java.util.Iterator; | |||
import java.util.Map; | |||
import java.util.SortedSet; | |||
import java.util.TreeSet; | |||
import javax.annotation.CheckForNull; | |||
import javax.annotation.Nullable; | |||
import org.sonar.api.batch.fs.FilePredicate; | |||
import org.sonar.api.batch.fs.FilePredicates; | |||
import org.sonar.api.batch.fs.FileSystem; | |||
import org.sonar.api.batch.fs.InputDir; | |||
import org.sonar.api.batch.fs.InputFile; | |||
import org.sonar.api.scan.filesystem.PathResolver; | |||
import org.sonar.api.utils.PathUtils; | |||
/** | |||
* @since 4.2 | |||
@@ -110,12 +108,12 @@ public class DefaultFileSystem implements FileSystem { | |||
this.workDir = d.getAbsoluteFile().toPath().normalize(); | |||
return this; | |||
} | |||
public DefaultFileSystem setDefaultPredicate(@Nullable FilePredicate predicate) { | |||
this.defaultPredicate = predicate; | |||
return this; | |||
} | |||
@Override | |||
public File workDir() { | |||
return workDir.toFile(); | |||
@@ -146,7 +144,7 @@ public class DefaultFileSystem implements FileSystem { | |||
throw new IllegalArgumentException(sb.toString()); | |||
} | |||
/** | |||
* Bypass default predicate to get all files/dirs indexed. | |||
* Default predicate is used when some files/dirs should not be processed by sensors. | |||
@@ -160,7 +158,7 @@ public class DefaultFileSystem implements FileSystem { | |||
public Iterable<InputFile> inputFiles(FilePredicate predicate) { | |||
doPreloadFiles(); | |||
FilePredicate combinedPredicate = predicate; | |||
if(defaultPredicate != null) { | |||
if (defaultPredicate != null) { | |||
combinedPredicate = predicates().and(defaultPredicate, predicate); | |||
} | |||
return OptimizedFilePredicateAdapter.create(combinedPredicate).get(cache); | |||
@@ -224,7 +222,7 @@ public class DefaultFileSystem implements FileSystem { | |||
/** | |||
* Adds a language to the list. To be used only for unit tests that need to use {@link #languages()} without | |||
* using {@link #add(org.sonar.api.batch.fs.InputFile)}. | |||
* using {@link #add(DefaultInputFile)}. | |||
*/ | |||
public DefaultFileSystem addLanguages(String language, String... others) { | |||
languages.add(language); |
@@ -25,7 +25,7 @@ import org.sonar.api.ExtensionPoint; | |||
/** | |||
* PostJobs are executed at the very end of batch analysis. A PostJob can't do any modification | |||
* since everything is already computed (issues, measures,...). <br/> | |||
* since everything is already computed (issues, measures,...). <br> | |||
* WANRING: Do not rely on the fact that analysis results are available on server side using WS since this is an | |||
* asynchronous process to compute data on server side in 5.x series. | |||
* |
@@ -29,7 +29,7 @@ import java.util.Collection; | |||
/** | |||
* The rules that are activated on the current module. Quality profiles are | |||
* merged, so rules can relate to different repositories and languages. | |||
* <p/> | |||
* <br> | |||
* Use {@link org.sonar.api.batch.rule.internal.ActiveRulesBuilder} to instantiate | |||
* this component in unit tests. | |||
* |
@@ -39,7 +39,7 @@ import org.sonar.check.RuleProperty; | |||
* Instantiates checks (objects that provide implementation of coding | |||
* rules) that use sonar-check-api annotations. Checks are selected and configured | |||
* from the Quality profiles enabled on the current module. | |||
* <p/> | |||
* <br> | |||
* Example of check class: | |||
* <pre> | |||
* {@literal @}org.sonar.check.Rule(key = "S001") | |||
@@ -74,7 +74,7 @@ import org.sonar.check.RuleProperty; | |||
* } | |||
* } | |||
* </pre> | |||
* <p/> | |||
* <br> | |||
* It replaces org.sonar.api.checks.AnnotationCheckFactory | |||
* | |||
* @since 4.2 |
@@ -27,11 +27,11 @@ import org.sonar.api.batch.BatchSide; | |||
* <p> | |||
* A sensor is invoked once for each module of a project, starting from leaf modules. The sensor can parse a flat file, connect to a web server... Sensors are | |||
* used to add measure and issues at file level. | |||
* </p> | |||
* | |||
* | |||
* <p> | |||
* For example the Cobertura Sensor parses Cobertura report and saves the first-level of measures on files. | |||
* </p> | |||
* | |||
* | |||
* @since 5.1 | |||
*/ |
@@ -23,7 +23,7 @@ import com.google.common.annotations.Beta; | |||
/** | |||
* Experimental, do not use. | |||
* <p/> | |||
* <br> | |||
* Possible types for highlighting code. See sonar-colorizer.css | |||
* @since 5.1 | |||
*/ |
@@ -50,7 +50,7 @@ public interface NewIssueLocation { | |||
/** | |||
* Optional, but recommended, plain-text message for this location. | |||
* <p/> | |||
* <br> | |||
* Formats like Markdown or HTML are not supported. Size must not be greater than {@link #MESSAGE_MAX_SIZE} characters. | |||
*/ | |||
NewIssueLocation message(String message); |
@@ -23,14 +23,14 @@ import java.util.List; | |||
import java.util.Set; | |||
import javax.annotation.CheckForNull; | |||
import org.sonar.api.ExtensionPoint; | |||
import org.sonar.api.ce.measure.MeasureComputer.MeasureComputerDefinition.Builder; | |||
import org.sonar.api.ce.ComputeEngineSide; | |||
import org.sonar.api.ce.measure.MeasureComputer.MeasureComputerDefinition.Builder; | |||
/** | |||
* Define how to compute new measures on some metrics declared by {@link org.sonar.api.measures.Metrics}. | |||
* <p/> | |||
* <p> | |||
* This interface replaces the deprecated class org.sonar.api.batch.Decorator. | |||
* <p/> | |||
* <p> | |||
* <h3>How to use</h3> | |||
* <pre> | |||
* public class MyMeasureComputer implements MeasureComputer { | |||
@@ -59,7 +59,7 @@ import org.sonar.api.ce.ComputeEngineSide; | |||
* } | |||
* } | |||
* </pre> | |||
* <p/> | |||
* <p> | |||
* <h3>How to test</h3> | |||
* <pre> | |||
* public class MyMeasureComputerTest { |
@@ -32,9 +32,9 @@ import org.sonar.api.utils.KeyValueFormat; | |||
/** | |||
* Utility to build a distribution based on defined ranges | |||
* <p/> | |||
* <p> | |||
* <p>An example of usage : you wish to record the percentage of lines of code that belong to method | |||
* with pre-defined ranges of complexity.</p> | |||
* with pre-defined ranges of complexity. | |||
* | |||
* @since 5.2 | |||
*/ | |||
@@ -86,7 +86,7 @@ public class RangeDistributionBuilder { | |||
* Adds an existing Distribution to the current one. | |||
* It will create the entries if they don't exist. | |||
* Can be used to add the values of children resources for example | |||
* <p/> | |||
* <br> | |||
* The returned distribution will be invalidated in case the given value does not use the same bottom limits | |||
* | |||
* @param data the data to add to the current one |
@@ -31,7 +31,7 @@ public interface CeTask { | |||
* <p> | |||
* This is the id under which the processing of the project analysis report has been added to the Compute Engine | |||
* queue. | |||
* </p> | |||
* | |||
*/ | |||
String getId(); | |||
@@ -31,11 +31,11 @@ import org.sonar.api.ce.ComputeEngineSide; | |||
* | |||
* <p> | |||
* If more then one implementation of {@link PostProjectAnalysisTask} is found, they will be executed in no specific order. | |||
* </p> | |||
* | |||
* | |||
* <p> | |||
* Class {@link PostProjectAnalysisTaskTester} is provided to write unit tests of implementations of this interface. | |||
* </p> | |||
* | |||
* | |||
* @since 5.5 | |||
* @see PostProjectAnalysisTaskTester | |||
@@ -74,7 +74,7 @@ public interface PostProjectAnalysisTask { | |||
* Date of the analysis. | |||
* <p> | |||
* This date is the same as the date of the project analysis report and the snapshot. | |||
* </p> | |||
* | |||
*/ | |||
Date getDate(); | |||
} |
@@ -71,7 +71,7 @@ public interface QualityGate { | |||
* <p> | |||
* The {@link org.sonar.api.measures.Metric} for the returned key can be retrieved using a | |||
* {@link org.sonar.api.measures.MetricFinder} instance. | |||
* </p> | |||
* | |||
* | |||
* @see org.sonar.api.batch.measure.MetricFinder#findByKey(String) | |||
*/ | |||
@@ -85,7 +85,7 @@ public interface QualityGate { | |||
/** | |||
* <p> | |||
* At least one of {@link #getErrorThreshold()} and {@link #getWarningThreshold()} is guaranteed to be non {@code null}. | |||
* </p> | |||
* | |||
* | |||
* @see #getWarningThreshold() | |||
*/ | |||
@@ -96,7 +96,7 @@ public interface QualityGate { | |||
* | |||
* <p> | |||
* At least one of {@link #getErrorThreshold()} and {@link #getWarningThreshold()} is guaranteed to be non {@code null}. | |||
* </p> | |||
* | |||
* | |||
* @see #getErrorThreshold() | |||
*/ | |||
@@ -113,7 +113,7 @@ public interface QualityGate { | |||
* <p> | |||
* If the type of the metric (which key is provided by {@link #getMetricKey()}) is numerical, the value can be parsed | |||
* using {@link Integer#valueOf(String)}, {@link Long#valueOf(String)} or {@link Double#valueOf(String)}. | |||
* </p> | |||
* | |||
* | |||
* @throws IllegalStateException if {@link #getStatus()} is {@link EvaluationStatus#NO_VALUE} | |||
* |
@@ -33,16 +33,16 @@ import org.sonar.api.ExtensionPoint; | |||
import org.sonar.api.Property; | |||
import org.sonar.api.PropertyType; | |||
import org.sonar.api.batch.BatchSide; | |||
import org.sonar.api.resources.Qualifiers; | |||
import org.sonar.api.ce.ComputeEngineSide; | |||
import org.sonar.api.resources.Qualifiers; | |||
import org.sonar.api.server.ServerSide; | |||
/** | |||
* Declare a plugin property. Values are available at runtime through the component {@link Settings}. | |||
* <p/> | |||
* <br> | |||
* It's the programmatic alternative to the annotation {@link org.sonar.api.Property}. It is more | |||
* testable and adds new features like sub-categories and ordering. | |||
* <p/> | |||
* <br> | |||
* Example: | |||
* <pre><code> | |||
* public class MyPlugin extends SonarPlugin { | |||
@@ -54,7 +54,7 @@ import org.sonar.api.server.ServerSide; | |||
* } | |||
* } | |||
* </code></pre> | |||
* <p/> | |||
* <br> | |||
* Keys in localization bundles are: | |||
* <ul> | |||
* <li>{@code property.<key>.name} is the label of the property</li> | |||
@@ -209,11 +209,11 @@ public final class PropertyDefinition { | |||
/** | |||
* Options for *_LIST types | |||
* <p/> | |||
* Options for property of type PropertyType.SINGLE_SELECT_LIST</code> | |||
* <br> | |||
* Options for property of type {@link PropertyType#SINGLE_SELECT_LIST}.<br> | |||
* For example {"property_1", "property_3", "property_3"}). | |||
* <p/> | |||
* Options for property of type PropertyType.METRIC</code>. | |||
* <br> | |||
* Options for property of type {@link PropertyType#METRIC}.<br> | |||
* If no option is specified, any metric will match. | |||
* If options are specified, all must match for the metric to be displayed. | |||
* Three types of filter are supported <code>key:REGEXP</code>, <code>domain:REGEXP</code> and <code>type:comma_separated__list_of_types</code>. | |||
@@ -381,10 +381,10 @@ public final class PropertyDefinition { | |||
/** | |||
* The property will be available in General Settings AND in the components | |||
* with the given qualifiers. | |||
* <p/> | |||
* <br> | |||
* For example @{code onQualifiers(Qualifiers.PROJECT)} allows to configure the | |||
* property in General Settings and in Project Settings. | |||
* <p/> | |||
* <br> | |||
* See supported constant values in {@link Qualifiers}. By default property is available | |||
* only in General Settings. | |||
*/ | |||
@@ -397,10 +397,10 @@ public final class PropertyDefinition { | |||
/** | |||
* The property will be available in General Settings AND in the components | |||
* with the given qualifiers. | |||
* <p/> | |||
* <br> | |||
* For example @{code onQualifiers(Arrays.asList(Qualifiers.PROJECT))} allows to configure the | |||
* property in General Settings and in Project Settings. | |||
* <p/> | |||
* <br> | |||
* See supported constant values in {@link Qualifiers}. By default property is available | |||
* only in General Settings. | |||
*/ | |||
@@ -413,10 +413,10 @@ public final class PropertyDefinition { | |||
/** | |||
* The property will be available in the components | |||
* with the given qualifiers, but NOT in General Settings. | |||
* <p/> | |||
* <br> | |||
* For example @{code onlyOnQualifiers(Qualifiers.PROJECT)} allows to configure the | |||
* property in Project Settings only. | |||
* <p/> | |||
* <br> | |||
* See supported constant values in {@link Qualifiers}. By default property is available | |||
* only in General Settings. | |||
*/ | |||
@@ -429,10 +429,10 @@ public final class PropertyDefinition { | |||
/** | |||
* The property will be available in the components | |||
* with the given qualifiers, but NOT in General Settings. | |||
* <p/> | |||
* <br> | |||
* For example @{code onlyOnQualifiers(Arrays.asList(Qualifiers.PROJECT))} allows to configure the | |||
* property in Project Settings only. | |||
* <p/> | |||
* <br> | |||
* See supported constant values in {@link Qualifiers}. By default property is available | |||
* only in General Settings. | |||
*/ |
@@ -41,10 +41,10 @@ import org.sonar.api.utils.DateUtils; | |||
/** | |||
* Project settings on batch side, or global settings on server side. This component does not access to database, so | |||
* property changed via setter methods are not persisted. | |||
* <p/> | |||
* <br> | |||
* <p> | |||
* For testing, you can create a new empty {@link Settings} component using {@link #Settings()} and then | |||
* populate it using all variant of {@code setProperty}. <br/> | |||
* populate it using all variant of {@code setProperty}. <br> | |||
* If you want to test with default values of your properties taken into account there are two ways dependening on how you declare your properties. | |||
* <ul> | |||
* <li>If you are using annotations like: | |||
@@ -82,7 +82,8 @@ import org.sonar.api.utils.DateUtils; | |||
* </code> | |||
* </pre> | |||
* </li> | |||
* </p> | |||
* </ul> | |||
* | |||
* @since 2.12 | |||
*/ | |||
@BatchSide | |||
@@ -229,12 +230,12 @@ public class Settings { | |||
/** | |||
* Value is split by comma and trimmed. Never returns null. | |||
* <p/> | |||
* <br> | |||
* Examples : | |||
* <ul> | |||
* <li>"one,two,three " -> ["one", "two", "three"]</li> | |||
* <li>" one, two, three " -> ["one", "two", "three"]</li> | |||
* <li>"one, , three" -> ["one", "", "three"]</li> | |||
* <li>"one,two,three " -> ["one", "two", "three"]</li> | |||
* <li>" one, two, three " -> ["one", "two", "three"]</li> | |||
* <li>"one, , three" -> ["one", "", "three"]</li> | |||
* </ul> | |||
*/ | |||
public String[] getStringArray(String key) { |
@@ -40,7 +40,7 @@ public interface I18n { | |||
* Searches the message of the <code>key</code> for the <code>locale</code> in the list of available bundles. | |||
* <br> | |||
* If not found in any bundle, <code>defaultValue</code> is returned. | |||
* <p/> | |||
* <br> | |||
* If additional parameters are given (in the objects list), the result is used as a message pattern | |||
* to use in a MessageFormat object along with the given parameters. | |||
* | |||
@@ -57,13 +57,13 @@ public interface I18n { | |||
* <br> | |||
* Examples : | |||
* <ul> | |||
* <li>age(Locale.ENGLISH, 1000) -> less than a minute</li> | |||
* <li>age(Locale.ENGLISH, 60000) -> about a minute</li> | |||
* <li>age(Locale.ENGLISH, 120000) -> 2 minutes</li> | |||
* <li>age(Locale.ENGLISH, 3600000) -> about an hour</li> | |||
* <li>age(Locale.ENGLISH, 7200000) -> 2 hours</li> | |||
* <li>age(Locale.ENGLISH, 86400000) -> a day</li> | |||
* <li>age(Locale.ENGLISH, 172800000) -> 2 days</li> | |||
* <li>age(Locale.ENGLISH, 1000) -> less than a minute</li> | |||
* <li>age(Locale.ENGLISH, 60000) -> about a minute</li> | |||
* <li>age(Locale.ENGLISH, 120000) -> 2 minutes</li> | |||
* <li>age(Locale.ENGLISH, 3600000) -> about an hour</li> | |||
* <li>age(Locale.ENGLISH, 7200000) -> 2 hours</li> | |||
* <li>age(Locale.ENGLISH, 86400000) -> a day</li> | |||
* <li>age(Locale.ENGLISH, 172800000) -> 2 days</li> | |||
* </ul> | |||
* | |||
* @since 4.2 |
@@ -28,10 +28,9 @@ import org.sonar.api.component.Perspective; | |||
import org.sonar.api.rule.RuleKey; | |||
/** | |||
* This perspective allows to add and get issues related to the selected component. It can be used from | |||
* {@link org.sonar.api.batch.Sensor}s and {@link org.sonar.api.batch.Decorator}s. Web extensions | |||
* must use {@link RubyIssueService}. | |||
* <p/> | |||
* This perspective allows to add issues related to the selected component. It can be used from | |||
* {@link org.sonar.api.batch.Sensor}s. | |||
* <br> | |||
* Example: | |||
* <pre> | |||
* import org.sonar.api.component.ResourcePerspectives; | |||
@@ -75,7 +74,7 @@ public interface Issuable extends Perspective { | |||
/** | |||
* Optional, but recommended, plain-text message. | |||
* <p/> | |||
* <br> | |||
* Formats like Markdown or HTML are not supported. Size must not be greater than {@link Issue#MESSAGE_MAX_SIZE} characters. | |||
* @deprecated since 5.2 use {@link #at(NewIssueLocation)} | |||
*/ | |||
@@ -136,7 +135,7 @@ public interface Issuable extends Perspective { | |||
/** | |||
* Register an issue created with {@link #newIssueBuilder()}. | |||
* <p/> | |||
* <br> | |||
* This method is usually called from {@link org.sonar.api.batch.Sensor}s. {@link org.sonar.api.batch.Decorator}s calling this | |||
* method must be annotated with {@code @DependedUpon(DecoratorBarriers.ISSUES_ADDED)}. | |||
* |
@@ -114,7 +114,7 @@ public interface Issue extends Serializable { | |||
/** | |||
* Arbitrary distance to threshold for resolving the issue. | |||
* <p/> | |||
* <br> | |||
* For examples: | |||
* <ul> | |||
* <li>for the rule "Avoid too complex methods" : current complexity - max allowed complexity</li> | |||
@@ -186,7 +186,7 @@ public interface Issue extends Serializable { | |||
/** | |||
* Non-null list of comments, ordered by chronological order. | |||
* <p/> | |||
* <br> | |||
* IMPORTANT: existing comments are not loaded when this method is called when analyzing project | |||
* (from {@link BatchSide}). | |||
*/ |
@@ -34,7 +34,7 @@ import java.util.Set; | |||
/** | |||
* Issue filter used to ignore issues created on lines commented with the tag "NOSONAR". | |||
* <p/> | |||
* <br> | |||
* Plugins, via {@link BatchSide}s, must feed this filter by registering the | |||
* lines that contain "NOSONAR". Note that filters are disabled for the issues reported by | |||
* end-users from UI or web services. |
@@ -24,7 +24,7 @@ import org.sonar.api.batch.BatchSide; | |||
import org.sonar.api.issue.Issue; | |||
/** | |||
* <p>An issue filter is an object that allows filtering of {@link Issue}s on batch side, preventing them from being persisted.</p> | |||
* <p>An issue filter is an object that allows filtering of {@link Issue}s on batch side, preventing them from being persisted. | |||
* @since 4.0 | |||
* @deprecated since 5.3. Use {@link org.sonar.api.scan.issue.filter.IssueFilter} instead. | |||
*/ |
@@ -29,7 +29,7 @@ import org.sonar.api.issue.Issue; | |||
* <li>Let downstream filters decide by passing the issue to the rest of the chain</li> | |||
* </ul> | |||
* @since 4.0 | |||
* @deprecated since 5.3. Use {@link org.sonar.api.issue.filter.IssueFilterChain} instead. | |||
* @deprecated since 5.3. Use {@link org.sonar.api.scan.issue.filter.IssueFilterChain} instead. | |||
*/ | |||
@Deprecated | |||
public interface IssueFilterChain { |
@@ -1348,17 +1348,19 @@ public final class CoreMetrics { | |||
* <p> | |||
* Here is the format (since Sonar 2.12): | |||
* <pre> | |||
* <duplications> | |||
* <!-- Multiple groups: --> | |||
* <g> | |||
* <!-- Multiple blocks: --> | |||
* <b r="[resource key]" s="[first line]" l="[number of lines]" /> | |||
* ... | |||
* </g> | |||
* {@literal | |||
* <duplications> | |||
* <!-- Multiple groups: --> | |||
* <g> | |||
* <!-- Multiple blocks: --> | |||
* <b r="[resource key]" s="[first line]" l="[number of lines]" /> | |||
* ... | |||
* </duplications> | |||
* </g> | |||
* ... | |||
* </duplications> | |||
* } | |||
* </pre> | |||
* </p> | |||
* | |||
* @deprecated since 4.5. Internal storage of duplication is not an API. | |||
*/ | |||
@Deprecated |
@@ -30,7 +30,7 @@ import org.sonar.api.utils.SonarException; | |||
/** | |||
* Utility to build a distribution based on discrete values | |||
* | |||
* <p>An example of usage : you wish to record the number of violations for each level of rules priority</p> | |||
* <p>An example of usage : you wish to record the number of violations for each level of rules priority | |||
* | |||
* @since 1.10 | |||
*/ |
@@ -32,7 +32,7 @@ package org.sonar.api.measures; | |||
* Also note that you can't update what already was saved, however it is safe to call {@link #save()} several times. | |||
* <p> | |||
* Instances of this interface can be obtained using {@link FileLinesContextFactory}. | |||
* <p/> | |||
* <br> | |||
* This interface is not intended to be implemented by clients. | |||
* | |||
* @since 2.14 |
@@ -24,7 +24,7 @@ import org.sonar.api.batch.fs.InputFile; | |||
import org.sonar.api.resources.Resource; | |||
/** | |||
* <p>This interface is not intended to be implemented by clients.</p> | |||
* <p>This interface is not intended to be implemented by clients. | |||
* | |||
* @since 2.14 | |||
*/ |
@@ -158,12 +158,12 @@ public class Measure<G extends Serializable> implements Serializable { | |||
/** | |||
* <p> | |||
* Sets the persistence mode of a measure. | |||
* </p> | |||
* | |||
* <p> | |||
* <b>WARNING : </b>Being able to reuse measures saved in memory is only possible within the same tree. In a multi-module project for | |||
* example, a measure save in memory at the module level will not be accessible by the root project. In that case, database should be | |||
* used. | |||
* </p> | |||
* | |||
* | |||
* @param mode the mode | |||
* @return the measure object instance |
@@ -639,7 +639,7 @@ public class Metric<G extends Serializable> implements Serializable, org.sonar.a | |||
/** | |||
* Sets whether the metric is qualitative or not. Default value is false. | |||
* <br/> | |||
* <br> | |||
* If set to true, then variations of this metric will be highlighted in the Web UI (for instance, trend icons will be red or green instead of default grey). | |||
* | |||
* @param b Boolean.TRUE if the metric is qualitative | |||
@@ -652,7 +652,7 @@ public class Metric<G extends Serializable> implements Serializable, org.sonar.a | |||
/** | |||
* Sets the domain for the metric (General, Complexity...). This is used to group metrics in the Web UI. | |||
* <br/> | |||
* <br> | |||
* By default, the metric belongs to no specific domain. | |||
* | |||
* @param d the domain | |||
@@ -665,10 +665,10 @@ public class Metric<G extends Serializable> implements Serializable, org.sonar.a | |||
/** | |||
* Specifies the formula used by Sonar to automatically aggregate measures stored on files up to the project level. | |||
* <br/> | |||
* <br/> | |||
* <br> | |||
* <br> | |||
* By default, no formula is defined, which means that it's up to a sensor/decorator to compute measures on appropriate levels. | |||
* <br/> | |||
* <br> | |||
* When a formula is set, sensors/decorators just need to store measures at a specific level and let Sonar run the formula to store | |||
* measures on the remaining levels. | |||
* | |||
@@ -696,7 +696,7 @@ public class Metric<G extends Serializable> implements Serializable, org.sonar.a | |||
/** | |||
* Sets the best value that the metric can get (example: 100.0 for code coverage). No best value is set by default. | |||
* <br/> | |||
* <br> | |||
* Resources would be hidden on drilldown page, if the value of measure equals to best value. | |||
* | |||
* @param d the best value | |||
@@ -709,7 +709,7 @@ public class Metric<G extends Serializable> implements Serializable, org.sonar.a | |||
/** | |||
* Specifies whether file-level measures that equal to the defined best value are stored or not. Default is false. | |||
* <br/> | |||
* <br> | |||
* Example with the metric that stores the number of violation ({@link CoreMetrics#VIOLATIONS}): | |||
* if a file has no violation, then the value '0' won't be stored in the database. | |||
* | |||
@@ -747,7 +747,7 @@ public class Metric<G extends Serializable> implements Serializable, org.sonar.a | |||
/** | |||
* Specifies whether measures from the past can be automatically deleted to minimize database volume. | |||
* <br/> | |||
* <br> | |||
* By default, historical data are kept. | |||
* | |||
* @since 2.14 |
@@ -35,9 +35,9 @@ import static java.util.Objects.requireNonNull; | |||
/** | |||
* Utility to build a distribution based on defined ranges | |||
* <p/> | |||
* <br> | |||
* <p>An example of usage : you wish to record the percentage of lines of code that belong to method | |||
* with pre-defined ranges of complexity.</p> | |||
* with pre-defined ranges of complexity. | |||
* | |||
* @since 1.10 | |||
* @deprecated since 5.2 use {@link org.sonar.api.ce.measure.RangeDistributionBuilder instead} | |||
@@ -143,7 +143,7 @@ public class RangeDistributionBuilder implements MeasureBuilder { | |||
* Adds an existing Distribution to the current one. | |||
* It will create the entries if they don't exist. | |||
* Can be used to add the values of children resources for example | |||
* <p/> | |||
* <br> | |||
* Since 2.2, the distribution returned will be invalidated in case the | |||
* measure given does not use the same bottom limits | |||
* |
@@ -34,7 +34,7 @@ import java.util.Map; | |||
* When creating a new notification, it is strongly advised to give a default message that can be used by channels | |||
* that don't want to specifically format messages for different notification types. You can use | |||
* {@link Notification#setDefaultMessage(String)} for that purpose. | |||
* </p> | |||
* | |||
* | |||
* @since 2.10 | |||
*/ | |||
@@ -48,7 +48,7 @@ public class Notification implements Serializable { | |||
/** | |||
* <p> | |||
* Create a new {@link Notification} of the given type. | |||
* </p> | |||
* | |||
* Example: type = "new-violations" | |||
* | |||
* @param type the type of notification | |||
@@ -70,11 +70,11 @@ public class Notification implements Serializable { | |||
* <p> | |||
* When creating a new notification, it is strongly advised to give a default message that can be | |||
* used by channels that don't want to specifically format messages for different notification types. | |||
* </p> | |||
* | |||
* <p> | |||
* This method is equivalent to setting a value for the field {@link #DEFAULT_MESSAGE_KEY} with | |||
* {@link #setFieldValue(String, String)}. | |||
* </p> | |||
* | |||
* | |||
* @since 3.5 | |||
*/ |
@@ -26,7 +26,7 @@ import org.sonar.api.server.ServerSide; | |||
/** | |||
* <p> | |||
* Plugins should extend this class to provide implementation on a specific way to deliver notifications. | |||
* </p> | |||
* | |||
* For example: | |||
* <ul> | |||
* <li>email - sends email as soon as possible</li> |
@@ -33,7 +33,7 @@ public interface InputFile { | |||
* The source base directory, different than the project basedir. | |||
* | |||
* <p>For example in maven projects, the basedir of a source file stored in | |||
* <code>src/main/java/org/foo/</code> is the directory <code>src/main/java</code>.</p> | |||
* <code>src/main/java/org/foo/</code> is the directory <code>src/main/java</code>. | |||
*/ | |||
File getFileBaseDir(); | |||
@@ -48,10 +48,10 @@ public interface InputFile { | |||
* Path relative to basedir. Directory separator is slash <code>'/'</code>, whatever the platform. | |||
* | |||
* <p>Example on windows: if file basedir is <code>c:\project\src\</code> and file is <code>c:\project\src\org\foo\Bar.java</code>, then relative path | |||
* is <code>org/foo/Bar.java</code></p> | |||
* is <code>org/foo/Bar.java</code> | |||
* | |||
* <p>Example on unix: if file basedir is <code>/project/src</code> and file is <code>/project/src/org/foo/Bar.java</code>, then relative path | |||
* is <code>org/foo/Bar.java</code> as well.</p> | |||
* is <code>org/foo/Bar.java</code> as well. | |||
*/ | |||
String getRelativePath(); | |||
@@ -59,7 +59,7 @@ public interface InputFile { | |||
* Get an {@link InputStream} that reads from the file. | |||
* | |||
* <p>The returned stream is buffered so there is no need to use a | |||
* <code>BufferedInputStream</code></p> | |||
* <code>BufferedInputStream</code> | |||
* | |||
* @return the stream | |||
* @throws FileNotFoundException if the file is not found |
@@ -27,7 +27,7 @@ import org.sonar.api.server.ServerSide; | |||
/** | |||
* The extension point to define a new language | |||
* <p/> | |||
* <br> | |||
* Instantiation strategy changed to PER_BATCH in version 4.2. | |||
* | |||
* @since 1.10 |
@@ -211,7 +211,7 @@ public abstract class Resource implements Serializable { | |||
* The parent is used to build the resources tree, for example for relations between files, directories and projects. | |||
* <p> | |||
* Return null if the parent is the current project (or module in case of multi-module). | |||
* </p> | |||
* | |||
*/ | |||
@CheckForNull | |||
public abstract Resource getParent(); |
@@ -29,14 +29,14 @@ import javax.annotation.concurrent.Immutable; | |||
import java.util.Map; | |||
/** | |||
* <p>Experimental extension to declare types of resources.</p> | |||
* <p>Experimental extension to declare types of resources. | |||
* <p> | |||
* Since 3.0, ResourceType object can declare properties that give information about the capabilities of the | |||
* resource type. Those properties may be used, of instance, to adapt the Web UI according to the type of | |||
* the resource being displayed. | |||
* <br> | |||
* Currently, the following properties can be defined: | |||
* </p> | |||
* | |||
* <ul> | |||
* <li>"deletable": if set to "true", then this resource can be deleted/purged.</li> | |||
* <li>"supportsMeasureFilters": if set to "true", then this resource can be displayed in measure filters</li> |
@@ -25,9 +25,9 @@ import org.apache.commons.lang.StringUtils; | |||
/** | |||
* Resource scopes are used to group some types of resources. For example Java methods, Flex methods, C functions | |||
* and Cobol paragraphs are grouped in the scope "block unit". | |||
* <p/> | |||
* <br> | |||
* Scopes are generally used in UI to display/hide some services or in web services. | |||
* <p/> | |||
* <br> | |||
* Scopes are not extensible by plugins. | |||
* | |||
* @since 2.6 |
@@ -52,7 +52,7 @@ public interface RuleFinder { | |||
Rule findByKey(RuleKey key); | |||
/** | |||
* @throw IllegalArgumentException if more than one result | |||
* @throws IllegalArgumentException if more than one result | |||
*/ | |||
@CheckForNull | |||
Rule find(RuleQuery query); |
@@ -31,7 +31,7 @@ import java.util.List; | |||
/** | |||
* Configuration of file inclusions and exclusions. | |||
* <p>Plugins must not extend nor instantiate this class. An instance is injected at | |||
* runtime.</p> | |||
* runtime. | |||
* | |||
* @since 3.5 | |||
*/ |
@@ -19,15 +19,13 @@ | |||
*/ | |||
package org.sonar.api.scan.filesystem; | |||
import org.sonar.api.batch.BatchSide; | |||
import org.sonar.api.batch.fs.FileSystem; | |||
import org.sonar.api.batch.fs.InputFile; | |||
import javax.annotation.CheckForNull; | |||
import java.io.File; | |||
import java.nio.charset.Charset; | |||
import java.util.List; | |||
import javax.annotation.CheckForNull; | |||
import org.sonar.api.batch.BatchSide; | |||
import org.sonar.api.batch.fs.FileSystem; | |||
import org.sonar.api.batch.fs.InputFile; | |||
/** | |||
* @since 3.5 | |||
@@ -81,8 +79,7 @@ public interface ModuleFileSystem { | |||
/** | |||
* Default charset for files of the module. If it's not defined, then | |||
* return the platform default charset. When trying to read an input file it is better to rely on | |||
* {@link InputFile#encoding()} as encoding may be different for each file. | |||
* return the platform default charset. | |||
*/ | |||
Charset sourceCharset(); | |||
@@ -25,8 +25,8 @@ import org.sonar.api.resources.Resource; | |||
/** | |||
* Grant access to newly created projects. | |||
* <p/> | |||
* <p>This component is not supposed to be called by standard plugins.</p> | |||
* <br> | |||
* <p>This component is not supposed to be called by standard plugins. | |||
* | |||
* @since 3.2 | |||
*/ |
@@ -46,7 +46,7 @@ public final class Display { | |||
* It can also be an external URL, for example "http://www.mydomain/myincon.png". | |||
* | |||
* Must not be blank. | |||
* <p/> | |||
* <br> | |||
* The recommended format is SVG with a size of 24x24 pixels. | |||
* Other supported format is PNG, with a size of 40x40 pixels. | |||
*/ | |||
@@ -57,7 +57,7 @@ public final class Display { | |||
/** | |||
* Background color for the provider button displayed in the login form. | |||
* It's a Hexadecimal value, for instance #205081. | |||
* <p/> | |||
* <br> | |||
* If not provided, the default value is #236a97 | |||
*/ | |||
public String getBackgroundColor() { |
@@ -24,7 +24,7 @@ import javax.annotation.CheckForNull; | |||
/** | |||
* Function used to calculate the remediation cost of an issue. See {@link Type} for details. | |||
* <p>The gap multiplier and base effort involved in the functions are durations. They are defined in hours, minutes and/or | |||
* seconds. Examples: "5min", "1h 10min". Supported units are "d" (days), "h" (hour), and "min" (minutes).</p> | |||
* seconds. Examples: "5min", "1h 10min". Supported units are "d" (days), "h" (hour), and "min" (minutes). | |||
* | |||
* @since 4.3 | |||
*/ | |||
@@ -47,13 +47,13 @@ public interface DebtRemediationFunction { | |||
* with each complexity point above the allowed value. | |||
* <p> | |||
* <code>Total remediation cost = base effort + (number of noncompliance x gap multiplier)</code> | |||
* </p> | |||
* | |||
* <p>The rule must provide the "gap" value when raising an issue. Let’s take as a example the “Paragraphs should not be too complex” rule. | |||
* If you set the rule threshold to 20, and you have a paragraph with a complexity of 27, you have 7 points of complexity | |||
* to remove. Internally, this is called the Gap. In that case, if you use the LINEAR_OFFSET configuration | |||
* with an base effort of 4h and a remediation cost of 1mn, the effort for this issue related to a | |||
* too-complex block of code will be: (7 complexity points x 1min) + 4h = 4h and 7mn | |||
* </p> | |||
* | |||
*/ | |||
LINEAR_OFFSET(true, true), | |||
@@ -56,9 +56,9 @@ import static org.apache.commons.lang.StringUtils.trimToNull; | |||
/** | |||
* Defines some coding rules of the same repository. For example the Java Findbugs plugin provides an implementation of | |||
* this extension point in order to define the rules that it supports. | |||
* <p/> | |||
* <br> | |||
* This interface replaces the deprecated class org.sonar.api.rules.RuleRepository. | |||
* <p/> | |||
* <br> | |||
* <h3>How to use</h3> | |||
* <pre> | |||
* public class MyJsRulesDefinition implements RulesDefinition { | |||
@@ -98,10 +98,10 @@ import static org.apache.commons.lang.StringUtils.trimToNull; | |||
* } | |||
* } | |||
* </pre> | |||
* <p/> | |||
* <br> | |||
* If rules are declared in a XML file with the standard SonarQube format (see | |||
* {@link org.sonar.api.server.rule.RulesDefinitionXmlLoader}), then it can be loaded by using : | |||
* <p/> | |||
* <br> | |||
* <pre> | |||
* public class MyJsRulesDefinition implements RulesDefinition { | |||
* | |||
@@ -120,10 +120,10 @@ import static org.apache.commons.lang.StringUtils.trimToNull; | |||
* } | |||
* } | |||
* </pre> | |||
* <p/> | |||
* <br> | |||
* In the above example, XML file must contain name and description of each rule. If it's not the case, then the | |||
* (deprecated) English bundles can be used : | |||
* <p/> | |||
* <br> | |||
* <pre> | |||
* public class MyJsRulesDefinition implements RulesDefinition { | |||
* | |||
@@ -382,7 +382,7 @@ public interface RulesDefinition { | |||
/** | |||
* New builder for {@link org.sonar.api.server.rule.RulesDefinition.Repository}. | |||
* <p/> | |||
* <br> | |||
* A plugin can add rules to a repository that is defined then executed by another plugin. For instance | |||
* the FbContrib plugin contributes to the Findbugs plugin rules. In this case no need | |||
* to execute {@link org.sonar.api.server.rule.RulesDefinition.NewRepository#setName(String)} | |||
@@ -704,7 +704,7 @@ public interface RulesDefinition { | |||
/** | |||
* The type as defined by the SonarQube Quality Model. | |||
* <p/> | |||
* <br> | |||
* When a plugin does not define rule type, then it is deduced from | |||
* tags: | |||
* <ul> | |||
@@ -824,7 +824,7 @@ public interface RulesDefinition { | |||
* For rules that use LINEAR or LINEAR_OFFSET remediation functions, the meaning | |||
* of the function parameter (= "gap") must be set. This description | |||
* explains what 1 point of "gap" represents for the rule. | |||
* <p/> | |||
* <br> | |||
* Example: for the "Insufficient condition coverage", this description for the | |||
* remediation function gap multiplier/base effort would be something like | |||
* "Effort to test one uncovered condition". |
@@ -28,9 +28,9 @@ import org.sonar.api.server.ServerSide; | |||
* Loads the English bundles of rules (name, description and parameters) that are | |||
* deprecated since 4.2. It can be useful when loading existing XML files that | |||
* do not contain rule names and descriptions. | |||
* <p/> | |||
* <br> | |||
* This class must be executed after declaring rules on {@link RulesDefinition.NewRepository}. | |||
* <p/> | |||
* <br> | |||
* Note that localization of rules was dropped in version 4.2. All texts are English. | |||
* | |||
* @see org.sonar.api.server.rule.RulesDefinition for an example |
@@ -41,7 +41,7 @@ import javax.annotation.CheckForNull; | |||
* } | |||
* } | |||
* </pre> | |||
* </p> | |||
* | |||
* @since 5.5 | |||
*/ | |||
@Beta |
@@ -54,10 +54,10 @@ import static java.lang.String.format; | |||
/** | |||
* Defines a web service. Note that contrary to the deprecated {@link org.sonar.api.web.Webservice} | |||
* the ws is fully implemented in Java and does not require any Ruby on Rails code. | |||
* <p/> | |||
* <p/> | |||
* <br> | |||
* <br> | |||
* The classes implementing this extension point must be declared by {@link org.sonar.api.Plugin}. | |||
* <p/> | |||
* <br> | |||
* <h3>How to use</h3> | |||
* <pre> | |||
* public class HelloWs implements WebService { | |||
@@ -99,7 +99,7 @@ public interface WebService extends Definable<WebService.Context> { | |||
/** | |||
* Create a new controller. | |||
* <p/> | |||
* <br> | |||
* Structure of request URL is <code>http://<server>/<>controller path>/<action path>?<parameters></code>. | |||
* | |||
* @param path the controller path must not start or end with "/". It is recommended to start with "api/" | |||
@@ -293,7 +293,7 @@ public interface WebService extends Definable<WebService.Context> { | |||
/** | |||
* Link to the document containing an example of response. Content must be UTF-8 encoded. | |||
* <p/> | |||
* <br> | |||
* Example: | |||
* <pre> | |||
* newAction.setResponseExample(getClass().getResource("/org/sonar/my-ws-response-example.json")); |
@@ -37,7 +37,7 @@ public interface RubyUserService { | |||
/** | |||
* Search for users | |||
* <p/> | |||
* <br> | |||
* Optional parameters are: | |||
* <ul> | |||
* <li><code>s</code> to match all the logins or names containing this search query</li> |
@@ -97,7 +97,7 @@ public class Duration implements Serializable { | |||
/** | |||
* Return the duration in text, by using the given hours in day parameter to process hours. | |||
* <br/> | |||
* <br> | |||
* Duration.decode("1d 1h", 8).encode(8) will return "1d 1h" | |||
* Duration.decode("2d", 8).encode(16) will return "1d" | |||
*/ |
@@ -23,9 +23,9 @@ import java.util.Locale; | |||
import javax.annotation.CheckForNull; | |||
import org.sonar.api.CoreProperties; | |||
import org.sonar.api.batch.BatchSide; | |||
import org.sonar.api.ce.ComputeEngineSide; | |||
import org.sonar.api.config.Settings; | |||
import org.sonar.api.i18n.I18n; | |||
import org.sonar.api.ce.ComputeEngineSide; | |||
import org.sonar.api.server.ServerSide; | |||
/** | |||
@@ -64,8 +64,9 @@ public class Durations { | |||
/** | |||
* Convert the text to a Duration | |||
* <br> | |||
* Example : decode("9d 10 h") -> Duration.encode("10d2h") (if sonar.technicalDebt.hoursInDay property is set to 8)<br /> | |||
* Throws {@code IllegalArgumentException} | |||
* Example : decode("9d 10 h") -> Duration.encode("10d2h") (if sonar.technicalDebt.hoursInDay property is set to 8) | |||
* <br> | |||
* @throws IllegalArgumentException | |||
*/ | |||
public Duration decode(String duration) { | |||
return Duration.decode(duration, hoursInDay()); | |||
@@ -74,7 +75,7 @@ public class Durations { | |||
/** | |||
* Return the string value of the Duration. | |||
* <br> | |||
* Example : encode(Duration.encode("9d 10h")) -> "10d2h" (if sonar.technicalDebt.hoursInDay property is set to 8) | |||
* Example : encode(Duration.encode("9d 10h")) -> "10d2h" (if sonar.technicalDebt.hoursInDay property is set to 8) | |||
*/ | |||
public String encode(Duration duration) { | |||
return duration.encode(hoursInDay()); | |||
@@ -83,7 +84,7 @@ public class Durations { | |||
/** | |||
* Return the formatted work duration. | |||
* <br> | |||
* Example : format(Locale.FRENCH, Duration.encode("9d 10h"), DurationFormat.SHORT) -> 10j 2h (if sonar.technicalDebt.hoursInDay property is set to 8) | |||
* Example : format(Locale.FRENCH, Duration.encode("9d 10h"), DurationFormat.SHORT) -> 10j 2h (if sonar.technicalDebt.hoursInDay property is set to 8) | |||
* | |||
*/ | |||
public String format(Locale locale, Duration duration, DurationFormat format) { | |||
@@ -93,7 +94,7 @@ public class Durations { | |||
/** | |||
* Return the formatted work duration. | |||
* <br> | |||
* Example : format(Locale.FRENCH, Duration.encode("9d 10h"), DurationFormat.SHORT) -> 10j 2h (if sonar.technicalDebt.hoursInDay property is set to 8) | |||
* Example : format(Locale.FRENCH, Duration.encode("9d 10h"), DurationFormat.SHORT) -> 10j 2h (if sonar.technicalDebt.hoursInDay property is set to 8) | |||
* | |||
*/ | |||
public String format(Locale locale, Duration duration) { |
@@ -34,9 +34,9 @@ import org.sonar.api.rules.RulePriority; | |||
/** | |||
* <p>Formats and parses key/value pairs with the text representation : "key1=value1;key2=value2". Field typing | |||
* is supported, to make conversion from/to primitive types easier for example. | |||
* <p/> | |||
* <br> | |||
* Since version 4.5.1, text keys and values are escaped if they contain the separator characters '=' or ';'. | |||
* <p/> | |||
* <br> | |||
* <b>Parsing examples</b> | |||
* <pre> | |||
* Map<String,String> mapOfStrings = KeyValueFormat.parse("hello=world;foo=bar"); | |||
@@ -48,7 +48,7 @@ import org.sonar.api.rules.RulePriority; | |||
* Map<String,MyClass> mapOfStringMyClass = KeyValueFormat.parse("foo=xxx;bar=yyy", | |||
* KeyValueFormat.newStringConverter(), new MyClassConverter()); | |||
* </pre> | |||
* <p/> | |||
* <br> | |||
* <b>Formatting examples</b> | |||
* <pre> | |||
* String output = KeyValueFormat.format(map); |
@@ -30,7 +30,7 @@ import static com.google.common.collect.Lists.newArrayList; | |||
/** | |||
* Runtime exception for "functional" error. It aims to be displayed to end-users, without any technical information | |||
* like stack traces. | |||
* <p/> | |||
* <br> | |||
* | |||
* It's handling depends on the versions of the sonar-batch and sonar-runner. sonar-runner 2.4 will only show the | |||
* message associated with this exception. | |||
@@ -38,7 +38,7 @@ import static com.google.common.collect.Lists.newArrayList; | |||
* exception. If this exception is created without cause, then only the message associated with this exception is shown; | |||
* otherwise, its causes are also shown. | |||
* Previous combinations of sonar-batch/sonar-runner log all stack trace. | |||
* <p/> | |||
* <br> | |||
* Message should be clear and complete. Keep in mind that context might not be added to the exception. | |||
* Names of processed resource and decorator are for example not automatically added when throwing {@link MessageException} | |||
* from {@link org.sonar.api.batch.Decorator}. |
@@ -33,7 +33,7 @@ import org.sonar.api.server.ServerSide; | |||
/** | |||
* Proxy over {@link java.lang.System}. It aims to improve testability of classes | |||
* that interact with low-level system methods, for example : | |||
* <p/> | |||
* <br> | |||
* <pre> | |||
* public class MyClass { | |||
* private final System2 system; | |||
@@ -56,9 +56,9 @@ import org.sonar.api.server.ServerSide; | |||
* assertThat(new MyClass(system).xxx()).isEqualTo(now); | |||
* } | |||
* </pre> | |||
* <p/> | |||
* <br> | |||
* Note that the name System2 was chosen to not conflict with {@link java.lang.System}. | |||
* <p/> | |||
* <br> | |||
* An instance is available in IoC container since 4.3. | |||
* | |||
* @since 4.2 |
@@ -29,13 +29,13 @@ public final class TimeUtils { | |||
/** | |||
* Label for a duration, expressed in numbers of ms, seconds or minutes. | |||
* <p/> | |||
* <br> | |||
* Examples: | |||
* <ul> | |||
* <li>10 -> "10ms"</li> | |||
* <li>100 -> "100ms"</li> | |||
* <li>10000 -> "10s"</li> | |||
* <li>100000 -> "1min 40s"</li> | |||
* <li>10 -> "10ms"</li> | |||
* <li>100 -> "100ms"</li> | |||
* <li>10000 -> "10s"</li> | |||
* <li>100000 -> "1min 40s"</li> | |||
* </ul> | |||
*/ | |||
public static String formatDuration(long durationInMs) { |
@@ -31,13 +31,13 @@ import static org.apache.commons.lang.StringUtils.trimToEmpty; | |||
/** | |||
* Version composed of 3 integer-sequences (major, minor and patch fields) and optionally a qualifier. | |||
* <p></p> | |||
* <p> | |||
* Examples: 1.0, 1.0.0, 1.2.3, 1.2-beta1, 1.2.1-beta-1 | |||
* <p></p> | |||
* <p> | |||
* <h3>IMPORTANT NOTE</h3> | |||
* Qualifier is ignored when comparing objects (methods {@link #equals(Object)}, {@link #hashCode()} | |||
* and {@link #compareTo(Version)}). | |||
* <p></p> | |||
* <p> | |||
* <pre> | |||
* assertThat(Version.parse("1.2")).isEqualTo(Version.parse("1.2-beta1")); | |||
* assertThat(Version.parse("1.2").compareTo(Version.parse("1.2-beta1"))).isZero(); |
@@ -22,7 +22,6 @@ package org.sonar.api.utils; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
import java.util.regex.Pattern; | |||
import org.apache.commons.lang.StringUtils; | |||
/** | |||
@@ -36,7 +35,6 @@ import org.apache.commons.lang.StringUtils; | |||
* <li>* matches zero or more characters</li> | |||
* <li>** matches zero or more 'directories'</li> | |||
* </ul> | |||
* </p> | |||
* <p> | |||
* Some examples of patterns: | |||
* <ul> | |||
@@ -50,12 +48,11 @@ import org.apache.commons.lang.StringUtils; | |||
* <li><code>org/**/*.java</code> - matches all <code>.java</code> files underneath the <code>org</code> directory, | |||
* e.g. <code>org/Foo.java</code> or <code>org/foo/Bar.java</code> or <code>org/foo/bar/Baz.java</code></li> | |||
* </ul> | |||
* </p> | |||
* <p> | |||
* Another implementation, which is also based on Java Regular Expressions, can be found in | |||
* <a href="https://github.com/JetBrains/intellij-community/blob/idea/107.743/platform/util/src/com/intellij/openapi/util/io/FileUtil.java#L847">FileUtil</a> | |||
* from IntelliJ OpenAPI. | |||
* </p> | |||
* | |||
* | |||
* @since 1.10 | |||
*/ | |||
@@ -189,12 +186,12 @@ public class WildcardPattern { | |||
* This is used to match Java-classes, i.e. <code>org.foo.Bar</code> against <code>org/**</code>. | |||
* <b>However usage of character other than "/" as a directory separator is misleading and should be avoided, | |||
* so method {@link #create(String)} is preferred over this one.</b> | |||
* </p> | |||
* | |||
* <p> | |||
* Also note that no matter whether forward or backward slashes were used in the <code>antPattern</code> | |||
* the returned pattern will use <code>directorySeparator</code>. | |||
* Thus to match Windows-style path "dir\file.ext" against pattern "dir/file.ext" normalization should be performed. | |||
* </p> | |||
* | |||
*/ | |||
public static WildcardPattern create(String pattern, String directorySeparator) { | |||
String key = pattern + directorySeparator; |
@@ -34,7 +34,7 @@ import java.io.IOException; | |||
/** | |||
* Implementation of {@link org.sonar.api.utils.TempFolder} to be used | |||
* only in JUnit tests. It wraps {@link org.junit.rules.TemporaryFolder}. | |||
* <p/> | |||
* <br> | |||
* Example: | |||
* <pre> | |||
* public class MyTest { |
@@ -27,7 +27,7 @@ import static org.sonar.api.utils.log.ConsoleFormatter.format; | |||
/** | |||
* Slow implementation based on {@link java.lang.System#out}. It is not production-ready and it must be used | |||
* only for the tests that do not have logback dependency. | |||
* <p/>Implementation of message patterns is naive. It does not support escaped '{' and '}' | |||
* <br>Implementation of message patterns is naive. It does not support escaped '{' and '}' | |||
* arguments. | |||
*/ | |||
class ConsoleLogger extends BaseLogger { |
@@ -24,12 +24,12 @@ import org.junit.rules.ExternalResource; | |||
/** | |||
* <b>For tests only</b> | |||
* <p/> | |||
* <br> | |||
* This JUnit rule allows to configure and access logs in tests. By default | |||
* trace level is enabled. | |||
* <p/> | |||
* <br> | |||
* Warning - not compatible with parallel execution of tests in the same JVM fork. | |||
* <p/> | |||
* <br> | |||
* Example: | |||
* <pre> | |||
* public class MyClass { |
@@ -23,7 +23,7 @@ import javax.annotation.Nullable; | |||
/** | |||
* SonarQube plugins are not coupled with external logging libraries like SLF4J or Logback. | |||
* <p></p> | |||
* <p> | |||
* Example: | |||
* <pre> | |||
* public class MyClass { | |||
@@ -35,13 +35,13 @@ import javax.annotation.Nullable; | |||
* } | |||
* } | |||
* </pre> | |||
* <p></p> | |||
* <p> | |||
* Message arguments are defined with <code>{}</code>, but not with {@link java.util.Formatter} syntax. | |||
* | |||
* <p></p> | |||
* <p> | |||
* INFO, WARN and ERROR levels are always enabled. They can't be disabled by users. | |||
* DEBUG and TRACE levels are enabled on demand with the property <code>sonar.log.level</code>. | |||
* <p></p> | |||
* <p> | |||
* See {@link org.sonar.api.utils.log.LogTester} for testing facilities. | |||
* @since 5.1 | |||
*/ | |||
@@ -51,7 +51,7 @@ public interface Logger { | |||
/** | |||
* Logs a TRACE message. | |||
* <p></p> | |||
* <p> | |||
* TRACE messages must | |||
* be valuable for diagnosing production problems. They must not be used for development debugging. | |||
* They can significantly slow down performances. The standard use-case is logging of | |||
@@ -62,7 +62,7 @@ public interface Logger { | |||
/** | |||
* Logs an TRACE parameterized message according to the specified format and argument. Example: | |||
* <code>trace("Value is {}", value)</code> | |||
* <p></p> | |||
* <p> | |||
* TRACE messages must | |||
* be valuable for diagnosing production problems. They must not be used for development debugging. | |||
* They can significantly slow down performances. The standard use-case is logging of | |||
@@ -73,7 +73,7 @@ public interface Logger { | |||
/** | |||
* Logs an TRACE parameterized message according to the specified format and arguments. Example: | |||
* <code>trace("Values are {} and {}", value1, value2)</code> | |||
* <p></p> | |||
* <p> | |||
* TRACE messages must | |||
* be valuable for diagnosing production problems. They must not be used for development debugging. | |||
* They can significantly slow down performances. The standard use-case is logging of | |||
@@ -84,12 +84,12 @@ public interface Logger { | |||
/** | |||
* Logs an TRACE parameterized message according to the specified format and arguments. Example: | |||
* <code>trace("Values are {} and {}", value1, value2)</code> | |||
* <p></p> | |||
* <p> | |||
* TRACE messages must | |||
* be valuable for diagnosing production problems. They must not be used for development debugging. | |||
* They can significantly slow down performances. The standard use-case is logging of | |||
* SQL and Elasticsearch requests. | |||
* <p></p> | |||
* <p> | |||
* This variant incurs the hidden cost of creating an Object[] before invoking the method. | |||
* The variants taking one and two arguments exist solely in order to avoid this hidden cost. See | |||
* {@link #trace(String, Object)} and {@link #trace(String, Object, Object)} | |||
@@ -107,7 +107,7 @@ public interface Logger { | |||
/** | |||
* Logs an DEBUG parameterized message according to the specified format and argument. Example: | |||
* <code>debug("Value is {}", value)</code> | |||
* <p></p> | |||
* <p> | |||
* Debug messages must | |||
* be valuable for diagnosing production problems. They must not be used for development debugging. | |||
*/ | |||
@@ -116,7 +116,7 @@ public interface Logger { | |||
/** | |||
* Logs an DEBUG parameterized message according to the specified format and arguments. Example: | |||
* <code>debug("Values are {} and {}", value1, value2)</code> | |||
* <p></p> | |||
* <p> | |||
* Debug messages must | |||
* be valuable for diagnosing production problems. They must not be used for development debugging. | |||
*/ | |||
@@ -125,10 +125,10 @@ public interface Logger { | |||
/** | |||
* Logs an DEBUG parameterized message according to the specified format and arguments. Example: | |||
* <code>debug("Values are {}, {} and {}", value1, value2, value3)</code> | |||
* <p></p> | |||
* <p> | |||
* Debug messages must | |||
* be valuable for diagnosing production problems. They must not be used for development debugging. | |||
* * <p></p> | |||
* * <p> | |||
* This variant incurs the hidden cost of creating an Object[] before invoking the method. | |||
* The variants taking one and two arguments exist solely in order to avoid this hidden cost. See | |||
* {@link #debug(String, Object)} and {@link #debug(String, Object, Object)} | |||
@@ -155,7 +155,7 @@ public interface Logger { | |||
/** | |||
* Logs an INFO parameterized message according to the specified format and arguments. Example: | |||
* <code>info("Values are {}, {} and {}", value1, value2, value3)</code> | |||
* <p></p> | |||
* <p> | |||
* This variant incurs the hidden cost of creating an Object[] before invoking the method. | |||
* The variants taking one and two arguments exist solely in order to avoid this hidden cost. See | |||
* {@link #info(String, Object)} and {@link #info(String, Object, Object)} | |||
@@ -187,7 +187,7 @@ public interface Logger { | |||
/** | |||
* Logs a WARN parameterized message according to the specified format and arguments. Example: | |||
* <code>warn("Values are {}, {} and {}", value1, value2, value3)</code> | |||
* <p></p> | |||
* <p> | |||
* This variant incurs the hidden cost of creating an Object[] before invoking the method. | |||
* The variants taking one and two arguments exist solely in order to avoid this hidden cost. See | |||
* {@link #warn(String, Object)} and {@link #warn(String, Object, Object)} | |||
@@ -214,7 +214,7 @@ public interface Logger { | |||
/** | |||
* Logs a ERROR parameterized message according to the specified format and arguments. Example: | |||
* <code>error("Values are {}, {} and {}", value1, value2, value3)</code> | |||
* <p></p> | |||
* <p> | |||
* This variant incurs the hidden cost of creating an Object[] before invoking the method. | |||
* The variants taking one and two arguments exist solely in order to avoid this hidden cost. See | |||
* {@link #error(String, Object)} and {@link #error(String, Object, Object)} | |||
@@ -230,10 +230,10 @@ public interface Logger { | |||
* Attempt to change logger level. Return true if it succeeded, false if | |||
* the underlying logging facility does not allow to change level at | |||
* runtime. | |||
* <p></p> | |||
* <p> | |||
* This method must not be used to enable DEBUG or TRACE logs in tests. Use | |||
* {@link org.sonar.api.utils.log.LogTester#setLevel(LoggerLevel)} instead. | |||
* <p></p> | |||
* <p> | |||
* The standard use-case is to customize logging of embedded 3rd-party | |||
* libraries. | |||
*/ |
@@ -47,15 +47,15 @@ import java.util.Map; | |||
* .endObject() | |||
* .close(); | |||
* </pre> | |||
* </p> | |||
* | |||
* <p> | |||
* By default, null objects are not serialized. To enable {@code null} serialization, | |||
* use {@link #setSerializeNulls(boolean)}. | |||
* </p> | |||
* | |||
* <p> | |||
* By default, emptry strings are serialized. To disable empty string serialization, | |||
* use {@link #setSerializeEmptys(boolean)}. | |||
* </p> | |||
* | |||
* | |||
* @since 4.2 | |||
*/ |
@@ -30,7 +30,7 @@ import java.io.InputStream; | |||
/** | |||
* It's useful in development environment to see browser rendering in real time while editing the template. To do that, just | |||
* return an absolute path in the method getTemplatePath() :<br/> | |||
* return an absolute path in the method getTemplatePath() :<br> | |||
* <pre> | |||
* <code> | |||
* protected String getTemplatePath() { | |||
@@ -39,8 +39,8 @@ import java.io.InputStream; | |||
* </code> | |||
* </pre> | |||
* Build and deploy the plugin in /extensions/plugins. The file /tmp/sample_dashboard_widget.erb will be reloaded on each request. | |||
* <p/> | |||
* <br/> | |||
* <br> | |||
* <br> | |||
* In production environment, you have to return the classloader path, for example "/org/sonar/myplugin/sample_dashboard_widget.erb". | |||
* | |||
* @since 1.11 |
@@ -61,7 +61,7 @@ public final class Criterion { | |||
/** | |||
* Creates a new {@link Criterion} with a numerical value. | |||
* | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE}</p> | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE} | |||
* | |||
* @throws IllegalArgumentException if {@code operator} is not valid | |||
*/ | |||
@@ -72,7 +72,7 @@ public final class Criterion { | |||
/** | |||
* Creates a new {@link Criterion} with a text value. | |||
* | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE}</p> | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE} | |||
* | |||
* @throws IllegalArgumentException if {@code operator} is not valid | |||
*/ | |||
@@ -83,7 +83,7 @@ public final class Criterion { | |||
/** | |||
* Creates a new {@link Criterion} on a metric, with a numerical value. | |||
* | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE}</p> | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE} | |||
* | |||
* @throws IllegalArgumentException if {@code operator} is not valid | |||
*/ | |||
@@ -94,7 +94,7 @@ public final class Criterion { | |||
/** | |||
* Creates a new {@link Criterion} on a metric, with a text value. | |||
* | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE}</p> | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE} | |||
* | |||
* @throws IllegalArgumentException if {@code operator} is not valid | |||
*/ | |||
@@ -130,7 +130,7 @@ public final class Criterion { | |||
/** | |||
* Get the the criterion's operator. | |||
* | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE}</p> | |||
* <p>Valid values for the {@code operator} are {@code #EQ}, {@code #GT}, {@code #GTE}, {@code #LT} and {@code #LTE} | |||
* | |||
* @return the operator | |||
*/ |
@@ -29,7 +29,7 @@ import java.util.Map; | |||
/** | |||
* Definition of a dashboard. | |||
* <p/> | |||
* <br> | |||
* Its name and description can be retrieved using the i18n mechanism, using the keys "dashboard.<id>.name" and | |||
* "dashboard.<id>.description". | |||
* | |||
@@ -56,7 +56,7 @@ public final class Dashboard { | |||
/** | |||
* Add a widget with the given parameters, and return the newly created {@link Widget} object if one wants to add parameters to it. | |||
* | |||
* <p>The widget ids are listed by the web service /api/widgets</p> | |||
* <p>The widget ids are listed by the web service /api/widgets | |||
* | |||
* @param widgetId id of an existing widget | |||
* @param columnId column starts with 1. The widget is ignored if the column id does not match the layout. | |||
@@ -90,7 +90,7 @@ public final class Dashboard { | |||
/** | |||
* Sets the description of the dashboard. | |||
* <p/> | |||
* <br> | |||
* Note: you should use the i18n mechanism for the description. | |||
* | |||
* @param description the description to set | |||
@@ -119,7 +119,7 @@ public final class Dashboard { | |||
/** | |||
* A dashboard is global when it doesn't display information from a projet but rather more general information. | |||
* <p>Before version 3.1 no dashboard was global.</p> | |||
* <p>Before version 3.1 no dashboard was global. | |||
* | |||
* @since 3.1 | |||
*/ | |||
@@ -129,7 +129,7 @@ public final class Dashboard { | |||
/** | |||
* A dashboard is global when it doesn't display information from a projet but rather more general information. | |||
* <p>Before version 3.1 no dashboard was global.</p> | |||
* <p>Before version 3.1 no dashboard was global. | |||
* | |||
* @since 3.1 | |||
*/ | |||
@@ -141,7 +141,7 @@ public final class Dashboard { | |||
/** | |||
* A dashboard can be activated for all anonymous users or users who haven't configured their own dashboards. | |||
* <p>Before version 3.1 every dashboard created through this extension point was automatically activated. | |||
* This is still the default behavior.</p> | |||
* This is still the default behavior. | |||
* | |||
* @since 3.1 | |||
*/ |
@@ -27,7 +27,7 @@ import java.util.List; | |||
/** | |||
* Definition of a filter. | |||
* | |||
* <p>Its name can be retrieved using the i18n mechanism, using the keys "filter.<id>.name".</p> | |||
* <p>Its name can be retrieved using the i18n mechanism, using the keys "filter.<id>.name". | |||
* | |||
* @since 3.1 | |||
*/ | |||
@@ -112,7 +112,7 @@ public final class Filter { | |||
/** | |||
* Get the type of display used by this {@link Filter}. | |||
* | |||
* <p>Can be either {@code #LIST} or {@code #TREEMAP}</p> | |||
* <p>Can be either {@code #LIST} or {@code #TREEMAP} | |||
* | |||
* @return the display type | |||
*/ | |||
@@ -123,7 +123,7 @@ public final class Filter { | |||
/** | |||
* Set the type of display used by this {@link Filter}. | |||
* | |||
* <p>Can be either {@code #LIST} or {@code #TREEMAP}</p> | |||
* <p>Can be either {@code #LIST} or {@code #TREEMAP} | |||
* | |||
* @return this filter | |||
* @throws IllegalArgumentException if {@code displayAs} is not {@code #LIST} or {@code #TREEMAP} | |||
@@ -137,7 +137,7 @@ public final class Filter { | |||
/** | |||
* Get the size of a page displayed this {@link Filter}. | |||
* | |||
* <p>The page size is between <code>20</code> and <code>200</code> (included)</p> | |||
* <p>The page size is between <code>20</code> and <code>200</code> (included) | |||
* | |||
* @return the display type | |||
*/ | |||
@@ -148,7 +148,7 @@ public final class Filter { | |||
/** | |||
* Set the size of a page displayed this {@link Filter}. | |||
* | |||
* <p>The page size should be between <code>20</code> and <code>200</code> (included)</p> | |||
* <p>The page size should be between <code>20</code> and <code>200</code> (included) | |||
* | |||
* @return the display type | |||
* @throws IllegalArgumentException if {@code pageSize} is not lower than {@code 20} or greater than {@code 200} |
@@ -52,10 +52,10 @@ public final class FilterColumn { | |||
/** | |||
* Creates a new {@link FilterColumn}. | |||
* | |||
* <p>Valid values for the {@code sortDirection} are {@code #ASC}, {@code #DESC}</p> | |||
* <p>Valid values for the {@code sortDirection} are {@code #ASC}, {@code #DESC} | |||
* | |||
* <p>When the @{see Filter} is persisted, a validation is made on the {@code family} and the {@code key}. | |||
* They should point to a valid column description.</p> | |||
* They should point to a valid column description. | |||
* | |||
* @throws IllegalArgumentException if {@code sortDirection} is not valid | |||
*/ |
@@ -32,7 +32,7 @@ import org.sonar.api.server.ServerSide; | |||
* <li><code>sidebar</code> : area in the sidebar between the menu and the sonar logo</li> | |||
* </ul> | |||
* | |||
* <p>Example of template: </p> | |||
* <p>Example of template: | |||
<pre> | |||
<% content_for :script do %> | |||
<script>alert('page loaded')</script> |
@@ -29,11 +29,11 @@ import java.lang.annotation.Target; | |||
* Annotation used to specify which measures should be available on a snapshot to be able to display a view (page, tab, ...). | |||
* It is possible to give a list of mandatory measures (= if one is not available, the view is not displayed) and/or a list of | |||
* needed measures (only one of them needs to be available). The measures are specified using the metric keys. | |||
* </p> | |||
* | |||
* <p> | |||
* Example: the DesignPage absolutely requires the "dsm" measure to be fed in order to be displayed, whatever the language. | |||
* The class will define a <code>@RequiredMeasures(allOf={"dsm"})</code> annotation. | |||
* </p> | |||
* | |||
* | |||
* @since 3.0 | |||
* @deprecated in 4.5. Not supported anymore in source viewer as Ruby on Rails is being dropped. |
@@ -21,7 +21,7 @@ package org.sonar.api.web; | |||
/** | |||
* Widget in project dashboard page. It's recommended to also extend AbstractRubyTemplate : | |||
* <p/> | |||
* <br> | |||
* <code> | |||
* public class MyWidget extends AbstractRubyTemplate implements RubyRailsWidget { | |||
* protected String getTemplatePath() { |
@@ -29,7 +29,7 @@ import java.lang.annotation.Target; | |||
* global dashboards <code>(value = "GLOBAL")</code> or both <code>(value = {"PROJECT", "GLOBAL"})</code>. | |||
* | |||
* <p>Before version 3.1 all widget had a scope <code>"PROJECT"</code>. If a widget is not annotated with @WidgetScope, | |||
* then is is assumed project scoped.</p> | |||
* then is is assumed project scoped. | |||
* | |||
* @since 3.1 | |||
*/ |