Skip to content

Commit

Permalink
SLCORE-788 Perform hotspots tracking before raising hotspot (#964)
Browse files Browse the repository at this point in the history
  • Loading branch information
kirill-knize-sonarsource committed May 13, 2024
1 parent acba071 commit be2f183
Show file tree
Hide file tree
Showing 22 changed files with 1,055 additions and 405 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import javax.annotation.Nullable;
import org.sonarsource.sonarlint.core.commons.api.TextRangeWithHash;

public class KnownIssue {
public class KnownFinding {
private final UUID id;
private final String serverKey;
private final TextRangeWithHash textRangeWithHash;
Expand All @@ -34,7 +34,7 @@ public class KnownIssue {
private final String message;
private final Instant introductionDate;

public KnownIssue(UUID id, @Nullable String serverKey, @Nullable TextRangeWithHash textRangeWithHash, @Nullable LineWithHash lineWithHash, String ruleKey, String message,
public KnownFinding(UUID id, @Nullable String serverKey, @Nullable TextRangeWithHash textRangeWithHash, @Nullable LineWithHash lineWithHash, String ruleKey, String message,
Instant introductionDate) {
this.id = id;
this.serverKey = serverKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,12 @@
import org.sonarsource.sonarlint.core.analysis.RuleDetailsForAnalysis;
import org.sonarsource.sonarlint.core.rpc.protocol.backend.analysis.GetRuleDetailsResponse;
import org.sonarsource.sonarlint.core.rpc.protocol.backend.rules.ImpactDto;
import org.sonarsource.sonarlint.core.rpc.protocol.client.hotspot.RaisedHotspotDto;
import org.sonarsource.sonarlint.core.rpc.protocol.client.issue.RaisedIssueDto;
import org.sonarsource.sonarlint.core.rules.RuleDetailsAdapter;
import org.sonarsource.sonarlint.core.tracking.TrackedIssue;

import static java.util.Objects.requireNonNull;
import static org.sonarsource.sonarlint.core.tracking.TextRangeUtils.toTextRangeDto;

public class DtoMapper {
Expand All @@ -49,11 +51,24 @@ public static RaisedIssueDto toRaisedIssueDto(TrackedIssue issue) {
RuleDetailsAdapter.adapt(issue.getSeverity()),
RuleDetailsAdapter.adapt(issue.getType()),
RuleDetailsAdapter.adapt(issue.getCleanCodeAttribute()), RuleDetailsAdapter.toDto(issue.getImpacts()),
issue.getIntroductionDate(), issue.isOnNewCode(), issue.isResolved(),
requireNonNull(issue.getIntroductionDate()), issue.isOnNewCode(), issue.isResolved(),
toTextRangeDto(issue.getTextRangeWithHash()),
issue.getFlows().stream().map(RuleDetailsAdapter::adapt).collect(Collectors.toList()),
issue.getQuickFixes().stream().map(RuleDetailsAdapter::adapt).collect(Collectors.toList()),
issue.getRuleDescriptionContextKey());
}

public static RaisedHotspotDto toRaisedHotspotDto(TrackedIssue issue) {
return new RaisedHotspotDto(issue.getId(), issue.getServerKey(), issue.getRuleKey(), issue.getMessage(),
RuleDetailsAdapter.adapt(issue.getSeverity()),
RuleDetailsAdapter.adapt(issue.getType()),
RuleDetailsAdapter.adapt(issue.getCleanCodeAttribute()), RuleDetailsAdapter.toDto(issue.getImpacts()),
requireNonNull(issue.getIntroductionDate()), issue.isOnNewCode(), issue.isResolved(),
toTextRangeDto(issue.getTextRangeWithHash()),
issue.getFlows().stream().map(RuleDetailsAdapter::adapt).collect(Collectors.toList()),
issue.getQuickFixes().stream().map(RuleDetailsAdapter::adapt).collect(Collectors.toList()),
issue.getRuleDescriptionContextKey(), RuleDetailsAdapter.adapt(issue.getVulnerabilityProbability()));
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,11 @@
import java.util.UUID;
import java.util.stream.Collectors;

import org.sonarsource.sonarlint.core.commons.RuleType;
import org.sonarsource.sonarlint.core.commons.api.SonarLanguage;

import static java.util.stream.Collectors.toList;

public class AnalysisFinishedEvent {
private final UUID analysisId;
private final String configurationScopeId;
Expand Down Expand Up @@ -84,7 +87,11 @@ public Set<SonarLanguage> getDetectedLanguages() {
}

public List<RawIssue> getIssues() {
return issues;
return issues.stream().filter(issue -> !issue.getRuleType().equals(RuleType.SECURITY_HOTSPOT)).collect(toList());
}

public List<RawIssue> getHotspots() {
return issues.stream().filter(issue -> issue.getRuleType().equals(RuleType.SECURITY_HOTSPOT)).collect(toList());
}

public boolean isTrackingEnabled() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
import org.sonarsource.sonarlint.core.sync.SynchronizationService;
import org.sonarsource.sonarlint.core.sync.TaintSynchronizationService;
import org.sonarsource.sonarlint.core.tracking.IssueMatchingService;
import org.sonarsource.sonarlint.core.tracking.KnownIssuesStorageService;
import org.sonarsource.sonarlint.core.tracking.KnownFindingsStorageService;
import org.sonarsource.sonarlint.core.tracking.LocalOnlyIssueRepository;
import org.sonarsource.sonarlint.core.tracking.SecurityHotspotMatchingService;
import org.sonarsource.sonarlint.core.tracking.TaintVulnerabilityTrackingService;
Expand Down Expand Up @@ -175,7 +175,7 @@
SharedConnectedModeSettingsProvider.class,
AnalysisEngineCache.class,
PromotionService.class,
KnownIssuesStorageService.class
KnownFindingsStorageService.class
})
public class SonarLintSpringAppConfig {

Expand Down

0 comments on commit be2f183

Please sign in to comment.