*/ | */ | ||||
package org.sonar.core.component; | package org.sonar.core.component; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.resources.Qualifiers; | import org.sonar.api.resources.Qualifiers; | ||||
import org.sonar.api.resources.ResourceType; | import org.sonar.api.resources.ResourceType; |
import org.apache.commons.io.FileUtils; | import org.apache.commons.io.FileUtils; | ||||
import org.apache.commons.io.IOUtils; | import org.apache.commons.io.IOUtils; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
/** | /** | ||||
* Configure Logback | * Configure Logback | ||||
* | * | ||||
* @since 2.12 | * @since 2.12 | ||||
*/ | */ | ||||
@ScannerSide | |||||
public class Logback { | public class Logback { | ||||
private Logback() { | private Logback() { |
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.apache.commons.io.IOUtils; | import org.apache.commons.io.IOUtils; | ||||
import org.picocontainer.Startable; | import org.picocontainer.Startable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.i18n.I18n; | import org.sonar.api.i18n.I18n; | ||||
import org.sonar.api.utils.SonarException; | import org.sonar.api.utils.SonarException; | ||||
import org.sonar.api.utils.System2; | import org.sonar.api.utils.System2; | ||||
import static java.nio.charset.StandardCharsets.UTF_8; | import static java.nio.charset.StandardCharsets.UTF_8; | ||||
@ScannerSide | |||||
public class DefaultI18n implements I18n, Startable { | public class DefaultI18n implements I18n, Startable { | ||||
private static final Logger LOG = Loggers.get(DefaultI18n.class); | private static final Logger LOG = Loggers.get(DefaultI18n.class); |
import java.util.Locale; | import java.util.Locale; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | |||||
import org.sonar.api.i18n.RuleI18n; | import org.sonar.api.i18n.RuleI18n; | ||||
import org.sonar.api.rules.Rule; | import org.sonar.api.rules.Rule; | ||||
import org.sonar.api.ce.ComputeEngineSide; | |||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
/** | /** | ||||
* @deprecated in 4.1. Rules are not localized anymore. See http://jira.sonarsource.com/browse/SONAR-4885 | * @deprecated in 4.1. Rules are not localized anymore. See http://jira.sonarsource.com/browse/SONAR-4885 | ||||
*/ | */ | ||||
@Deprecated | @Deprecated | ||||
@ScannerSide | |||||
@ServerSide | @ServerSide | ||||
@ComputeEngineSide | @ComputeEngineSide | ||||
public class RuleI18nManager implements RuleI18n { | public class RuleI18nManager implements RuleI18n { |
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.stream.Stream; | import java.util.stream.Stream; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.issue.Issue; | import org.sonar.api.issue.Issue; | ||||
import static org.sonar.core.util.stream.MoreCollectors.toList; | import static org.sonar.core.util.stream.MoreCollectors.toList; | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
@ScannerSide | @ScannerSide | ||||
public class Tracker<RAW extends Trackable, BASE extends Trackable> extends AbstractTracker<RAW, BASE> { | public class Tracker<RAW extends Trackable, BASE extends Trackable> extends AbstractTracker<RAW, BASE> { | ||||
import java.util.Set; | import java.util.Set; | ||||
import java.util.stream.Stream; | import java.util.stream.Stream; | ||||
import javax.annotation.concurrent.Immutable; | import javax.annotation.concurrent.Immutable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.measures.Metric; | import org.sonar.api.measures.Metric; | ||||
import org.sonar.api.measures.Metrics; | import org.sonar.api.measures.Metrics; |
import org.picocontainer.PicoContainer; | import org.picocontainer.PicoContainer; | ||||
import org.picocontainer.behaviors.OptInCaching; | import org.picocontainer.behaviors.OptInCaching; | ||||
import org.picocontainer.monitors.NullComponentMonitor; | import org.picocontainer.monitors.NullComponentMonitor; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.config.PropertyDefinitions; | import org.sonar.api.config.PropertyDefinitions; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; |
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.Map; | import java.util.Map; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import org.sonar.classloader.ClassloaderBuilder; | import org.sonar.classloader.ClassloaderBuilder; |
import java.util.Collection; | import java.util.Collection; | ||||
import org.sonar.api.Plugin; | import org.sonar.api.Plugin; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
/** | /** | ||||
* Add an extension as : | * Add an extension as : | ||||
* <ul> | * <ul> | ||||
* <li>a Class that is annotated with {@link org.sonar.api.batch.ScannerSide}, {@link org.sonar.api.server.ServerSide} | |||||
* <li>a Class that is annotated with {@link org.sonar.api.scanner.ScannerSide}, {@link org.sonar.api.server.ServerSide} | |||||
* or {@link org.sonar.api.ce.ComputeEngineSide}. The extension will be instantiated once. Its dependencies are | * or {@link org.sonar.api.ce.ComputeEngineSide}. The extension will be instantiated once. Its dependencies are | ||||
* injected through constructor parameters.</li> | * injected through constructor parameters.</li> | ||||
* <li>an instance that is annotated with {@link org.sonar.api.batch.ScannerSide}, {@link org.sonar.api.server.ServerSide} | |||||
* <li>an instance that is annotated with {@link org.sonar.api.scanner.ScannerSide}, {@link org.sonar.api.server.ServerSide} | |||||
* or {@link org.sonar.api.ce.ComputeEngineSide}.</li> | * or {@link org.sonar.api.ce.ComputeEngineSide}.</li> | ||||
* </ul> | * </ul> | ||||
* Only a single component can be registered for a class. It's not allowed for example to register: | * Only a single component can be registered for a class. It's not allowed for example to register: |
package org.sonar.api; | package org.sonar.api; | ||||
import javax.annotation.concurrent.Immutable; | import javax.annotation.concurrent.Immutable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.batch.sensor.Sensor; | import org.sonar.api.batch.sensor.Sensor; | ||||
import org.sonar.api.batch.sensor.SensorContext; | import org.sonar.api.batch.sensor.SensorContext; | ||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; |
import javax.annotation.concurrent.Immutable; | import javax.annotation.concurrent.Immutable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.batch.sensor.Sensor; | import org.sonar.api.batch.sensor.Sensor; | ||||
import org.sonar.api.batch.sensor.SensorContext; | import org.sonar.api.batch.sensor.SensorContext; | ||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; |
package org.sonar.api; | package org.sonar.api; | ||||
/** | /** | ||||
* An interface which is implemented by classes annotated with {@link org.sonar.api.batch.ScannerSide ScannerSide}, | |||||
* An interface which is implemented by classes annotated with {@link org.sonar.api.scanner.ScannerSide ScannerSide}, | |||||
* {@link org.sonar.api.server.ServerSide ServerSide} and/or {@link org.sonar.api.ce.ComputeEngineSide ComputeEngineSide} | * {@link org.sonar.api.server.ServerSide ServerSide} and/or {@link org.sonar.api.ce.ComputeEngineSide ComputeEngineSide} | ||||
* (referred to below as "component") that can be started and stopped. | * (referred to below as "component") that can be started and stopped. | ||||
* <p> | * <p> |
package org.sonar.api.batch.bootstrap; | package org.sonar.api.batch.bootstrap; | ||||
import org.sonar.api.ExtensionPoint; | import org.sonar.api.ExtensionPoint; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
/** | /** | ||||
* This extension point allows to change project structure at runtime. It is executed once during task startup. | * This extension point allows to change project structure at runtime. It is executed once during task startup. | ||||
* @since 2.9 | * @since 2.9 | ||||
*/ | */ | ||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
@ExtensionPoint | @ExtensionPoint | ||||
@Deprecated | @Deprecated | ||||
public abstract class ProjectBuilder { | public abstract class ProjectBuilder { |
*/ | */ | ||||
package org.sonar.api.batch.bootstrap; | package org.sonar.api.batch.bootstrap; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; |
import java.nio.charset.Charset; | import java.nio.charset.Charset; | ||||
import java.util.SortedSet; | import java.util.SortedSet; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
/** | /** | ||||
* The {@link FileSystem} manages all the source files to be analyzed. | * The {@link FileSystem} manages all the source files to be analyzed. |
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import javax.annotation.concurrent.ThreadSafe; | import javax.annotation.concurrent.ThreadSafe; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
/** | /** | ||||
* @since 4.5 | * @since 4.5 |
*/ | */ | ||||
package org.sonar.api.batch.rule; | package org.sonar.api.batch.rule; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.rule.RuleKey; | import org.sonar.api.rule.RuleKey; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import java.util.Collection; | import java.util.Collection; | ||||
/** | /** | ||||
* The rules that are activated on the current module. Quality profiles are | |||||
* The rules that are activated on the current project. Quality profiles are | |||||
* merged, so rules can relate to different repositories and languages. | * merged, so rules can relate to different repositories and languages. | ||||
* <br> | * <br> | ||||
* Use {@link org.sonar.api.batch.rule.internal.ActiveRulesBuilder} to instantiate | * Use {@link org.sonar.api.batch.rule.internal.ActiveRulesBuilder} to instantiate | ||||
/** | /** | ||||
* Find a {@link ActiveRule} by the associated rule key. <code>null</code> | * Find a {@link ActiveRule} by the associated rule key. <code>null</code> | ||||
* is returned if the rule does not exist or if the rule is not activated | * is returned if the rule does not exist or if the rule is not activated | ||||
* on any Quality profile associated with the module. | |||||
* on any Quality profile associated with the project. | |||||
*/ | */ | ||||
@CheckForNull | @CheckForNull | ||||
ActiveRule find(RuleKey ruleKey); | ActiveRule find(RuleKey ruleKey); | ||||
/** | /** | ||||
* Find a {@link ActiveRule} by the associated internal key. <code>null</code> | * Find a {@link ActiveRule} by the associated internal key. <code>null</code> | ||||
* is returned if the rule does not exist or if the rule is not activated | * is returned if the rule does not exist or if the rule is not activated | ||||
* on any Quality profile associated with the module. | |||||
* on any Quality profile associated with the project. | |||||
*/ | */ | ||||
@CheckForNull | @CheckForNull | ||||
ActiveRule findByInternalKey(String repository, String internalKey); | ActiveRule findByInternalKey(String repository, String internalKey); |
*/ | */ | ||||
package org.sonar.api.batch.rule; | package org.sonar.api.batch.rule; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.rule.RuleKey; | import org.sonar.api.rule.RuleKey; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; |
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.sonar.api.CoreProperties; | import org.sonar.api.CoreProperties; | ||||
import org.sonar.api.ExtensionPoint; | import org.sonar.api.ExtensionPoint; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
/** | /** | ||||
* @since 5.0 | * @since 5.0 | ||||
*/ | */ | ||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
@ExtensionPoint | @ExtensionPoint | ||||
public abstract class ScmProvider { | public abstract class ScmProvider { | ||||
*/ | */ | ||||
package org.sonar.api.batch.sensor.internal; | package org.sonar.api.batch.sensor.internal; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.batch.sensor.code.internal.DefaultSignificantCode; | import org.sonar.api.batch.sensor.code.internal.DefaultSignificantCode; | ||||
import org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage; | import org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage; | ||||
import org.sonar.api.batch.sensor.cpd.internal.DefaultCpdTokens; | import org.sonar.api.batch.sensor.cpd.internal.DefaultCpdTokens; |
import java.lang.annotation.Retention; | import java.lang.annotation.Retention; | ||||
import java.lang.annotation.RetentionPolicy; | import java.lang.annotation.RetentionPolicy; | ||||
import java.lang.annotation.Target; | import java.lang.annotation.Target; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
/** | /** | ||||
* Same as {@link ScannerSide} but for components for the Compute Engine Server. | * Same as {@link ScannerSide} but for components for the Compute Engine Server. |
package org.sonar.api.config; | package org.sonar.api.config; | ||||
import java.util.Optional; | import java.util.Optional; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.config.internal.MapSettings; | import org.sonar.api.config.internal.MapSettings; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
/** | /** | ||||
* Component to get effective configuration. Values of properties depend on the runtime environment: | * Component to get effective configuration. Values of properties depend on the runtime environment: | ||||
* <ul> | * <ul> | ||||
* <li>immutable project or module configuration in scanner.</li> | |||||
* <li>immutable project configuration in scanner.</li> | |||||
* <li>global configuration in web server. It does not allow to get the settings overridden on projects.</li> | * <li>global configuration in web server. It does not allow to get the settings overridden on projects.</li> | ||||
* <li>project configuration in Compute Engine.</li> | * <li>project configuration in Compute Engine.</li> | ||||
* </ul> | * </ul> |
import org.sonar.api.ExtensionPoint; | import org.sonar.api.ExtensionPoint; | ||||
import org.sonar.api.Property; | import org.sonar.api.Property; | ||||
import org.sonar.api.PropertyType; | import org.sonar.api.PropertyType; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.resources.Qualifiers; | import org.sonar.api.resources.Qualifiers; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; |
import org.sonar.api.CoreProperties; | import org.sonar.api.CoreProperties; | ||||
import org.sonar.api.Properties; | import org.sonar.api.Properties; | ||||
import org.sonar.api.Property; | import org.sonar.api.Property; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import org.sonar.api.utils.AnnotationUtils; | import org.sonar.api.utils.AnnotationUtils; |
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.apache.commons.lang.ArrayUtils; | import org.apache.commons.lang.ArrayUtils; | ||||
import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import org.sonar.api.utils.DateUtils; | import org.sonar.api.utils.DateUtils; |
import java.util.Date; | import java.util.Date; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
* | * | ||||
* @since 2.10 | * @since 2.10 | ||||
*/ | */ | ||||
@ScannerSide | |||||
@ServerSide | @ServerSide | ||||
@ComputeEngineSide | @ComputeEngineSide | ||||
public interface I18n { | public interface I18n { |
import java.util.Locale; | import java.util.Locale; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.rules.Rule; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.rules.Rule; | |||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
/** | /** | ||||
* @deprecated in 4.1. Rules are not localized anymore. See http://jira.sonarsource.com/browse/SONAR-4885 | * @deprecated in 4.1. Rules are not localized anymore. See http://jira.sonarsource.com/browse/SONAR-4885 | ||||
*/ | */ | ||||
@Deprecated | @Deprecated | ||||
@ScannerSide | |||||
@ServerSide | @ServerSide | ||||
@ComputeEngineSide | @ComputeEngineSide | ||||
public interface RuleI18n { | public interface RuleI18n { |
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.rule.RuleKey; | import org.sonar.api.rule.RuleKey; | ||||
import org.sonar.api.utils.Duration; | import org.sonar.api.utils.Duration; | ||||
/** | /** | ||||
* Non-null list of comments, ordered by chronological order. | * Non-null list of comments, ordered by chronological order. | ||||
* <br> | |||||
* IMPORTANT: existing comments are not loaded when this method is called when analyzing project | |||||
* (from {@link ScannerSide}). | |||||
* | * | ||||
* @deprecated since 7.2, comments are not more available | * @deprecated since 7.2, comments are not more available | ||||
*/ | */ |
*/ | */ | ||||
package org.sonar.api.issue; | package org.sonar.api.issue; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import static org.sonar.api.batch.InstantiationStrategy.PER_BATCH; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
/** | /** | ||||
* Used by batch components to get all project issues. | * Used by batch components to get all project issues. | ||||
* @since 4.0 | * @since 4.0 | ||||
* @deprecated since 7.3 preview mode is deprecated since 6.6 | * @deprecated since 7.3 preview mode is deprecated since 6.6 | ||||
*/ | */ | ||||
@InstantiationStrategy(PER_BATCH) | |||||
@ScannerSide | @ScannerSide | ||||
@Deprecated | @Deprecated | ||||
public interface ProjectIssues { | public interface ProjectIssues { |
*/ | */ | ||||
package org.sonar.api.measures; | package org.sonar.api.measures; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.batch.fs.InputFile; | import org.sonar.api.batch.fs.InputFile; | ||||
/** | /** |
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder; | import org.apache.commons.lang.builder.ReflectionToStringBuilder; | ||||
import org.apache.commons.lang.builder.ToStringStyle; | import org.apache.commons.lang.builder.ToStringStyle; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import static com.google.common.base.MoreObjects.firstNonNull; | import static com.google.common.base.MoreObjects.firstNonNull; | ||||
/** | /** | ||||
* Used to define a metric in a plugin. Should be used with {@link Metrics} extension point. | * Used to define a metric in a plugin. Should be used with {@link Metrics} extension point. | ||||
* Should no more be used on scanner side. Use {@link org.sonar.api.batch.measure.Metric} instead. | |||||
*/ | */ | ||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
@ServerSide | @ServerSide | ||||
@ComputeEngineSide | @ComputeEngineSide | ||||
public class Metric<G extends Serializable> implements Serializable, org.sonar.api.batch.measure.Metric<G> { | public class Metric<G extends Serializable> implements Serializable, org.sonar.api.batch.measure.Metric<G> { |
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.List; | import java.util.List; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import java.util.List; | import java.util.List; | ||||
import org.sonar.api.ExtensionPoint; | import org.sonar.api.ExtensionPoint; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
/** | /** | ||||
* @since 1.10 | * @since 1.10 | ||||
*/ | */ | ||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
@ServerSide | @ServerSide | ||||
@ComputeEngineSide | @ComputeEngineSide | ||||
@ExtensionPoint | @ExtensionPoint |
import java.io.File; | import java.io.File; | ||||
import java.util.Date; | import java.util.Date; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
package org.sonar.api.resources; | package org.sonar.api.resources; | ||||
import org.sonar.api.ExtensionPoint; | import org.sonar.api.ExtensionPoint; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import org.sonarsource.api.sonarlint.SonarLintSide; | import org.sonarsource.api.sonarlint.SonarLintSide; | ||||
/** | /** | ||||
* The extension point to define a new language | * The extension point to define a new language | ||||
* <br> | |||||
* Instantiation strategy changed to PER_BATCH in version 4.2. | |||||
* | * | ||||
* @since 1.10 | * @since 1.10 | ||||
*/ | */ | ||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
@ServerSide | @ServerSide | ||||
@SonarLintSide | @SonarLintSide | ||||
@ComputeEngineSide | @ComputeEngineSide |
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import org.apache.commons.lang.ArrayUtils; | import org.apache.commons.lang.ArrayUtils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import org.sonar.api.utils.log.Logger; | import org.sonar.api.utils.log.Logger; |
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import javax.annotation.concurrent.Immutable; | import javax.annotation.concurrent.Immutable; | ||||
import org.apache.commons.io.FilenameUtils; | import org.apache.commons.io.FilenameUtils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.utils.PathUtils; | import org.sonar.api.utils.PathUtils; | ||||
import static java.util.stream.Collectors.joining; | import static java.util.stream.Collectors.joining; |
import java.lang.annotation.Retention; | import java.lang.annotation.Retention; | ||||
import java.lang.annotation.RetentionPolicy; | import java.lang.annotation.RetentionPolicy; | ||||
import java.lang.annotation.Target; | import java.lang.annotation.Target; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
/** | /** | ||||
* Same as {@link ScannerSide} but for server-side components. | * Same as {@link ScannerSide} but for server-side components. |
package org.sonar.api.utils; | package org.sonar.api.utils; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
/** | /** | ||||
* @since 4.3 | * @since 4.3 | ||||
*/ | */ | ||||
@ScannerSide | |||||
@ServerSide | @ServerSide | ||||
@ComputeEngineSide | @ComputeEngineSide | ||||
public class Durations { | public class Durations { |
*/ | */ | ||||
package org.sonar.api.utils; | package org.sonar.api.utils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import java.io.File; | import java.io.File; | ||||
/** | /** | ||||
* This component is available in IoC container, so it should be injected through | * This component is available in IoC container, so it should be injected through | ||||
* a constructor parameter. It is available in both batch and server. | |||||
* a constructor parameter. It is available in both scanner and server. | |||||
*/ | */ | ||||
@ScannerSide | @ScannerSide | ||||
@ServerSide | @ServerSide |
import java.util.TimeZone; | import java.util.TimeZone; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.apache.commons.lang.SystemUtils; | import org.apache.commons.lang.SystemUtils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import java.io.File; | import java.io.File; | ||||
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.stream.Stream; | import java.util.stream.Stream; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
*/ | */ | ||||
package org.sonar.batch.bootstrapper; | package org.sonar.batch.bootstrapper; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
/** | /** | ||||
* Describes execution environment. | * Describes execution environment. | ||||
* | * | ||||
* @since 2.6 | * @since 2.6 | ||||
*/ | */ | ||||
@ScannerSide | |||||
public class EnvironmentInformation { | public class EnvironmentInformation { | ||||
private String key; | private String key; |
import java.util.Map.Entry; | import java.util.Map.Entry; | ||||
import org.sonar.api.batch.fs.InputFile; | import org.sonar.api.batch.fs.InputFile; | ||||
import org.sonar.api.batch.measure.MetricFinder; | import org.sonar.api.batch.measure.MetricFinder; | ||||
import org.sonar.api.batch.sensor.SensorContext; | |||||
import org.sonar.api.batch.sensor.internal.SensorStorage; | |||||
import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; | import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; | ||||
import org.sonar.api.measures.CoreMetrics; | import org.sonar.api.measures.CoreMetrics; | ||||
import org.sonar.api.measures.FileLinesContext; | import org.sonar.api.measures.FileLinesContext; | ||||
import static java.util.stream.Collectors.toMap; | import static java.util.stream.Collectors.toMap; | ||||
public class DefaultFileLinesContext implements FileLinesContext { | public class DefaultFileLinesContext implements FileLinesContext { | ||||
private final SensorContext context; | |||||
private final InputFile inputFile; | private final InputFile inputFile; | ||||
private final MetricFinder metricFinder; | private final MetricFinder metricFinder; | ||||
private final MeasureCache measureCache; | private final MeasureCache measureCache; | ||||
* metric key -> line -> value | * metric key -> line -> value | ||||
*/ | */ | ||||
private final Map<String, Map<Integer, Object>> map = new HashMap<>(); | private final Map<String, Map<Integer, Object>> map = new HashMap<>(); | ||||
private final SensorStorage sensorStorage; | |||||
public DefaultFileLinesContext(SensorContext context, InputFile inputFile, MetricFinder metricFinder, MeasureCache measureCache) { | |||||
this.context = context; | |||||
public DefaultFileLinesContext(SensorStorage sensorStorage, InputFile inputFile, MetricFinder metricFinder, MeasureCache measureCache) { | |||||
this.sensorStorage = sensorStorage; | |||||
this.inputFile = inputFile; | this.inputFile = inputFile; | ||||
this.metricFinder = metricFinder; | this.metricFinder = metricFinder; | ||||
this.measureCache = measureCache; | this.measureCache = measureCache; | ||||
Map<Integer, Object> lines = entry.getValue(); | Map<Integer, Object> lines = entry.getValue(); | ||||
if (shouldSave(lines)) { | if (shouldSave(lines)) { | ||||
String data = KeyValueFormat.format(optimizeStorage(metricKey, lines)); | String data = KeyValueFormat.format(optimizeStorage(metricKey, lines)); | ||||
context.newMeasure() | |||||
new DefaultMeasure<String>(sensorStorage) | |||||
.on(inputFile) | .on(inputFile) | ||||
.forMetric(metricFinder.findByKey(metricKey)) | .forMetric(metricFinder.findByKey(metricKey)) | ||||
.withValue(data) | .withValue(data) |
import javax.annotation.concurrent.Immutable; | import javax.annotation.concurrent.Immutable; | ||||
import org.sonar.api.batch.fs.InputFile; | import org.sonar.api.batch.fs.InputFile; | ||||
import org.sonar.api.batch.measure.MetricFinder; | import org.sonar.api.batch.measure.MetricFinder; | ||||
import org.sonar.api.batch.sensor.SensorContext; | |||||
import org.sonar.api.batch.sensor.internal.SensorStorage; | |||||
import org.sonar.api.measures.FileLinesContext; | import org.sonar.api.measures.FileLinesContext; | ||||
import org.sonar.api.measures.FileLinesContextFactory; | import org.sonar.api.measures.FileLinesContextFactory; | ||||
import org.sonar.scanner.scan.measure.MeasureCache; | import org.sonar.scanner.scan.measure.MeasureCache; | ||||
@Immutable | @Immutable | ||||
public class DefaultFileLinesContextFactory implements FileLinesContextFactory { | public class DefaultFileLinesContextFactory implements FileLinesContextFactory { | ||||
private final SensorContext sensorContext; | |||||
private final SensorStorage sensorStorage; | |||||
private final MetricFinder metricFinder; | private final MetricFinder metricFinder; | ||||
private final MeasureCache measureCache; | private final MeasureCache measureCache; | ||||
public DefaultFileLinesContextFactory(SensorContext sensorContext, MetricFinder metricFinder, MeasureCache measureCache) { | |||||
this.sensorContext = sensorContext; | |||||
public DefaultFileLinesContextFactory(SensorStorage sensorStorage, MetricFinder metricFinder, MeasureCache measureCache) { | |||||
this.sensorStorage = sensorStorage; | |||||
this.metricFinder = metricFinder; | this.metricFinder = metricFinder; | ||||
this.measureCache = measureCache; | this.measureCache = measureCache; | ||||
} | } | ||||
@Override | @Override | ||||
public FileLinesContext createFor(InputFile inputFile) { | public FileLinesContext createFor(InputFile inputFile) { | ||||
return new DefaultFileLinesContext(sensorContext, inputFile, metricFinder, measureCache); | |||||
return new DefaultFileLinesContext(sensorStorage, inputFile, metricFinder, measureCache); | |||||
} | } | ||||
} | } |
*/ | */ | ||||
package org.sonar.scanner.bootstrap; | package org.sonar.scanner.bootstrap; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
/** | |||||
* @since 3.6 | |||||
*/ | |||||
@ScannerSide | |||||
public interface ExtensionMatcher { | public interface ExtensionMatcher { | ||||
boolean accept(Object extension); | boolean accept(Object extension); | ||||
} | } |
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import java.util.List; | import java.util.List; | ||||
import org.sonar.api.ExtensionProvider; | import org.sonar.api.ExtensionProvider; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.measures.CoreMetrics; | import org.sonar.api.measures.CoreMetrics; | ||||
import org.sonar.api.measures.Metric; | import org.sonar.api.measures.Metric; | ||||
import org.sonar.api.measures.Metrics; | import org.sonar.api.measures.Metrics; | ||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
public class MetricProvider extends ExtensionProvider { | public class MetricProvider extends ExtensionProvider { | ||||
private Metrics[] factories; | private Metrics[] factories; |
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
@ScannerSide | |||||
public interface PluginInstaller { | public interface PluginInstaller { | ||||
/** | /** |
import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.commons.io.FileUtils; | import org.apache.commons.io.FileUtils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.utils.ZipUtils; | import org.sonar.api.utils.ZipUtils; | ||||
import org.sonar.core.platform.ExplodedPlugin; | import org.sonar.core.platform.ExplodedPlugin; | ||||
import org.sonar.core.platform.PluginInfo; | import org.sonar.core.platform.PluginInfo; | ||||
import static org.sonar.core.util.FileUtils.deleteQuietly; | import static org.sonar.core.util.FileUtils.deleteQuietly; | ||||
@ScannerSide | |||||
public class ScannerPluginJarExploder extends PluginJarExploder { | public class ScannerPluginJarExploder extends PluginJarExploder { | ||||
private final PluginFiles pluginFiles; | private final PluginFiles pluginFiles; |
import java.util.stream.StreamSupport; | import java.util.stream.StreamSupport; | ||||
import javax.annotation.Nonnull; | import javax.annotation.Nonnull; | ||||
import org.sonar.api.CoreProperties; | import org.sonar.api.CoreProperties; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.config.Configuration; | import org.sonar.api.config.Configuration; | ||||
import org.sonar.api.utils.log.Logger; | import org.sonar.api.utils.log.Logger; | ||||
import org.sonar.api.utils.log.Loggers; | import org.sonar.api.utils.log.Loggers; | ||||
/** | /** | ||||
* Filters the plugins to be enabled during analysis | * Filters the plugins to be enabled during analysis | ||||
*/ | */ | ||||
@ScannerSide | |||||
public class ScannerPluginPredicate implements Predicate<String> { | public class ScannerPluginPredicate implements Predicate<String> { | ||||
private static final Logger LOG = Loggers.get(ScannerPluginPredicate.class); | private static final Logger LOG = Loggers.get(ScannerPluginPredicate.class); |
import org.picocontainer.injectors.ProviderAdapter; | import org.picocontainer.injectors.ProviderAdapter; | ||||
import org.sonar.api.CoreProperties; | import org.sonar.api.CoreProperties; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.utils.System2; | import org.sonar.api.utils.System2; | ||||
import org.sonar.batch.bootstrapper.EnvironmentInformation; | import org.sonar.batch.bootstrapper.EnvironmentInformation; | ||||
import org.sonarqube.ws.client.HttpConnector; | import org.sonarqube.ws.client.HttpConnector; | ||||
import static java.lang.String.valueOf; | import static java.lang.String.valueOf; | ||||
import static org.apache.commons.lang.StringUtils.defaultIfBlank; | import static org.apache.commons.lang.StringUtils.defaultIfBlank; | ||||
@ScannerSide | |||||
public class ScannerWsClientProvider extends ProviderAdapter { | public class ScannerWsClientProvider extends ProviderAdapter { | ||||
static final int CONNECT_TIMEOUT_MS = 5_000; | static final int CONNECT_TIMEOUT_MS = 5_000; |
package org.sonar.scanner.deprecated.perspectives; | package org.sonar.scanner.deprecated.perspectives; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.fs.InputComponent; | import org.sonar.api.batch.fs.InputComponent; | ||||
import org.sonar.api.component.Perspective; | import org.sonar.api.component.Perspective; | ||||
@ScannerSide | |||||
public abstract class PerspectiveBuilder<T extends Perspective> { | public abstract class PerspectiveBuilder<T extends Perspective> { | ||||
private final Class<T> perspectiveClass; | private final Class<T> perspectiveClass; |
package org.sonar.scanner.extension; | package org.sonar.scanner.extension; | ||||
import org.sonar.api.SonarRuntime; | import org.sonar.api.SonarRuntime; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.core.extension.CoreExtensionRepository; | import org.sonar.core.extension.CoreExtensionRepository; | ||||
import org.sonar.core.extension.CoreExtensionsInstaller; | import org.sonar.core.extension.CoreExtensionsInstaller; | ||||
package org.sonar.scanner.issue; | package org.sonar.scanner.issue; | ||||
import java.util.Collection; | import java.util.Collection; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.scanner.issue.tracking.TrackedIssue; | import org.sonar.scanner.issue.tracking.TrackedIssue; | ||||
import org.sonar.scanner.storage.Storage; | import org.sonar.scanner.storage.Storage; | ||||
import org.sonar.scanner.storage.Storages; | import org.sonar.scanner.storage.Storages; | ||||
/** | /** | ||||
* Shared issues among all project modules | * Shared issues among all project modules | ||||
*/ | */ | ||||
@ScannerSide | |||||
public class IssueCache { | public class IssueCache { | ||||
// component key -> issue key -> issue | // component key -> issue key -> issue |
import java.util.List; | import java.util.List; | ||||
import java.util.Set; | import java.util.Set; | ||||
import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.config.Configuration; | import org.sonar.api.config.Configuration; | ||||
import static com.google.common.base.MoreObjects.firstNonNull; | import static com.google.common.base.MoreObjects.firstNonNull; | ||||
@ScannerSide | |||||
public abstract class AbstractPatternInitializer { | public abstract class AbstractPatternInitializer { | ||||
private Configuration settings; | private Configuration settings; | ||||
private List<IssuePattern> multicriteriaPatterns; | private List<IssuePattern> multicriteriaPatterns; |
import java.util.List; | import java.util.List; | ||||
import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.fs.InputComponent; | import org.sonar.api.batch.fs.InputComponent; | ||||
import org.sonar.api.batch.fs.internal.DefaultInputComponent; | import org.sonar.api.batch.fs.internal.DefaultInputComponent; | ||||
import org.sonar.core.util.CloseableIterator; | import org.sonar.core.util.CloseableIterator; | ||||
import org.sonar.scanner.scan.filesystem.InputComponentStore; | import org.sonar.scanner.scan.filesystem.InputComponentStore; | ||||
import org.sonar.scanner.util.ProgressReport; | import org.sonar.scanner.util.ProgressReport; | ||||
@ScannerSide | |||||
public class IssueTransition { | public class IssueTransition { | ||||
private final IssueCache issueCache; | private final IssueCache issueCache; | ||||
private final InputComponentStore inputComponentStore; | private final InputComponentStore inputComponentStore; |
*/ | */ | ||||
package org.sonar.scanner.issue.tracking; | package org.sonar.scanner.issue.tracking; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.fs.InputComponent; | import org.sonar.api.batch.fs.InputComponent; | ||||
import org.sonar.api.batch.fs.internal.AbstractProjectOrModule; | import org.sonar.api.batch.fs.internal.AbstractProjectOrModule; | ||||
import org.sonar.api.batch.fs.internal.DefaultInputComponent; | import org.sonar.api.batch.fs.internal.DefaultInputComponent; | ||||
import org.sonar.scanner.storage.Storage; | import org.sonar.scanner.storage.Storage; | ||||
import org.sonar.scanner.storage.Storages; | import org.sonar.scanner.storage.Storages; | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
@ScannerSide | |||||
public class ServerIssueRepository { | public class ServerIssueRepository { | ||||
private static final Logger LOG = Loggers.get(ServerIssueRepository.class); | private static final Logger LOG = Loggers.get(ServerIssueRepository.class); |
*/ | */ | ||||
package org.sonar.scanner.issue.tracking; | package org.sonar.scanner.issue.tracking; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
@ScannerSide | |||||
public interface ServerLineHashesLoader { | public interface ServerLineHashesLoader { | ||||
String[] getLineHashes(String fileKey); | String[] getLineHashes(String fileKey); |
package org.sonar.scanner.mediumtest; | package org.sonar.scanner.mediumtest; | ||||
import org.sonar.api.ExtensionPoint; | import org.sonar.api.ExtensionPoint; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.scanner.scan.ProjectScanContainer; | import org.sonar.scanner.scan.ProjectScanContainer; | ||||
@ScannerSide | @ScannerSide |
import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||
import org.sonar.api.CoreProperties; | import org.sonar.api.CoreProperties; | ||||
import org.sonar.api.SonarRuntime; | import org.sonar.api.SonarRuntime; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.config.Configuration; | import org.sonar.api.config.Configuration; | ||||
import org.sonar.api.platform.Server; | import org.sonar.api.platform.Server; | ||||
import org.sonar.api.utils.DateUtils; | import org.sonar.api.utils.DateUtils; | ||||
import static org.apache.commons.lang.StringUtils.trimToEmpty; | import static org.apache.commons.lang.StringUtils.trimToEmpty; | ||||
@ScannerSide | |||||
public class DefaultServer extends Server { | public class DefaultServer extends Server { | ||||
private final Configuration settings; | private final Configuration settings; |
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.postjob.internal.DefaultPostJobDescriptor; | import org.sonar.api.batch.postjob.internal.DefaultPostJobDescriptor; | ||||
import org.sonar.api.config.Configuration; | import org.sonar.api.config.Configuration; | ||||
@ScannerSide | |||||
public class PostJobOptimizer { | public class PostJobOptimizer { | ||||
private static final Logger LOG = LoggerFactory.getLogger(PostJobOptimizer.class); | private static final Logger LOG = LoggerFactory.getLogger(PostJobOptimizer.class); |
import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||
import org.sonar.api.CoreProperties; | import org.sonar.api.CoreProperties; | ||||
import org.sonar.api.batch.AnalysisMode; | import org.sonar.api.batch.AnalysisMode; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.fs.internal.AbstractProjectOrModule; | import org.sonar.api.batch.fs.internal.AbstractProjectOrModule; | ||||
import org.sonar.api.batch.fs.internal.DefaultInputModule; | import org.sonar.api.batch.fs.internal.DefaultInputModule; | ||||
import org.sonar.api.batch.fs.internal.InputModuleHierarchy; | import org.sonar.api.batch.fs.internal.InputModuleHierarchy; | ||||
import static java.util.stream.Collectors.toList; | import static java.util.stream.Collectors.toList; | ||||
@ScannerSide | |||||
public class AnalysisContextReportPublisher { | public class AnalysisContextReportPublisher { | ||||
private static final String KEY_VALUE_FORMAT = " - %s=%s"; | private static final String KEY_VALUE_FORMAT = " - %s=%s"; |
import okhttp3.HttpUrl; | import okhttp3.HttpUrl; | ||||
import org.apache.commons.io.FileUtils; | import org.apache.commons.io.FileUtils; | ||||
import org.picocontainer.Startable; | import org.picocontainer.Startable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.fs.internal.InputModuleHierarchy; | import org.sonar.api.batch.fs.internal.InputModuleHierarchy; | ||||
import org.sonar.api.platform.Server; | import org.sonar.api.platform.Server; | ||||
import org.sonar.api.utils.MessageException; | import org.sonar.api.utils.MessageException; | ||||
import static org.sonar.scanner.scan.branch.BranchType.PULL_REQUEST; | import static org.sonar.scanner.scan.branch.BranchType.PULL_REQUEST; | ||||
import static org.sonar.scanner.scan.branch.BranchType.SHORT; | import static org.sonar.scanner.scan.branch.BranchType.SHORT; | ||||
@ScannerSide | |||||
public class ReportPublisher implements Startable { | public class ReportPublisher implements Startable { | ||||
private static final Logger LOG = Loggers.get(ReportPublisher.class); | private static final Logger LOG = Loggers.get(ReportPublisher.class); |
*/ | */ | ||||
package org.sonar.scanner.repository; | package org.sonar.scanner.repository; | ||||
import static com.google.common.base.Preconditions.checkArgument; | |||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.Map; | import java.util.Map; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import static com.google.common.base.Preconditions.checkArgument; | |||||
@ScannerSide | |||||
public class ContextPropertiesCache { | public class ContextPropertiesCache { | ||||
private final Map<String, String> props = new HashMap<>(); | private final Map<String, String> props = new HashMap<>(); |
package org.sonar.scanner.repository.language; | package org.sonar.scanner.repository.language; | ||||
import java.util.Collection; | import java.util.Collection; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import javax.annotation.concurrent.Immutable; | import javax.annotation.concurrent.Immutable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
/** | /** | ||||
* Languages repository | * Languages repository | ||||
* @since 4.4 | * @since 4.4 | ||||
*/ | */ | ||||
@ScannerSide | |||||
@Immutable | @Immutable | ||||
public interface LanguagesRepository { | public interface LanguagesRepository { | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.sonar.api.batch.fs.internal.DefaultInputModule; | import org.sonar.api.batch.fs.internal.DefaultInputModule; | ||||
import org.sonar.api.scan.filesystem.FileExclusions; | import org.sonar.api.scan.filesystem.FileExclusions; | ||||
import org.sonar.core.extension.CoreExtensionsInstaller; | |||||
import org.sonar.core.platform.ComponentContainer; | import org.sonar.core.platform.ComponentContainer; | ||||
import org.sonar.scanner.DefaultFileLinesContextFactory; | |||||
import org.sonar.scanner.bootstrap.ExtensionInstaller; | import org.sonar.scanner.bootstrap.ExtensionInstaller; | ||||
import org.sonar.scanner.bootstrap.SensorExtensionDictionnary; | import org.sonar.scanner.bootstrap.SensorExtensionDictionnary; | ||||
import org.sonar.scanner.deprecated.perspectives.ScannerPerspectives; | import org.sonar.scanner.deprecated.perspectives.ScannerPerspectives; | ||||
import org.sonar.scanner.scan.filesystem.DefaultModuleFileSystem; | import org.sonar.scanner.scan.filesystem.DefaultModuleFileSystem; | ||||
import org.sonar.scanner.scan.filesystem.ModuleInputComponentStore; | import org.sonar.scanner.scan.filesystem.ModuleInputComponentStore; | ||||
import org.sonar.scanner.sensor.DefaultSensorContext; | import org.sonar.scanner.sensor.DefaultSensorContext; | ||||
import org.sonar.scanner.sensor.DefaultSensorStorage; | |||||
import org.sonar.scanner.sensor.SensorOptimizer; | import org.sonar.scanner.sensor.SensorOptimizer; | ||||
import static org.sonar.api.batch.InstantiationStrategy.PER_PROJECT; | import static org.sonar.api.batch.InstantiationStrategy.PER_PROJECT; | ||||
import static org.sonar.core.extension.CoreExtensionsInstaller.noExtensionFilter; | |||||
import static org.sonar.scanner.bootstrap.ExtensionUtils.isDeprecatedScannerSide; | import static org.sonar.scanner.bootstrap.ExtensionUtils.isDeprecatedScannerSide; | ||||
import static org.sonar.scanner.bootstrap.ExtensionUtils.isInstantiationStrategy; | import static org.sonar.scanner.bootstrap.ExtensionUtils.isInstantiationStrategy; | ||||
SensorOptimizer.class, | SensorOptimizer.class, | ||||
DefaultSensorStorage.class, | |||||
DefaultSensorContext.class, | DefaultSensorContext.class, | ||||
SensorExtensionDictionnary.class, | SensorExtensionDictionnary.class, | ||||
// Perspectives | // Perspectives | ||||
ScannerPerspectives.class, | |||||
DefaultFileLinesContextFactory.class); | |||||
ScannerPerspectives.class); | |||||
} | } | ||||
private void addExtensions() { | private void addExtensions() { | ||||
CoreExtensionsInstaller coreExtensionsInstaller = getComponentByType(CoreExtensionsInstaller.class); | |||||
coreExtensionsInstaller.install(this, noExtensionFilter(), t -> isInstantiationStrategy(t, PER_PROJECT)); | |||||
ExtensionInstaller pluginInstaller = getComponentByType(ExtensionInstaller.class); | ExtensionInstaller pluginInstaller = getComponentByType(ExtensionInstaller.class); | ||||
pluginInstaller.install(this, e -> isDeprecatedScannerSide(e) && isInstantiationStrategy(e, PER_PROJECT)); | pluginInstaller.install(this, e -> isDeprecatedScannerSide(e) && isInstantiationStrategy(e, PER_PROJECT)); | ||||
} | } |
import org.sonar.core.extension.CoreExtensionsInstaller; | import org.sonar.core.extension.CoreExtensionsInstaller; | ||||
import org.sonar.core.metric.ScannerMetrics; | import org.sonar.core.metric.ScannerMetrics; | ||||
import org.sonar.core.platform.ComponentContainer; | import org.sonar.core.platform.ComponentContainer; | ||||
import org.sonar.scanner.DefaultFileLinesContextFactory; | |||||
import org.sonar.scanner.ProjectAnalysisInfo; | import org.sonar.scanner.ProjectAnalysisInfo; | ||||
import org.sonar.scanner.analysis.AnalysisTempFolderProvider; | import org.sonar.scanner.analysis.AnalysisTempFolderProvider; | ||||
import org.sonar.scanner.analysis.DefaultAnalysisMode; | import org.sonar.scanner.analysis.DefaultAnalysisMode; | ||||
import org.sonar.scanner.scm.ScmChangedFilesProvider; | import org.sonar.scanner.scm.ScmChangedFilesProvider; | ||||
import org.sonar.scanner.scm.ScmConfiguration; | import org.sonar.scanner.scm.ScmConfiguration; | ||||
import org.sonar.scanner.scm.ScmPublisher; | import org.sonar.scanner.scm.ScmPublisher; | ||||
import org.sonar.scanner.sensor.DefaultSensorStorage; | |||||
import org.sonar.scanner.storage.Storages; | import org.sonar.scanner.storage.Storages; | ||||
import static org.sonar.api.batch.InstantiationStrategy.PER_BATCH; | import static org.sonar.api.batch.InstantiationStrategy.PER_BATCH; | ||||
IssueFilters.class, | IssueFilters.class, | ||||
IssuePublisher.class, | IssuePublisher.class, | ||||
// metrics | // metrics | ||||
DefaultMetricFinder.class, | DefaultMetricFinder.class, | ||||
ScmConfiguration.class, | ScmConfiguration.class, | ||||
ScmPublisher.class, | ScmPublisher.class, | ||||
// Sensors | |||||
DefaultSensorStorage.class, | |||||
DefaultFileLinesContextFactory.class, | |||||
// Filesystem | // Filesystem | ||||
DefaultProjectFileSystem.class, | DefaultProjectFileSystem.class, | ||||
import java.nio.file.Path; | import java.nio.file.Path; | ||||
import java.nio.file.Paths; | import java.nio.file.Paths; | ||||
import java.util.Optional; | import java.util.Optional; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.fs.internal.DefaultInputProject; | import org.sonar.api.batch.fs.internal.DefaultInputProject; | ||||
import org.sonar.api.config.Configuration; | import org.sonar.api.config.Configuration; | ||||
import org.sonar.api.utils.MessageException; | import org.sonar.api.utils.MessageException; | ||||
/** | /** | ||||
* Properties that can be passed to the scanners and are not exposed in SonarQube. | * Properties that can be passed to the scanners and are not exposed in SonarQube. | ||||
*/ | */ | ||||
@ScannerSide | |||||
public class ScanProperties { | public class ScanProperties { | ||||
public static final String METADATA_FILE_PATH_KEY = "sonar.scanner.metadataFilePath"; | public static final String METADATA_FILE_PATH_KEY = "sonar.scanner.metadataFilePath"; | ||||
public static final String KEEP_REPORT_PROP_KEY = "sonar.scanner.keepReport"; | public static final String KEEP_REPORT_PROP_KEY = "sonar.scanner.keepReport"; |
import java.util.Map; | import java.util.Map; | ||||
import java.util.function.Supplier; | import java.util.function.Supplier; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
public interface BranchConfigurationLoader { | public interface BranchConfigurationLoader { | ||||
BranchConfiguration load(Map<String, String> localSettings, Supplier<Map<String, String>> remoteSettingsSupplier, ProjectBranches branches, ProjectPullRequests pullRequests); | BranchConfiguration load(Map<String, String> localSettings, Supplier<Map<String, String>> remoteSettingsSupplier, ProjectBranches branches, ProjectPullRequests pullRequests); | ||||
} | } |
import java.util.List; | import java.util.List; | ||||
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
public interface BranchParamsValidator { | public interface BranchParamsValidator { | ||||
void validate(List<String> validationMessages, @Nullable String deprecatedBranchName); | void validate(List<String> validationMessages, @Nullable String deprecatedBranchName); | ||||
} | } |
*/ | */ | ||||
package org.sonar.scanner.scan.branch; | package org.sonar.scanner.scan.branch; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
public interface ProjectBranchesLoader { | public interface ProjectBranchesLoader { | ||||
/** | /** |
*/ | */ | ||||
package org.sonar.scanner.scan.branch; | package org.sonar.scanner.scan.branch; | ||||
import org.sonar.api.batch.InstantiationStrategy; | |||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
@ScannerSide | @ScannerSide | ||||
@InstantiationStrategy(InstantiationStrategy.PER_BATCH) | |||||
public interface ProjectPullRequestsLoader { | public interface ProjectPullRequestsLoader { | ||||
/** | /** |
import com.google.common.base.Preconditions; | import com.google.common.base.Preconditions; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.batch.measure.MetricFinder; | import org.sonar.api.batch.measure.MetricFinder; | ||||
import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; | import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; | ||||
import org.sonar.scanner.storage.Storage; | import org.sonar.scanner.storage.Storage; | ||||
/** | /** | ||||
* Cache of all measures. This cache is shared amongst all project modules. | * Cache of all measures. This cache is shared amongst all project modules. | ||||
*/ | */ | ||||
@ScannerSide | |||||
public class MeasureCache { | public class MeasureCache { | ||||
private final Storage<DefaultMeasure<?>> cache; | private final Storage<DefaultMeasure<?>> cache; |
import java.util.Map; | import java.util.Map; | ||||
import java.util.Map.Entry; | import java.util.Map.Entry; | ||||
import org.picocontainer.Startable; | import org.picocontainer.Startable; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
@ScannerSide | |||||
public class Storages implements Startable { | public class Storages implements Startable { | ||||
private final Map<String, Exchange> cacheMap = new HashMap<>(); | private final Map<String, Exchange> cacheMap = new HashMap<>(); | ||||
private Persistit persistit; | private Persistit persistit; |
import java.util.Properties; | import java.util.Properties; | ||||
import org.picocontainer.Startable; | import org.picocontainer.Startable; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.utils.TempFolder; | import org.sonar.api.utils.TempFolder; | ||||
import static org.sonar.core.util.FileUtils.deleteQuietly; | import static org.sonar.core.util.FileUtils.deleteQuietly; | ||||
* | * | ||||
* @since 3.6 | * @since 3.6 | ||||
*/ | */ | ||||
@ScannerSide | |||||
public class StoragesManager implements Startable { | public class StoragesManager implements Startable { | ||||
private File tempDir; | private File tempDir; | ||||
private Persistit persistit; | private Persistit persistit; |
import java.util.stream.Stream; | import java.util.stream.Stream; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
import org.sonar.api.SonarRuntime; | import org.sonar.api.SonarRuntime; | ||||
import org.sonar.api.batch.ScannerSide; | |||||
import org.sonar.api.scanner.ScannerSide; | |||||
import org.sonar.api.ce.ComputeEngineSide; | import org.sonar.api.ce.ComputeEngineSide; | ||||
import org.sonar.api.server.ServerSide; | import org.sonar.api.server.ServerSide; | ||||
import org.sonar.core.extension.CoreExtension; | import org.sonar.core.extension.CoreExtension; |