@@ -57,7 +57,7 @@ import org.sonar.ce.platform.CECoreExtensionsInstaller; | |||
import org.sonar.ce.platform.ComputeEngineExtensionInstaller; | |||
import org.sonar.ce.queue.CeQueueCleaner; | |||
import org.sonar.ce.queue.PurgeCeActivities; | |||
import org.sonar.ce.settings.ProjectConfigurationFactory; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.ProjectConfigurationFactory; | |||
import org.sonar.ce.taskprocessor.CeProcessingScheduler; | |||
import org.sonar.ce.taskprocessor.CeTaskProcessorModule; | |||
import org.sonar.ce.user.CeUserSession; |
@@ -38,7 +38,7 @@ import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.measure.LiveMeasureDto; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.server.badge.ws.SvgGenerator.Color; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
@@ -67,12 +67,12 @@ import static org.sonar.server.badge.ws.ETagUtils.getETag; | |||
import static org.sonar.server.badge.ws.SvgFormatter.formatDuration; | |||
import static org.sonar.server.badge.ws.SvgFormatter.formatNumeric; | |||
import static org.sonar.server.badge.ws.SvgFormatter.formatPercent; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.valueOf; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.D; | |||
import static org.sonar.server.measure.Rating.E; | |||
import static org.sonar.server.measure.Rating.valueOf; | |||
import static org.sonarqube.ws.MediaTypes.SVG; | |||
public class MeasureAction implements ProjectBadgesWsAction { |
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.ce.settings; | |||
package org.sonar.server.computation.task.projectanalysis.analysis; | |||
import org.sonar.api.ce.ComputeEngineSide; | |||
import org.sonar.api.config.Configuration; | |||
@@ -25,7 +25,6 @@ import org.sonar.api.config.Settings; | |||
import org.sonar.api.config.internal.ConfigurationBridge; | |||
import org.sonar.db.DbClient; | |||
import org.sonar.db.component.BranchType; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.Branch; | |||
import org.sonar.server.settings.ChildSettings; | |||
import static org.sonar.db.component.ComponentDto.generateBranchKey; |
@@ -22,7 +22,7 @@ package org.sonar.server.computation.task.projectanalysis.component; | |||
import com.google.common.base.Supplier; | |||
import com.google.common.base.Suppliers; | |||
import org.sonar.api.config.Configuration; | |||
import org.sonar.ce.settings.ProjectConfigurationFactory; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.ProjectConfigurationFactory; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder; | |||
/** |
@@ -20,7 +20,7 @@ | |||
package org.sonar.server.computation.task.projectanalysis.formula.counter; | |||
import javax.annotation.Nullable; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
/** | |||
* Convenience class wrapping a rating to compute the value and know it is has ever been set. |
@@ -23,6 +23,7 @@ import java.util.Optional; | |||
import java.util.function.Supplier; | |||
import org.sonar.api.rule.RuleKey; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.server.rule.NewExternalRule; | |||
/** | |||
* Repository of every rule in DB (including manual rules) whichever their status. |
@@ -20,12 +20,17 @@ | |||
package org.sonar.server.computation.task.projectanalysis.issue; | |||
import com.google.common.collect.Multimap; | |||
import java.util.Collections; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
import java.util.Optional; | |||
import java.util.Set; | |||
import java.util.function.Supplier; | |||
import javax.annotation.CheckForNull; | |||
import org.sonar.api.rule.RuleKey; | |||
import org.sonar.api.rule.RuleStatus; | |||
import org.sonar.api.rules.RuleType; | |||
import org.sonar.api.server.debt.DebtRemediationFunction; | |||
import org.sonar.core.util.stream.MoreCollectors; | |||
import org.sonar.db.DbClient; | |||
import org.sonar.db.DbSession; | |||
@@ -33,6 +38,7 @@ import org.sonar.db.rule.DeprecatedRuleKeyDto; | |||
import org.sonar.db.rule.RuleDto; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder; | |||
import org.sonar.server.rule.ExternalRuleCreator; | |||
import org.sonar.server.rule.NewExternalRule; | |||
import static com.google.common.base.Preconditions.checkArgument; | |||
import static java.util.Objects.requireNonNull; | |||
@@ -58,7 +64,7 @@ public class RuleRepositoryImpl implements RuleRepository { | |||
ensureInitialized(); | |||
if (!rulesByKey.containsKey(ruleKey)) { | |||
rulesByKey.computeIfAbsent(ruleKey, s -> ruleSupplier.get()); | |||
rulesByKey.computeIfAbsent(ruleKey, s -> new ExternalRuleWrapper(ruleSupplier.get())); | |||
} | |||
} | |||
@@ -67,12 +73,12 @@ public class RuleRepositoryImpl implements RuleRepository { | |||
ensureInitialized(); | |||
rulesByKey.values().stream() | |||
.filter(NewExternalRule.class::isInstance) | |||
.forEach(extRule -> persistAndIndex(dbSession, (NewExternalRule) extRule)); | |||
.filter(ExternalRuleWrapper.class::isInstance) | |||
.forEach(extRule -> persistAndIndex(dbSession, (ExternalRuleWrapper) extRule)); | |||
} | |||
private void persistAndIndex(DbSession dbSession, NewExternalRule external) { | |||
Rule rule = creator.persistAndIndex(dbSession, external); | |||
private void persistAndIndex(DbSession dbSession, ExternalRuleWrapper external) { | |||
Rule rule = new RuleImpl(creator.persistAndIndex(dbSession, external.getDelegate())); | |||
rulesById.put(rule.getId(), rule); | |||
rulesByKey.put(external.getKey(), rule); | |||
} | |||
@@ -139,4 +145,63 @@ public class RuleRepositoryImpl implements RuleRepository { | |||
} | |||
} | |||
private static class ExternalRuleWrapper implements Rule { | |||
private final NewExternalRule externalRule; | |||
private ExternalRuleWrapper(NewExternalRule externalRule) { | |||
this.externalRule = externalRule; | |||
} | |||
public NewExternalRule getDelegate() { | |||
return externalRule; | |||
} | |||
@Override | |||
public int getId() { | |||
return 0; | |||
} | |||
@Override | |||
public RuleKey getKey() { | |||
return externalRule.getKey(); | |||
} | |||
@Override | |||
public String getName() { | |||
return externalRule.getName(); | |||
} | |||
@Override | |||
public RuleStatus getStatus() { | |||
return RuleStatus.defaultStatus(); | |||
} | |||
@Override | |||
@CheckForNull | |||
public RuleType getType() { | |||
return null; | |||
} | |||
@Override | |||
public boolean isExternal() { | |||
return true; | |||
} | |||
@Override | |||
public Set<String> getTags() { | |||
return Collections.emptySet(); | |||
} | |||
@CheckForNull | |||
@Override | |||
public DebtRemediationFunction getRemediationFunction() { | |||
return null; | |||
} | |||
@CheckForNull | |||
@Override | |||
public String getPluginKey() { | |||
return externalRule.getPluginKey(); | |||
} | |||
} | |||
} |
@@ -46,6 +46,7 @@ import org.sonar.server.computation.task.projectanalysis.issue.filter.IssueFilte | |||
import org.sonar.server.computation.task.projectanalysis.qualityprofile.ActiveRulesHolder; | |||
import org.sonar.server.computation.task.projectanalysis.source.SourceLinesHashRepository; | |||
import org.sonar.server.rule.CommonRuleKeys; | |||
import org.sonar.server.rule.NewExternalRule; | |||
import static org.apache.commons.lang.StringUtils.isNotEmpty; | |||
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.step; | |||
package org.sonar.server.computation.task.projectanalysis.measure; | |||
import org.sonar.api.ExtensionPoint; | |||
import org.sonar.api.ce.ComputeEngineSide; |
@@ -17,17 +17,16 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.step; | |||
package org.sonar.server.computation.task.projectanalysis.measure; | |||
import com.google.common.base.Optional; | |||
import org.sonar.api.ce.ComputeEngineSide; | |||
import org.sonar.api.measures.CoreMetrics; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder; | |||
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolder; | |||
import org.sonar.server.computation.task.projectanalysis.measure.Measure; | |||
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepository; | |||
import org.sonar.server.computation.task.projectanalysis.metric.Metric; | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
/** | |||
* Execute {@link PostMeasuresComputationCheck} instances in no specific order. |
@@ -29,6 +29,7 @@ import org.sonar.server.computation.task.projectanalysis.measure.Measure; | |||
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepository; | |||
import org.sonar.server.computation.task.projectanalysis.metric.Metric; | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository; | |||
import org.sonar.server.measure.Rating; | |||
import static org.sonar.api.measures.CoreMetrics.DEVELOPMENT_COST_KEY; | |||
import static org.sonar.api.measures.CoreMetrics.EFFORT_TO_REACH_MAINTAINABILITY_RATING_A_KEY; |
@@ -33,6 +33,7 @@ import org.sonar.server.computation.task.projectanalysis.metric.Metric; | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository; | |||
import org.sonar.server.computation.task.projectanalysis.period.Period; | |||
import org.sonar.server.computation.task.projectanalysis.period.PeriodHolder; | |||
import org.sonar.server.measure.Rating; | |||
import static org.sonar.api.measures.CoreMetrics.NEW_RELIABILITY_RATING_KEY; | |||
import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_RATING_KEY; | |||
@@ -48,11 +49,11 @@ import static org.sonar.server.computation.task.projectanalysis.component.Compon | |||
import static org.sonar.server.computation.task.projectanalysis.component.CrawlerDepthLimit.LEAVES; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.D; | |||
import static org.sonar.server.measure.Rating.E; | |||
/** | |||
* Compute following measures : |
@@ -27,6 +27,7 @@ import javax.annotation.concurrent.Immutable; | |||
import org.sonar.api.ce.ComputeEngineSide; | |||
import org.sonar.api.config.Configuration; | |||
import org.sonar.api.utils.MessageException; | |||
import org.sonar.server.measure.DebtRatingGrid; | |||
import static java.lang.String.format; | |||
import static org.sonar.api.CoreProperties.DEVELOPMENT_COST; |
@@ -29,6 +29,7 @@ import org.sonar.server.computation.task.projectanalysis.issue.ComponentIssuesRe | |||
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepository; | |||
import org.sonar.server.computation.task.projectanalysis.metric.Metric; | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository; | |||
import org.sonar.server.measure.Rating; | |||
import static org.sonar.api.measures.CoreMetrics.RELIABILITY_RATING_KEY; | |||
import static org.sonar.api.measures.CoreMetrics.SECURITY_RATING_KEY; | |||
@@ -37,7 +38,7 @@ import static org.sonar.api.rules.RuleType.VULNERABILITY; | |||
import static org.sonar.server.computation.task.projectanalysis.component.ComponentVisitor.Order.POST_ORDER; | |||
import static org.sonar.server.computation.task.projectanalysis.component.CrawlerDepthLimit.FILE; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.RATING_BY_SEVERITY; | |||
import static org.sonar.server.measure.Rating.RATING_BY_SEVERITY; | |||
/** | |||
* Compute following measures for projects and descendants: |
@@ -25,7 +25,7 @@ import org.sonar.server.computation.task.container.TaskContainer; | |||
import org.sonar.server.computation.task.projectanalysis.filemove.FileMoveDetectionStep; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
import org.sonar.server.computation.task.step.ExecuteStatelessInitExtensionsStep; | |||
import org.sonar.server.computation.task.step.PostMeasuresComputationChecksStep; | |||
import org.sonar.server.computation.task.projectanalysis.measure.PostMeasuresComputationChecksStep; | |||
/** | |||
* Ordered list of steps classes and instances to be executed for batch processing |
@@ -19,10 +19,9 @@ | |||
*/ | |||
package org.sonar.server.computation.task.step; | |||
import org.sonar.server.computation.task.projectanalysis.step.ReportComputationSteps; | |||
/** | |||
* Implementations must be declared into {@link ReportComputationSteps#orderedStepClasses()} | |||
* A way of splitting the processing of a task into smaller items which can be executed sequencially | |||
* by {@link ComputationStepExecutor}. | |||
*/ | |||
public interface ComputationStep { | |||
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.projectanalysis.qualitymodel; | |||
package org.sonar.server.measure; | |||
import com.google.common.annotations.VisibleForTesting; | |||
import java.util.Arrays; | |||
@@ -29,11 +29,11 @@ import static com.google.common.base.Preconditions.checkState; | |||
import static java.lang.String.format; | |||
import static org.sonar.api.CoreProperties.RATING_GRID; | |||
import static org.sonar.api.CoreProperties.RATING_GRID_DEF_VALUES; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.D; | |||
import static org.sonar.server.measure.Rating.E; | |||
public class DebtRatingGrid { | |||
@@ -86,7 +86,7 @@ public class DebtRatingGrid { | |||
} | |||
@VisibleForTesting | |||
double[] getGridValues() { | |||
public double[] getGridValues() { | |||
return gridValues; | |||
} | |||
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.projectanalysis.qualitymodel; | |||
package org.sonar.server.measure; | |||
import com.google.common.collect.ImmutableMap; | |||
import java.util.Map; |
@@ -24,8 +24,8 @@ import java.util.Optional; | |||
import java.util.function.BiConsumer; | |||
import org.sonar.api.measures.Metric; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.DebtRatingGrid; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.DebtRatingGrid; | |||
import org.sonar.server.measure.Rating; | |||
import static java.util.Collections.emptyList; | |||
@@ -27,10 +27,10 @@ import org.sonar.api.measures.CoreMetrics; | |||
import org.sonar.api.measures.Metric; | |||
import org.sonar.api.rule.Severity; | |||
import org.sonar.api.rules.RuleType; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import static java.util.Arrays.asList; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.RATING_BY_SEVERITY; | |||
import static org.sonar.server.measure.Rating.RATING_BY_SEVERITY; | |||
public class IssueMetricFormulaFactoryImpl implements IssueMetricFormulaFactory { | |||
@@ -39,8 +39,8 @@ import org.sonar.db.component.SnapshotDto; | |||
import org.sonar.db.measure.LiveMeasureDto; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.db.organization.OrganizationDto; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.DebtRatingGrid; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.DebtRatingGrid; | |||
import org.sonar.server.measure.Rating; | |||
import org.sonar.server.es.ProjectIndexer; | |||
import org.sonar.server.es.ProjectIndexers; | |||
import org.sonar.server.qualitygate.EvaluatedQualityGate; |
@@ -36,7 +36,7 @@ import javax.annotation.Nullable; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.measure.LiveMeasureDto; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import static com.google.common.base.Preconditions.checkArgument; | |||
import static java.util.Objects.requireNonNull; |
@@ -0,0 +1,23 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2018 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
@ParametersAreNonnullByDefault | |||
package org.sonar.server.measure; | |||
import javax.annotation.ParametersAreNonnullByDefault; |
@@ -30,7 +30,6 @@ import org.sonar.api.rules.XMLRuleParser; | |||
import org.sonar.api.server.rule.RulesDefinitionXmlLoader; | |||
import org.sonar.ce.CeModule; | |||
import org.sonar.ce.notification.ReportAnalysisFailureNotificationModule; | |||
import org.sonar.ce.settings.ProjectConfigurationFactory; | |||
import org.sonar.core.component.DefaultResourceTypes; | |||
import org.sonar.core.extension.CoreExtensionsInstaller; | |||
import org.sonar.core.platform.ComponentContainer; | |||
@@ -551,7 +550,6 @@ public class PlatformLevel4 extends PlatformLevel { | |||
PlatformEditionProvider.class, | |||
InternalPropertiesImpl.class, | |||
ProjectConfigurationFactory.class, | |||
// UI | |||
NavigationWsModule.class, |
@@ -34,7 +34,7 @@ import org.sonar.db.DbSession; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.db.qualitygate.QualityGateConditionDto; | |||
import org.sonar.db.qualitygate.QualityGateDto; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import static com.google.common.base.Strings.isNullOrEmpty; | |||
@@ -46,7 +46,7 @@ import static java.util.Arrays.stream; | |||
import static org.sonar.api.measures.Metric.ValueType.RATING; | |||
import static org.sonar.api.measures.Metric.ValueType.valueOf; | |||
import static org.sonar.db.qualitygate.QualityGateConditionDto.isOperatorAllowed; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.measure.Rating.E; | |||
import static org.sonar.server.qualitygate.ValidRatingMetrics.isCoreRatingMetric; | |||
import static org.sonar.server.ws.WsUtils.checkRequest; | |||
@@ -39,7 +39,7 @@ import org.sonar.db.qualitygate.QualityGateConditionDao; | |||
import org.sonar.db.qualitygate.QualityGateConditionDto; | |||
import org.sonar.db.qualitygate.QualityGateDao; | |||
import org.sonar.db.qualitygate.QualityGateDto; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import static java.util.Arrays.asList; | |||
import static java.util.stream.Collectors.toMap; |
@@ -24,9 +24,7 @@ import org.sonar.db.DbClient; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.rule.RuleDao; | |||
import org.sonar.db.rule.RuleDefinitionDto; | |||
import org.sonar.server.computation.task.projectanalysis.issue.NewExternalRule; | |||
import org.sonar.server.computation.task.projectanalysis.issue.Rule; | |||
import org.sonar.server.computation.task.projectanalysis.issue.RuleImpl; | |||
import org.sonar.db.rule.RuleDto; | |||
import org.sonar.server.rule.index.RuleIndexer; | |||
import static org.sonar.api.rule.RuleStatus.READY; | |||
@@ -48,21 +46,21 @@ public class ExternalRuleCreator { | |||
* Persists a rule in the DB and indexes it. | |||
* @return the rule that was inserted in the DB, which <b>includes the generated ID</b>. | |||
*/ | |||
public Rule persistAndIndex(DbSession dbSession, NewExternalRule external) { | |||
public RuleDto persistAndIndex(DbSession dbSession, NewExternalRule external) { | |||
RuleDao dao = dbClient.ruleDao(); | |||
dao.insert(dbSession, new RuleDefinitionDto() | |||
.setRuleKey(external.getKey()) | |||
.setPluginKey(external.getPluginKey()) | |||
.setIsExternal(external.isExternal()) | |||
.setIsExternal(true) | |||
.setName(external.getName()) | |||
.setScope(ALL) | |||
.setStatus(READY) | |||
.setCreatedAt(system2.now()) | |||
.setUpdatedAt(system2.now())); | |||
Rule newRule = new RuleImpl(dao.selectOrFailByKey(dbSession, external.getKey())); | |||
ruleIndexer.commitAndIndex(dbSession, newRule.getId()); | |||
return newRule; | |||
RuleDto ruleDto = dao.selectOrFailByKey(dbSession, external.getKey()); | |||
ruleIndexer.commitAndIndex(dbSession, ruleDto.getId()); | |||
return ruleDto; | |||
} | |||
} |
@@ -17,19 +17,14 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.projectanalysis.issue; | |||
package org.sonar.server.rule; | |||
import java.util.Collections; | |||
import java.util.Objects; | |||
import java.util.Set; | |||
import javax.annotation.concurrent.Immutable; | |||
import org.sonar.api.rule.RuleKey; | |||
import org.sonar.api.rule.RuleStatus; | |||
import org.sonar.api.rules.RuleType; | |||
import org.sonar.api.server.debt.DebtRemediationFunction; | |||
@Immutable | |||
public class NewExternalRule implements Rule { | |||
public class NewExternalRule { | |||
private final RuleKey key; | |||
private final String name; | |||
private final String pluginKey; | |||
@@ -41,47 +36,14 @@ public class NewExternalRule implements Rule { | |||
this.name = builder.name; | |||
} | |||
@Override | |||
public int getId() { | |||
return 0; | |||
} | |||
@Override | |||
public RuleKey getKey() { | |||
return key; | |||
} | |||
@Override | |||
public String getName() { | |||
return name; | |||
} | |||
@Override | |||
public RuleStatus getStatus() { | |||
return RuleStatus.defaultStatus(); | |||
} | |||
@Override | |||
public RuleType getType() { | |||
return null; | |||
} | |||
@Override | |||
public boolean isExternal() { | |||
return true; | |||
} | |||
@Override | |||
public Set<String> getTags() { | |||
return Collections.emptySet(); | |||
} | |||
@Override | |||
public DebtRemediationFunction getRemediationFunction() { | |||
return null; | |||
} | |||
@Override | |||
public String getPluginKey() { | |||
return pluginKey; | |||
} |
@@ -44,7 +44,7 @@ import org.sonar.db.organization.OrganizationDto; | |||
import org.sonar.db.user.UserDto; | |||
import org.sonar.server.badge.ws.SvgGenerator.Color; | |||
import org.sonar.server.component.ComponentFinder; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.ws.TestResponse; | |||
import org.sonar.server.ws.WsActionTester; |
@@ -42,7 +42,6 @@ import static org.sonar.server.component.ws.FilterParser.Operator.IN; | |||
import static org.sonar.server.component.ws.FilterParser.Operator.LT; | |||
import static org.sonar.server.component.ws.FilterParser.Operator.LTE; | |||
import static org.sonar.server.component.ws.ProjectMeasuresQueryFactory.newProjectMeasuresQuery; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.Level.OK; | |||
public class ProjectMeasuresQueryFactoryTest { | |||
@@ -98,7 +97,7 @@ public class ProjectMeasuresQueryFactoryTest { | |||
ProjectMeasuresQuery query = newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("alert_status").setOperator(EQ).setValue("OK").build()), | |||
emptySet()); | |||
assertThat(query.getQualityGateStatus().get().name()).isEqualTo(OK.name()); | |||
assertThat(query.getQualityGateStatus().get().name()).isEqualTo("OK"); | |||
} | |||
@Test |
@@ -83,9 +83,6 @@ import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE; | |||
import static org.sonar.api.server.ws.WebService.Param.SORT; | |||
import static org.sonar.api.utils.DateUtils.formatDateTime; | |||
import static org.sonar.core.util.stream.MoreCollectors.toList; | |||
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.DATA; | |||
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.PERCENT; | |||
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.RATING; | |||
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001; | |||
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_002; | |||
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_003; | |||
@@ -199,7 +196,7 @@ public class SearchProjectsActionTest { | |||
OrganizationDto organization1Dto = db.organizations().insert(dto -> dto.setKey("my-org-key-1").setName("Foo")); | |||
OrganizationDto organization2Dto = db.organizations().insert(dto -> dto.setKey("my-org-key-2").setName("Bar")); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT")); | |||
ComponentDto project1 = insertProject(organization1Dto, c -> c | |||
.setDbKey(KEY_PROJECT_EXAMPLE_001) | |||
.setName("My Project 1") | |||
@@ -302,7 +299,7 @@ public class SearchProjectsActionTest { | |||
userSession.logIn(); | |||
OrganizationDto organization1 = db.organizations().insert(); | |||
OrganizationDto organization2 = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT")); | |||
MetricDto ncloc = db.measures().insertMetric(c -> c.setKey(NCLOC).setValueType(INT.name())); | |||
ComponentDto project1 = insertProject(organization1, new Measure(coverage, c -> c.setValue(81d)), new Measure(ncloc, c -> c.setValue(10_000d))); | |||
ComponentDto project2 = insertProject(organization1, new Measure(coverage, c -> c.setValue(80d)), new Measure(ncloc, c -> c.setValue(10_000d))); | |||
@@ -339,7 +336,7 @@ public class SearchProjectsActionTest { | |||
public void filter_projects_by_languages() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType(DATA.name())); | |||
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA")); | |||
ComponentDto project1 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18"))); | |||
ComponentDto project2 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=3;xoo=9"))); | |||
ComponentDto project3 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1"))); | |||
@@ -397,7 +394,7 @@ public class SearchProjectsActionTest { | |||
public void filter_projects_by_coverage() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT")); | |||
ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(80d))); | |||
ComponentDto project2 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(85d))); | |||
ComponentDto project3 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d))); | |||
@@ -411,7 +408,7 @@ public class SearchProjectsActionTest { | |||
public void filter_projects_by_new_coverage() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType("PERCENT")); | |||
ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(80d))); | |||
ComponentDto project2 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(85d))); | |||
ComponentDto project3 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(10d))); | |||
@@ -425,7 +422,7 @@ public class SearchProjectsActionTest { | |||
public void filter_projects_by_duplications() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name())); | |||
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT")); | |||
ComponentDto project1 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(80d))); | |||
ComponentDto project2 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(85d))); | |||
ComponentDto project3 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(10d))); | |||
@@ -439,8 +436,8 @@ public class SearchProjectsActionTest { | |||
public void filter_projects_by_no_duplication() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT")); | |||
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT")); | |||
ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d))); | |||
ComponentDto project2 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(0d))); | |||
ComponentDto project3 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(79d))); | |||
@@ -454,8 +451,8 @@ public class SearchProjectsActionTest { | |||
public void filter_projects_by_no_duplication_should_not_return_projects_with_duplication() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT")); | |||
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT")); | |||
insertProject(organizationDto, new Measure(duplications, c -> c.setValue(10d)), new Measure(coverage, c -> c.setValue(50d))); | |||
SearchProjectsWsResponse result = call(request.setFilter("duplicated_lines_density = NO_DATA")); | |||
@@ -467,7 +464,7 @@ public class SearchProjectsActionTest { | |||
public void filter_projects_by_new_duplications() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto newDuplications = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name())); | |||
MetricDto newDuplications = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT")); | |||
ComponentDto project1 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(80d))); | |||
ComponentDto project2 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(85d))); | |||
ComponentDto project3 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(10d))); | |||
@@ -635,7 +632,7 @@ public class SearchProjectsActionTest { | |||
public void return_languages_facet() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType(DATA.name())); | |||
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA")); | |||
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18"))); | |||
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5;xoo=19"))); | |||
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1"))); | |||
@@ -658,7 +655,7 @@ public class SearchProjectsActionTest { | |||
public void return_languages_facet_with_language_having_no_project_if_language_is_in_filter() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType(DATA.name())); | |||
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA")); | |||
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6"))); | |||
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5"))); | |||
@@ -723,7 +720,7 @@ public class SearchProjectsActionTest { | |||
public void return_rating_facet(String ratingMetricKey) { | |||
userSession.logIn(); | |||
OrganizationDto organization = db.organizations().insert(); | |||
MetricDto ratingMetric = db.measures().insertMetric(c -> c.setKey(ratingMetricKey).setValueType(RATING.name())); | |||
MetricDto ratingMetric = db.measures().insertMetric(c -> c.setKey(ratingMetricKey).setValueType("RATING")); | |||
insertProject(organization, new Measure(ratingMetric, c -> c.setValue(1d))); | |||
insertProject(organization, new Measure(ratingMetric, c -> c.setValue(1d))); | |||
insertProject(organization, new Measure(ratingMetric, c -> c.setValue(3d))); | |||
@@ -749,7 +746,7 @@ public class SearchProjectsActionTest { | |||
public void return_new_rating_facet(String newRatingMetricKey) { | |||
userSession.logIn(); | |||
OrganizationDto organization = db.organizations().insert(); | |||
MetricDto newRatingMetric = db.measures().insertMetric(c -> c.setKey(newRatingMetricKey).setValueType(RATING.name())); | |||
MetricDto newRatingMetric = db.measures().insertMetric(c -> c.setKey(newRatingMetricKey).setValueType("RATING")); | |||
insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(1d))); | |||
insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(1d))); | |||
insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(3d))); | |||
@@ -774,7 +771,7 @@ public class SearchProjectsActionTest { | |||
public void return_coverage_facet() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT")); | |||
insertProject(organizationDto); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(80d))); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(85d))); | |||
@@ -800,7 +797,7 @@ public class SearchProjectsActionTest { | |||
public void return_new_coverage_facet() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType("PERCENT")); | |||
insertProject(organizationDto); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(80d))); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(85d))); | |||
@@ -826,7 +823,7 @@ public class SearchProjectsActionTest { | |||
public void return_duplications_facet() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT")); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d))); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(15d))); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(5d))); | |||
@@ -852,7 +849,7 @@ public class SearchProjectsActionTest { | |||
public void return_new_duplications_facet() { | |||
userSession.logIn(); | |||
OrganizationDto organizationDto = db.organizations().insert(); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name())); | |||
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT")); | |||
insertProject(organizationDto); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(10d))); | |||
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(15d))); |
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.ce.settings; | |||
package org.sonar.server.computation.task.projectanalysis.analysis; | |||
import org.junit.Rule; | |||
import org.junit.Test; | |||
@@ -25,7 +25,6 @@ import org.sonar.api.config.Configuration; | |||
import org.sonar.api.config.internal.MapSettings; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.Branch; | |||
import org.sonar.server.computation.task.projectanalysis.component.DefaultBranchImpl; | |||
import static org.assertj.core.api.Assertions.assertThat; |
@@ -25,7 +25,7 @@ import org.junit.Test; | |||
import org.sonar.api.config.Configuration; | |||
import org.sonar.api.config.internal.MapSettings; | |||
import org.sonar.api.utils.System2; | |||
import org.sonar.ce.settings.ProjectConfigurationFactory; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.ProjectConfigurationFactory; | |||
import org.sonar.db.DbClient; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.component.ComponentDto; |
@@ -20,13 +20,13 @@ | |||
package org.sonar.server.computation.task.projectanalysis.formula.counter; | |||
import org.junit.Test; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.D; | |||
public class RatingValueTest { | |||
@@ -38,6 +38,7 @@ import org.sonar.db.rule.RuleDefinitionDto; | |||
import org.sonar.db.rule.RuleDto; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule; | |||
import org.sonar.server.rule.ExternalRuleCreator; | |||
import org.sonar.server.rule.NewExternalRule; | |||
import org.sonar.server.rule.index.RuleIndexer; | |||
import static org.assertj.core.api.Assertions.assertThat; |
@@ -27,6 +27,7 @@ import java.util.function.Supplier; | |||
import org.junit.rules.ExternalResource; | |||
import org.sonar.api.rule.RuleKey; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.server.rule.NewExternalRule; | |||
import static com.google.common.base.Preconditions.checkArgument; | |||
import static java.util.Objects.requireNonNull; |
@@ -28,8 +28,8 @@ import org.sonar.server.computation.task.projectanalysis.metric.MetricImpl; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
public class BestValueOptimizationTest { | |||
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.step; | |||
package org.sonar.server.computation.task.projectanalysis.measure; | |||
import org.junit.Rule; | |||
import org.junit.Test; | |||
@@ -27,10 +27,8 @@ import org.mockito.InOrder; | |||
import org.sonar.api.measures.CoreMetrics; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule; | |||
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolderRule; | |||
import org.sonar.server.computation.task.projectanalysis.measure.Measure; | |||
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepositoryRule; | |||
import org.sonar.server.computation.task.projectanalysis.measure.PostMeasuresComputationCheck.Context; | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule; | |||
import org.sonar.server.computation.task.step.PostMeasuresComputationCheck.Context; | |||
import org.sonar.server.project.Project; | |||
import static org.assertj.core.api.Assertions.assertThat; |
@@ -31,6 +31,8 @@ import org.sonar.server.computation.task.projectanalysis.issue.ComponentIssuesRe | |||
import org.sonar.server.computation.task.projectanalysis.measure.Measure; | |||
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepositoryRule; | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule; | |||
import org.sonar.server.measure.DebtRatingGrid; | |||
import org.sonar.server.measure.Rating; | |||
import static java.util.Collections.singletonList; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
@@ -56,9 +58,9 @@ import static org.sonar.server.computation.task.projectanalysis.component.Report | |||
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.entryOf; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.toEntries; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.E; | |||
public class MaintainabilityMeasuresVisitorTest { | |||
@@ -43,6 +43,8 @@ import org.sonar.server.computation.task.projectanalysis.period.Period; | |||
import org.sonar.server.computation.task.projectanalysis.period.PeriodHolderRule; | |||
import org.sonar.server.computation.task.projectanalysis.scm.Changeset; | |||
import org.sonar.server.computation.task.projectanalysis.scm.ScmInfoRepositoryRule; | |||
import org.sonar.server.measure.DebtRatingGrid; | |||
import org.sonar.server.measure.Rating; | |||
import static com.google.common.base.Preconditions.checkArgument; | |||
import static org.mockito.Mockito.mock; | |||
@@ -63,8 +65,8 @@ import static org.sonar.server.computation.task.projectanalysis.component.Compon | |||
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.PROJECT; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureAssert.assertThat; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.D; | |||
public class NewMaintainabilityMeasuresVisitorTest { | |||
@@ -39,6 +39,7 @@ import org.sonar.server.computation.task.projectanalysis.measure.MeasureReposito | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule; | |||
import org.sonar.server.computation.task.projectanalysis.period.Period; | |||
import org.sonar.server.computation.task.projectanalysis.period.PeriodHolderRule; | |||
import org.sonar.server.measure.Rating; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.api.issue.Issue.RESOLUTION_FIXED; | |||
@@ -60,11 +61,11 @@ import static org.sonar.server.computation.task.projectanalysis.component.Compon | |||
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.PROJECT; | |||
import static org.sonar.server.computation.task.projectanalysis.component.ReportComponent.builder; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.D; | |||
import static org.sonar.server.measure.Rating.E; | |||
public class NewReliabilityAndSecurityRatingMeasuresVisitorTest { | |||
@@ -37,6 +37,7 @@ import org.sonar.server.computation.task.projectanalysis.issue.FillComponentIssu | |||
import org.sonar.server.computation.task.projectanalysis.measure.Measure; | |||
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepositoryRule; | |||
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule; | |||
import org.sonar.server.measure.Rating; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.api.issue.Issue.RESOLUTION_FIXED; | |||
@@ -61,11 +62,11 @@ import static org.sonar.server.computation.task.projectanalysis.measure.Measure. | |||
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.entryOf; | |||
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.toEntries; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.D; | |||
import static org.sonar.server.measure.Rating.E; | |||
public class ReliabilityAndSecurityRatingMeasuresVisitorTest { | |||
@@ -30,7 +30,7 @@ import org.sonar.db.DbTester; | |||
import org.sonar.db.rule.RuleDao; | |||
import org.sonar.db.rule.RuleDefinitionDto; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule; | |||
import org.sonar.server.computation.task.projectanalysis.issue.NewExternalRule; | |||
import org.sonar.server.rule.NewExternalRule; | |||
import org.sonar.server.computation.task.projectanalysis.issue.RuleRepositoryImpl; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
import org.sonar.server.es.EsTester; |
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.projectanalysis.qualitymodel; | |||
package org.sonar.server.measure; | |||
import org.junit.Before; | |||
import org.junit.Rule; | |||
@@ -25,11 +25,11 @@ import org.junit.Test; | |||
import org.junit.rules.ExpectedException; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D; | |||
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E; | |||
import static org.sonar.server.measure.Rating.A; | |||
import static org.sonar.server.measure.Rating.B; | |||
import static org.sonar.server.measure.Rating.C; | |||
import static org.sonar.server.measure.Rating.D; | |||
import static org.sonar.server.measure.Rating.E; | |||
public class DebtRatingGridTest { | |||
@@ -35,8 +35,8 @@ import org.sonar.api.rule.Severity; | |||
import org.sonar.api.rules.RuleType; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.issue.IssueGroupDto; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.DebtRatingGrid; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.DebtRatingGrid; | |||
import org.sonar.server.measure.Rating; | |||
import static java.util.Arrays.asList; | |||
import static org.assertj.core.api.Assertions.assertThat; |
@@ -47,7 +47,7 @@ import org.sonar.db.component.ComponentTesting; | |||
import org.sonar.db.measure.LiveMeasureDto; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.db.organization.OrganizationDto; | |||
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating; | |||
import org.sonar.server.measure.Rating; | |||
import org.sonar.server.es.ProjectIndexer; | |||
import org.sonar.server.es.TestProjectIndexers; | |||
import org.sonar.server.qualitygate.EvaluatedQualityGate; |
@@ -33,7 +33,6 @@ import org.sonar.db.measure.LiveMeasureDto; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.db.organization.OrganizationDto; | |||
import org.sonar.server.component.TestComponentFinder; | |||
import org.sonar.server.computation.task.projectanalysis.measure.Measure; | |||
import org.sonar.server.exceptions.BadRequestException; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
@@ -53,15 +52,14 @@ import static org.sonar.api.web.UserRole.USER; | |||
import static org.sonar.db.component.BranchType.PULL_REQUEST; | |||
import static org.sonar.db.component.ComponentTesting.newFileDto; | |||
import static org.sonar.db.component.ComponentTesting.newProjectCopy; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_PULL_REQUEST; | |||
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.INT; | |||
import static org.sonar.test.JsonAssert.assertJson; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.DEPRECATED_PARAM_COMPONENT_ID; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_ADDITIONAL_FIELDS; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_BRANCH; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_COMPONENT; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_DEVELOPER_ID; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_METRIC_KEYS; | |||
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_PULL_REQUEST; | |||
import static org.sonar.test.JsonAssert.assertJson; | |||
public class ComponentActionTest { | |||
@@ -95,7 +93,7 @@ public class ComponentActionTest { | |||
public void provided_project() { | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
ComponentWsResponse response = newRequest(project.getKey(), metric.getKey()); | |||
@@ -109,7 +107,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
db.components().insertSnapshot(project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
String response = ws.newRequest() | |||
.setParam(PARAM_COMPONENT, project.getKey()) | |||
@@ -128,7 +126,7 @@ public class ComponentActionTest { | |||
ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("my_branch")); | |||
SnapshotDto analysis = db.components().insertSnapshot(branch); | |||
ComponentDto file = db.components().insertComponent(newFileDto(branch)); | |||
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType(INT.name())); | |||
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType("INT")); | |||
LiveMeasureDto measure = db.measures().insertLiveMeasure(file, complexity, m -> m.setValue(12.0d).setVariation(2.0d)); | |||
ComponentWsResponse response = ws.newRequest() | |||
@@ -151,7 +149,7 @@ public class ComponentActionTest { | |||
ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("pr-123").setBranchType(PULL_REQUEST)); | |||
SnapshotDto analysis = db.components().insertSnapshot(branch); | |||
ComponentDto file = db.components().insertComponent(newFileDto(branch)); | |||
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType(INT.name())); | |||
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType("INT")); | |||
LiveMeasureDto measure = db.measures().insertLiveMeasure(file, complexity, m -> m.setValue(12.0d).setVariation(2.0d)); | |||
ComponentWsResponse response = ws.newRequest() | |||
@@ -174,7 +172,7 @@ public class ComponentActionTest { | |||
ComponentDto view = db.components().insertView(); | |||
db.components().insertSnapshot(view); | |||
ComponentDto projectCopy = db.components().insertComponent(newProjectCopy("project-uuid-copy", project, view)); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
ComponentWsResponse response = newRequest(projectCopy.getKey(), metric.getKey()); | |||
@@ -187,7 +185,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
db.components().insertSnapshot(project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
ComponentWsResponse response = newRequest(project.getKey(), metric.getKey()); | |||
@@ -199,7 +197,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
userSession.addProjectPermission(USER, project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
ComponentWsResponse response = ws.newRequest() | |||
.setParam("componentId", project.uuid()) | |||
@@ -214,7 +212,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
userSession.addProjectPermission(USER, project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
ComponentWsResponse response = ws.newRequest() | |||
.setParam("componentKey", project.getKey()) | |||
@@ -229,7 +227,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
MetricDto metricWithoutDomain = db.measures().insertMetric(m -> m | |||
.setValueType(Measure.ValueType.INT.name()) | |||
.setValueType("INT") | |||
.setDomain(null)); | |||
db.measures().insertLiveMeasure(project, metricWithoutDomain); | |||
@@ -251,7 +249,7 @@ public class ComponentActionTest { | |||
ComponentDto file = db.components().insertComponent(newFileDto(project)); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
MetricDto metric = db.measures().insertMetric(m -> m | |||
.setValueType(Measure.ValueType.INT.name()) | |||
.setValueType("INT") | |||
.setBestValue(7.0d) | |||
.setOptimizedBestValue(true) | |||
.setDomain(null)); | |||
@@ -273,7 +271,7 @@ public class ComponentActionTest { | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
db.components().insertSnapshot(project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
expectedException.expect(NotFoundException.class); | |||
expectedException.expectMessage("The Developer Cockpit feature has been dropped. The specified developer cannot be found."); | |||
@@ -289,8 +287,8 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
db.components().insertSnapshot(project); | |||
db.measures().insertMetric(m -> m.setKey("ncloc").setValueType(INT.name())); | |||
db.measures().insertMetric(m -> m.setKey("complexity").setValueType(INT.name())); | |||
db.measures().insertMetric(m -> m.setKey("ncloc").setValueType("INT")); | |||
db.measures().insertMetric(m -> m.setKey("complexity").setValueType("INT")); | |||
expectedException.expect(NotFoundException.class); | |||
expectedException.expectMessage("The following metric keys are not found: unknown-metric, another-unknown-metric"); | |||
@@ -315,7 +313,7 @@ public class ComponentActionTest { | |||
userSession.logIn(); | |||
ComponentDto project = db.components().insertPrivateProject(); | |||
db.components().insertSnapshot(project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
expectedException.expect(ForbiddenException.class); | |||
@@ -324,7 +322,7 @@ public class ComponentActionTest { | |||
@Test | |||
public void fail_when_component_does_not_exist() { | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
expectedException.expect(NotFoundException.class); | |||
expectedException.expectMessage("Component key 'project-key' not found"); | |||
@@ -340,7 +338,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertPrivateProject(p -> p.setEnabled(false)); | |||
userSession.addProjectPermission(UserRole.USER, project); | |||
userSession.addProjectPermission(USER, project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
expectedException.expect(NotFoundException.class); | |||
expectedException.expectMessage(String.format("Component key '%s' not found", project.getKey())); | |||
@@ -391,7 +389,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertMainBranch(organization); | |||
userSession.logIn().addProjectPermission(UserRole.USER, project); | |||
ComponentDto branch = db.components().insertProjectBranch(project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
expectedException.expect(NotFoundException.class); | |||
expectedException.expectMessage(format("Component key '%s' not found", branch.getDbKey())); | |||
@@ -408,7 +406,7 @@ public class ComponentActionTest { | |||
ComponentDto project = db.components().insertMainBranch(organization); | |||
userSession.logIn().addProjectPermission(UserRole.USER, project); | |||
ComponentDto branch = db.components().insertProjectBranch(project); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name())); | |||
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT")); | |||
expectedException.expect(NotFoundException.class); | |||
expectedException.expectMessage(format("Component id '%s' not found", branch.uuid())); |
@@ -216,221 +216,4 @@ public class ConditionEvaluatorTest { | |||
} | |||
} | |||
// @Test | |||
// public void testEquals_for_String() { | |||
// Metric metric = createMetric(STRING); | |||
// Measure measure = newMeasureBuilder().create("TEST"); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "TEST"), | |||
// measure)).hasLevel(ERROR).hasValue("TEST"); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "TEST2"), | |||
// measure)).hasLevel(OK).hasValue("TEST"); | |||
// } | |||
// | |||
// @Test | |||
// | |||
// public void testNotEquals() { | |||
// Metric metric = createMetric(STRING); | |||
// Measure measure = newMeasureBuilder().create("TEST"); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "TEST"), | |||
// measure)).hasLevel(OK).hasValue("TEST"); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "TEST2"), | |||
// measure)).hasLevel(ERROR).hasValue("TEST"); | |||
// } | |||
// | |||
// @Test | |||
// public void testEquals_Percent() { | |||
// Metric metric = createMetric(PERCENT); | |||
// Measure measure = newMeasureBuilder().create(10.2d, 1, null); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"), | |||
// measure)).hasLevel(ERROR).hasValue(10.2d); | |||
// } | |||
// | |||
// @Test | |||
// public void testEquals_Float() { | |||
// Metric metric = createMetric(PERCENT); | |||
// Measure measure = newMeasureBuilder().create(10.2d, 1, null); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"), | |||
// measure)).hasLevel(ERROR).hasValue(10.2d); | |||
// } | |||
// | |||
// @Test | |||
// public void testEquals_Int() { | |||
// Metric metric = createMetric(INT); | |||
// Measure measure = newMeasureBuilder().create(10, null); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10"), measure)).hasLevel(ERROR).hasValue(10); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"), | |||
// measure)).hasLevel(ERROR).hasValue(10); | |||
// } | |||
// | |||
// @Test | |||
// public void testEquals_Level() { | |||
// Metric metric = createMetric(LEVEL); | |||
// Measure measure = newMeasureBuilder().create(ERROR); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, ERROR.name()), | |||
// measure)).hasLevel(ERROR).hasValue(ERROR.name()); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, OK.name()), | |||
// measure)).hasLevel(OK).hasValue(ERROR.name()); | |||
// } | |||
// | |||
// @Test | |||
// public void testNotEquals_Level() { | |||
// Metric metric = createMetric(LEVEL); | |||
// Measure measure = newMeasureBuilder().create(ERROR); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, OK.name()), | |||
// measure)).hasLevel(ERROR).hasValue(ERROR.name()); | |||
// } | |||
// | |||
// @Test | |||
// public void testEquals_BOOL() { | |||
// Metric metric = createMetric(BOOL); | |||
// Measure measure = newMeasureBuilder().create(false, null); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "1"), measure)).hasLevel(OK).hasValue(false); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "0"), | |||
// measure)).hasLevel(ERROR).hasValue(false); | |||
// } | |||
// | |||
// @Test | |||
// public void testNotEquals_BOOL() { | |||
// Metric metric = createMetric(BOOL); | |||
// Measure measure = newMeasureBuilder().create(false, null); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "1"), | |||
// measure)).hasLevel(ERROR).hasValue(false); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "0"), | |||
// measure)).hasLevel(OK).hasValue(false); | |||
// } | |||
// | |||
// @Test | |||
// public void getLevel_throws_IEA_if_error_threshold_is_not_parsable_boolean() { | |||
// Metric metric = createMetric(BOOL); | |||
// Measure measure = newMeasureBuilder().create(false, null); | |||
// | |||
// expectedException.expect(IllegalArgumentException.class); | |||
// expectedException.expectMessage("Quality Gate: Unable to parse value 'polop' to compare against name"); | |||
// | |||
// underTest.evaluate(createErrorCondition(metric, EQUALS, "polop"), measure); | |||
// } | |||
// | |||
// @Test | |||
// public void testEquals_work_duration() { | |||
// Metric metric = createMetric(WORK_DUR); | |||
// Measure measure = newMeasureBuilder().create(60l, null); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "60"), measure)).hasLevel(ERROR); | |||
// } | |||
// | |||
// @Test | |||
// public void getLevel_throws_IEA_if_error_threshold_is_not_parsable_long() { | |||
// Metric metric = createMetric(WORK_DUR); | |||
// Measure measure = newMeasureBuilder().create(60l, null); | |||
// | |||
// expectedException.expect(IllegalArgumentException.class); | |||
// expectedException.expectMessage("Quality Gate: Unable to parse value 'polop' to compare against name"); | |||
// | |||
// underTest.evaluate(createErrorCondition(metric, EQUALS, "polop"), measure); | |||
// } | |||
// | |||
// @Test | |||
// public void testErrorAndWarningLevel() { | |||
// Metric metric = createMetric(FLOAT); | |||
// Measure measure = newMeasureBuilder().create(10.2d, 1, null); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"), measure)).hasLevel(ERROR); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.1"), measure)).hasLevel(OK); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// EQUALS.getDbValue(), "10.3", "10.2", false), measure)).hasLevel(Measure.Level.WARN); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// LESS_THAN.getDbValue(), "10.3", "10.2", false), measure)).hasLevel(Measure.Level.ERROR); | |||
// } | |||
// | |||
// @Test | |||
// public void condition_is_always_ok_when_measure_is_noValue() { | |||
// for (Metric.MetricType metricType : from(asList(values())).filter(not(in(ImmutableSet.of(DATA, LEVEL))))) { | |||
// Metric metric = createMetric(metricType); | |||
// Measure measure = newMeasureBuilder().createNoValue(); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"), measure)).hasLevel(OK); | |||
// } | |||
// } | |||
// | |||
// @Test | |||
// public void testUnsupportedType() { | |||
// Metric metric = createMetric(DATA); | |||
// Measure measure = newMeasureBuilder().create("3.14159265358"); | |||
// | |||
// expectedException.expect(IllegalArgumentException.class); | |||
// expectedException.expectMessage("Conditions on MetricType DATA are not supported"); | |||
// | |||
// underTest.evaluate(createErrorCondition(metric, EQUALS, "1.60217657"), measure); | |||
// } | |||
// | |||
// @Test | |||
// public void condition_on_period() { | |||
// for (Metric.MetricType metricType : ImmutableList.of(FLOAT, INT, WORK_DUR)) { | |||
// Metric metric = createMetric(metricType); | |||
// Measure measure = newMeasureBuilder().setVariation(3d).createNoValue(); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// GREATER_THAN.getDbValue(), "3", null, true), measure)).hasLevel(OK); | |||
// } | |||
// } | |||
// | |||
// @Test | |||
// public void condition_on_period_without_value_is_OK() { | |||
// Metric metric = createMetric(FLOAT); | |||
// Measure measure = newMeasureBuilder().createNoValue(); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// GREATER_THAN.getDbValue(), "3", null, true), measure)).hasLevel(OK).hasValue(null); | |||
// } | |||
// | |||
// @Test | |||
// public void condition_on_rating() throws Exception { | |||
// Metric metric = createMetric(RATING); | |||
// Measure measure = newMeasureBuilder().create(4, "D"); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// GREATER_THAN.getDbValue(), "4", null, false), measure)).hasLevel(OK).hasValue(4); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// GREATER_THAN.getDbValue(), "2", null, false), measure)).hasLevel(ERROR).hasValue(4); | |||
// } | |||
// | |||
// @Test | |||
// public void condition_on_rating_on_leak_period() throws Exception { | |||
// Metric metric = createMetric(RATING); | |||
// Measure measure = newMeasureBuilder().setVariation(4d).createNoValue(); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// GREATER_THAN.getDbValue(), "5", null, true), measure)).hasLevel(OK).hasValue(4); | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// GREATER_THAN.getDbValue(), "2", null, true), measure)).hasLevel(ERROR).hasValue(4); | |||
// } | |||
// | |||
// @Test | |||
// public void condition_on_rating_on_leak_period_when_variation_is_zero() throws Exception { | |||
// Metric metric = createMetric(RATING); | |||
// Measure measure = newMeasureBuilder().setVariation(0d).createNoValue(); | |||
// | |||
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric, | |||
// GREATER_THAN.getDbValue(), "4", null, true), measure)).hasLevel(OK).hasValue(0); | |||
// } | |||
// | |||
// private static org.sonar.server.computation.task.projectanalysis.qualitygate.Condition createErrorCondition(Metric metric, | |||
// org.sonar.server.computation.task.projectanalysis.qualitygate.Condition.Operator operator, String errorThreshold) { | |||
// return new Condition(metric, operator.getDbValue(), errorThreshold, null, false); | |||
// } | |||
// | |||
// private static MetricImpl createMetric(Metric.MetricType metricType) { | |||
// return new MetricImpl(1, "key", "name", metricType); | |||
// } | |||
} |
@@ -24,8 +24,7 @@ import org.sonar.api.rule.RuleKey; | |||
import org.sonar.api.utils.System2; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.server.computation.task.projectanalysis.issue.NewExternalRule; | |||
import org.sonar.server.computation.task.projectanalysis.issue.Rule; | |||
import org.sonar.db.rule.RuleDto; | |||
import org.sonar.server.es.EsTester; | |||
import org.sonar.server.rule.index.RuleIndexer; | |||
@@ -51,7 +50,7 @@ public class ExternalRuleCreatorTest { | |||
.setName("name") | |||
.build(); | |||
Rule rule1 = underTest.persistAndIndex(dbSession, externalRule); | |||
RuleDto rule1 = underTest.persistAndIndex(dbSession, externalRule); | |||
assertThat(rule1).isNotNull(); | |||
assertThat(rule1.isExternal()).isTrue(); | |||
@@ -59,7 +58,7 @@ public class ExternalRuleCreatorTest { | |||
assertThat(rule1.getKey()).isEqualTo(ruleKey); | |||
assertThat(rule1.getPluginKey()).isEqualTo("eslint"); | |||
assertThat(rule1.getName()).isEqualTo("name"); | |||
assertThat(rule1.getType()).isNull(); | |||
assertThat(rule1.getType()).isEqualTo(0); | |||
} | |||
} |
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.computation.task.projectanalysis.issue; | |||
package org.sonar.server.rule; | |||
import org.junit.Test; | |||
import org.junit.rules.ExpectedException; |