Explorar el Código

Fix javadoc errors

tags/5.5-RC2
Julien HENRY hace 8 años
padre
commit
e84422a61a
Se han modificado 83 ficheros con 296 adiciones y 296 borrados
  1. 4
    2
      sonar-plugin-api/src/main/java/org/sonar/api/ExtensionProvider.java
  2. 4
    4
      sonar-plugin-api/src/main/java/org/sonar/api/Plugin.java
  3. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/Properties.java
  4. 8
    8
      sonar-plugin-api/src/main/java/org/sonar/api/Property.java
  5. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/SonarPlugin.java
  6. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/SonarQubeVersion.java
  7. 1
    3
      sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSumChildrenDecorator.java
  8. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/batch/DecoratorBarriers.java
  9. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/batch/Initializer.java
  10. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/batch/PostJob.java
  11. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/batch/Sensor.java
  12. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/batch/SensorContext.java
  13. 4
    4
      sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FilePredicates.java
  14. 10
    10
      sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FileSystem.java
  15. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputDir.java
  16. 14
    9
      sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputFile.java
  17. 14
    16
      sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java
  18. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/PostJob.java
  19. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/ActiveRules.java
  20. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Checks.java
  21. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/Sensor.java
  22. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/highlighting/TypeOfText.java
  23. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewIssueLocation.java
  24. 4
    4
      sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/MeasureComputer.java
  25. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/RangeDistributionBuilder.java
  26. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/CeTask.java
  27. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/PostProjectAnalysisTask.java
  28. 4
    4
      sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/QualityGate.java
  29. 16
    16
      sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java
  30. 8
    7
      sonar-plugin-api/src/main/java/org/sonar/api/config/Settings.java
  31. 8
    8
      sonar-plugin-api/src/main/java/org/sonar/api/i18n/I18n.java
  32. 5
    6
      sonar-plugin-api/src/main/java/org/sonar/api/issue/Issuable.java
  33. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/issue/Issue.java
  34. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/issue/NoSonarFilter.java
  35. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/issue/batch/IssueFilter.java
  36. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/issue/batch/IssueFilterChain.java
  37. 11
    9
      sonar-plugin-api/src/main/java/org/sonar/api/measures/CoreMetrics.java
  38. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/measures/CountDistributionBuilder.java
  39. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/measures/FileLinesContext.java
  40. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/measures/FileLinesContextFactory.java
  41. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java
  42. 8
    8
      sonar-plugin-api/src/main/java/org/sonar/api/measures/Metric.java
  43. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/measures/RangeDistributionBuilder.java
  44. 4
    4
      sonar-plugin-api/src/main/java/org/sonar/api/notifications/Notification.java
  45. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationChannel.java
  46. 4
    4
      sonar-plugin-api/src/main/java/org/sonar/api/resources/InputFile.java
  47. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/resources/Language.java
  48. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/resources/Resource.java
  49. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceType.java
  50. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/resources/Scopes.java
  51. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleFinder.java
  52. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileExclusions.java
  53. 5
    8
      sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/ModuleFileSystem.java
  54. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/security/ResourcePermissions.java
  55. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/Display.java
  56. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/server/debt/DebtRemediationFunction.java
  57. 9
    9
      sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java
  58. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionI18nLoader.java
  59. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/server/ws/LocalConnector.java
  60. 5
    5
      sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java
  61. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/user/RubyUserService.java
  62. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/utils/Duration.java
  63. 7
    6
      sonar-plugin-api/src/main/java/org/sonar/api/utils/Durations.java
  64. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/utils/KeyValueFormat.java
  65. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/utils/MessageException.java
  66. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java
  67. 5
    5
      sonar-plugin-api/src/main/java/org/sonar/api/utils/TimeUtils.java
  68. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/utils/Version.java
  69. 3
    6
      sonar-plugin-api/src/main/java/org/sonar/api/utils/WildcardPattern.java
  70. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/utils/internal/JUnitTempFolder.java
  71. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/utils/log/ConsoleLogger.java
  72. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/utils/log/LogTester.java
  73. 18
    18
      sonar-plugin-api/src/main/java/org/sonar/api/utils/log/Logger.java
  74. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/utils/text/JsonWriter.java
  75. 3
    3
      sonar-plugin-api/src/main/java/org/sonar/api/web/AbstractRubyTemplate.java
  76. 5
    5
      sonar-plugin-api/src/main/java/org/sonar/api/web/Criterion.java
  77. 6
    6
      sonar-plugin-api/src/main/java/org/sonar/api/web/Dashboard.java
  78. 5
    5
      sonar-plugin-api/src/main/java/org/sonar/api/web/Filter.java
  79. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/web/FilterColumn.java
  80. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/web/PageDecoration.java
  81. 2
    2
      sonar-plugin-api/src/main/java/org/sonar/api/web/RequiredMeasures.java
  82. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/web/RubyRailsWidget.java
  83. 1
    1
      sonar-plugin-api/src/main/java/org/sonar/api/web/WidgetScope.java

+ 4
- 2
sonar-plugin-api/src/main/java/org/sonar/api/ExtensionProvider.java Ver fichero

@@ -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
*/

+ 4
- 4
sonar-plugin-api/src/main/java/org/sonar/api/Plugin.java Ver fichero

@@ -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>
* &lt;project&gt;
* ...
@@ -69,7 +69,7 @@ import static java.util.Objects.requireNonNull;
* &lt;/project&gt;
* </pre>
*
* <p>Example of test</p>
* <p>Example of test
* <pre>
* MyPlugin underTest = new MyPlugin();
*

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/Properties.java Ver fichero

@@ -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

+ 8
- 8
sonar-plugin-api/src/main/java/org/sonar/api/Property.java Ver fichero

@@ -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 {};

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/SonarPlugin.java Ver fichero

@@ -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
*/

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/SonarQubeVersion.java Ver fichero

@@ -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>
* &lt;packaging&gt;sonar-plugin&lt;/packaging&gt;
*

+ 1
- 3
sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractSumChildrenDecorator.java Ver fichero

@@ -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
*/

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/batch/DecoratorBarriers.java Ver fichero

@@ -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

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/batch/Initializer.java Ver fichero

@@ -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
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/batch/PostJob.java Ver fichero

@@ -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.
*

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/batch/Sensor.java Ver fichero

@@ -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
*/

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/batch/SensorContext.java Ver fichero

@@ -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);


+ 4
- 4
sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FilePredicates.java Ver fichero

@@ -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>&#42;</code> and <code>&#42;&#42;</code>, but not <code>?</code>.
* <p/>
* <br>
* Examples:
* <ul>
* <li><code>&#42;&#42;/&#42;Foo.java</code> matches Foo.java, src/Foo.java and src/java/SuperFoo.java</li>

+ 10
- 10
sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FileSystem.java Ver fichero

@@ -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()

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputDir.java Ver fichero

@@ -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.

+ 14
- 9
sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputFile.java Ver fichero

@@ -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);

+ 14
- 16
sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java Ver fichero

@@ -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);

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/PostJob.java Ver fichero

@@ -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.
*

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/ActiveRules.java Ver fichero

@@ -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.
*

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Checks.java Ver fichero

@@ -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

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/Sensor.java Ver fichero

@@ -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
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/highlighting/TypeOfText.java Ver fichero

@@ -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
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewIssueLocation.java Ver fichero

@@ -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);

+ 4
- 4
sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/MeasureComputer.java Ver fichero

@@ -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 {

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/RangeDistributionBuilder.java Ver fichero

@@ -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

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/CeTask.java Ver fichero

@@ -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();


+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/PostProjectAnalysisTask.java Ver fichero

@@ -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();
}

+ 4
- 4
sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/QualityGate.java Ver fichero

@@ -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}
*

+ 16
- 16
sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java Ver fichero

@@ -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.
*/

+ 8
- 7
sonar-plugin-api/src/main/java/org/sonar/api/config/Settings.java Ver fichero

@@ -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 " -&gt; ["one", "two", "three"]</li>
* <li>" one, two, three " -&gt; ["one", "two", "three"]</li>
* <li>"one, , three" -&gt; ["one", "", "three"]</li>
* </ul>
*/
public String[] getStringArray(String key) {

+ 8
- 8
sonar-plugin-api/src/main/java/org/sonar/api/i18n/I18n.java Ver fichero

@@ -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) -&gt; less than a minute</li>
* <li>age(Locale.ENGLISH, 60000) -&gt; about a minute</li>
* <li>age(Locale.ENGLISH, 120000) -&gt; 2 minutes</li>
* <li>age(Locale.ENGLISH, 3600000) -&gt; about an hour</li>
* <li>age(Locale.ENGLISH, 7200000) -&gt; 2 hours</li>
* <li>age(Locale.ENGLISH, 86400000) -&gt; a day</li>
* <li>age(Locale.ENGLISH, 172800000) -&gt; 2 days</li>
* </ul>
*
* @since 4.2

+ 5
- 6
sonar-plugin-api/src/main/java/org/sonar/api/issue/Issuable.java Ver fichero

@@ -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)}.
*

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/issue/Issue.java Ver fichero

@@ -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}).
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/issue/NoSonarFilter.java Ver fichero

@@ -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.

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/issue/batch/IssueFilter.java Ver fichero

@@ -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.
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/issue/batch/IssueFilterChain.java Ver fichero

@@ -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 {

+ 11
- 9
sonar-plugin-api/src/main/java/org/sonar/api/measures/CoreMetrics.java Ver fichero

@@ -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

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/measures/CountDistributionBuilder.java Ver fichero

@@ -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
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/measures/FileLinesContext.java Ver fichero

@@ -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

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/measures/FileLinesContextFactory.java Ver fichero

@@ -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
*/

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java Ver fichero

@@ -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

+ 8
- 8
sonar-plugin-api/src/main/java/org/sonar/api/measures/Metric.java Ver fichero

@@ -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

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/measures/RangeDistributionBuilder.java Ver fichero

@@ -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
*

+ 4
- 4
sonar-plugin-api/src/main/java/org/sonar/api/notifications/Notification.java Ver fichero

@@ -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
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationChannel.java Ver fichero

@@ -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>

+ 4
- 4
sonar-plugin-api/src/main/java/org/sonar/api/resources/InputFile.java Ver fichero

@@ -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

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/resources/Language.java Ver fichero

@@ -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

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/resources/Resource.java Ver fichero

@@ -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();

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceType.java Ver fichero

@@ -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>

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/resources/Scopes.java Ver fichero

@@ -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

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleFinder.java Ver fichero

@@ -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);

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileExclusions.java Ver fichero

@@ -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
*/

+ 5
- 8
sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/ModuleFileSystem.java Ver fichero

@@ -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();


+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/security/ResourcePermissions.java Ver fichero

@@ -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
*/

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/Display.java Ver fichero

@@ -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() {

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/server/debt/DebtRemediationFunction.java Ver fichero

@@ -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),


+ 9
- 9
sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java Ver fichero

@@ -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".

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionI18nLoader.java Ver fichero

@@ -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

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/LocalConnector.java Ver fichero

@@ -41,7 +41,7 @@ import javax.annotation.CheckForNull;
* }
* }
* </pre>
* </p>
*
* @since 5.5
*/
@Beta

+ 5
- 5
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java Ver fichero

@@ -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://&lt;server&gt;/&lt>controller path&gt;/&lt;action path&gt;?&lt;parameters&gt;</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"));

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/user/RubyUserService.java Ver fichero

@@ -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>

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/utils/Duration.java Ver fichero

@@ -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"
*/

+ 7
- 6
sonar-plugin-api/src/main/java/org/sonar/api/utils/Durations.java Ver fichero

@@ -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") -&gt; 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")) -&gt; "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) -&gt; 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) -&gt; 10j 2h (if sonar.technicalDebt.hoursInDay property is set to 8)
*
*/
public String format(Locale locale, Duration duration) {

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/utils/KeyValueFormat.java Ver fichero

@@ -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&lt;String,String&gt; mapOfStrings = KeyValueFormat.parse("hello=world;foo=bar");
@@ -48,7 +48,7 @@ import org.sonar.api.rules.RulePriority;
* Map&lt;String,MyClass&gt; mapOfStringMyClass = KeyValueFormat.parse("foo=xxx;bar=yyy",
* KeyValueFormat.newStringConverter(), new MyClassConverter());
* </pre>
* <p/>
* <br>
* <b>Formatting examples</b>
* <pre>
* String output = KeyValueFormat.format(map);

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/utils/MessageException.java Ver fichero

@@ -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}.

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java Ver fichero

@@ -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

+ 5
- 5
sonar-plugin-api/src/main/java/org/sonar/api/utils/TimeUtils.java Ver fichero

@@ -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 -&gt; "10ms"</li>
* <li>100 -&gt; "100ms"</li>
* <li>10000 -&gt; "10s"</li>
* <li>100000 -&gt; "1min 40s"</li>
* </ul>
*/
public static String formatDuration(long durationInMs) {

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/utils/Version.java Ver fichero

@@ -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();

+ 3
- 6
sonar-plugin-api/src/main/java/org/sonar/api/utils/WildcardPattern.java Ver fichero

@@ -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/&#42;&#42;/*.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;

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/utils/internal/JUnitTempFolder.java Ver fichero

@@ -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 {

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/utils/log/ConsoleLogger.java Ver fichero

@@ -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 {

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/utils/log/LogTester.java Ver fichero

@@ -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 {

+ 18
- 18
sonar-plugin-api/src/main/java/org/sonar/api/utils/log/Logger.java Ver fichero

@@ -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.
*/

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/utils/text/JsonWriter.java Ver fichero

@@ -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
*/

+ 3
- 3
sonar-plugin-api/src/main/java/org/sonar/api/web/AbstractRubyTemplate.java Ver fichero

@@ -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

+ 5
- 5
sonar-plugin-api/src/main/java/org/sonar/api/web/Criterion.java Ver fichero

@@ -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
*/

+ 6
- 6
sonar-plugin-api/src/main/java/org/sonar/api/web/Dashboard.java Ver fichero

@@ -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.&lt;id&gt;.name" and
* "dashboard.&lt;id&gt;.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
*/

+ 5
- 5
sonar-plugin-api/src/main/java/org/sonar/api/web/Filter.java Ver fichero

@@ -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.&lt;id&gt;.name".</p>
* <p>Its name can be retrieved using the i18n mechanism, using the keys "filter.&lt;id&gt;.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}

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/web/FilterColumn.java Ver fichero

@@ -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
*/

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/web/PageDecoration.java Ver fichero

@@ -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>

+ 2
- 2
sonar-plugin-api/src/main/java/org/sonar/api/web/RequiredMeasures.java Ver fichero

@@ -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.

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/web/RubyRailsWidget.java Ver fichero

@@ -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() {

+ 1
- 1
sonar-plugin-api/src/main/java/org/sonar/api/web/WidgetScope.java Ver fichero

@@ -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
*/

Cargando…
Cancelar
Guardar