Skip to content

Commit 811c7d3

Browse files
SLVS-1503 Fix breaking change in SlCore caused by renaming parameter issuesByFileUri to hotspotsByFileUri in raiseHotspots method.
1 parent 6498da7 commit 811c7d3

File tree

5 files changed

+88
-3
lines changed

5 files changed

+88
-3
lines changed

src/SLCore.Listeners.UnitTests/Implementation/Analysis/AnalysisListenerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public void RaiseIssues_RaisesFinding()
9898
[TestMethod]
9999
public void RaiseHotspots_RaisesFinding()
100100
{
101-
var raiseIssueParams = new RaiseFindingParams<RaisedHotspotDto>(default, default, default, default);
101+
var raiseIssueParams = new RaiseHotspotParams(default, default, default, default);
102102
var raisedFindingProcessor = Substitute.For<IRaisedFindingProcessor>();
103103
var testSubject = CreateTestSubject(raisedFindingProcessor: raisedFindingProcessor);
104104

src/SLCore.Listeners/Implementation/Analysis/AnalysisListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,6 @@ public void DidChangeAnalysisReadiness(DidChangeAnalysisReadinessParams paramete
7272
public void RaiseIssues(RaiseFindingParams<RaisedIssueDto> parameters)
7373
=> raisedFindingProcessor.RaiseFinding(parameters);
7474

75-
public void RaiseHotspots(RaiseFindingParams<RaisedHotspotDto> parameters)
75+
public void RaiseHotspots(RaiseHotspotParams parameters)
7676
=> raisedFindingProcessor.RaiseFinding(parameters);
7777
}

src/SLCore.UnitTests/Listener/Analysis/RaiseIssuesParamsTests.cs

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,82 @@ [new ImpactDto(SoftwareQuality.SECURITY, ImpactSeverity.HIGH)],
102102
deserialized.Should().BeEquivalentTo(expected, options =>
103103
options.ComparingByMembers<RaiseFindingParams<RaisedIssueDto>>().ComparingByMembers<RaisedIssueDto>());
104104
}
105+
106+
[TestMethod]
107+
public void RaiseHotspotParams_DeserializedCorrectly()
108+
{
109+
var expected = new RaiseHotspotParams("SLVS_Bound_VS2019",
110+
new Dictionary<FileUri, List<RaisedHotspotDto>>
111+
{
112+
{
113+
new FileUri("file:///C:/Users/developer/Documents/Repos/sonarlint-visualstudio-sampleprojects%20AAA%20ЖЖЖЖ/bound/sonarcloud/SLVS_Samples_Bound_VS2019/Secrets/ShouldExclude/Excluded.yml"),
114+
[new RaisedHotspotDto(Guid.Parse("10bd4422-7d55-402f-889c-e080dbe4c781"),
115+
null,
116+
"secrets:S6336",
117+
"Make sure this Alibaba Cloud Access Key Secret gets revoked, changed, and removed from the code.",
118+
IssueSeverity.BLOCKER,
119+
RuleType.VULNERABILITY,
120+
CleanCodeAttribute.TRUSTWORTHY,
121+
[new ImpactDto(SoftwareQuality.SECURITY, ImpactSeverity.HIGH)],
122+
DateTimeOffset.FromUnixTimeMilliseconds(1718182975467),
123+
true,
124+
false,
125+
new TextRangeDto(14, 24, 14, 54),
126+
[],
127+
[],
128+
null,
129+
VulnerabilityProbability.HIGH,
130+
HotspotStatus.TO_REVIEW)]
131+
}
132+
},
133+
false,
134+
Guid.Parse("11ec4b5a-8ff6-4211-ab95-8c16eb8c7f0a"));
135+
136+
var serialized =
137+
"""
138+
{
139+
"configurationScopeId": "SLVS_Bound_VS2019",
140+
"hotspotsByFileUri": {
141+
"file:///C:/Users/developer/Documents/Repos/sonarlint-visualstudio-sampleprojects%20AAA%20ЖЖЖЖ/bound/sonarcloud/SLVS_Samples_Bound_VS2019/Secrets/ShouldExclude/Excluded.yml": [
142+
{
143+
"id": "10bd4422-7d55-402f-889c-e080dbe4c781",
144+
"serverKey": null,
145+
"ruleKey": "secrets:S6336",
146+
"primaryMessage": "Make sure this Alibaba Cloud Access Key Secret gets revoked, changed, and removed from the code.",
147+
"severity": "BLOCKER",
148+
"type": "VULNERABILITY",
149+
"cleanCodeAttribute": "TRUSTWORTHY",
150+
"impacts": [
151+
{
152+
"softwareQuality": "SECURITY",
153+
"impactSeverity": "HIGH"
154+
}
155+
],
156+
"introductionDate": 1718182975467,
157+
"isOnNewCode": true,
158+
"resolved": false,
159+
"textRange": {
160+
"startLine": 14,
161+
"startLineOffset": 24,
162+
"endLine": 14,
163+
"endLineOffset": 54
164+
},
165+
"flows": [],
166+
"quickFixes": [],
167+
"ruleDescriptionContextKey": null,
168+
"vulnerabilityProbability": "HIGH",
169+
"status": "TO_REVIEW"
170+
}
171+
]
172+
},
173+
"isIntermediatePublication": false,
174+
"analysisId": "11ec4b5a-8ff6-4211-ab95-8c16eb8c7f0a"
175+
}
176+
""";
177+
178+
var deserialized = JsonConvert.DeserializeObject<RaiseHotspotParams>(serialized);
179+
180+
deserialized.Should().BeEquivalentTo(expected, options =>
181+
options.ComparingByMembers<RaiseHotspotParams>().ComparingByMembers<RaisedHotspotDto>());
182+
}
105183
}

src/SLCore/Listener/Analysis/IAnalysisListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ internal interface IAnalysisListener : ISLCoreListener
2929

3030
void RaiseIssues(RaiseFindingParams<RaisedIssueDto> parameters);
3131

32-
void RaiseHotspots(RaiseFindingParams<RaisedHotspotDto> parameters);
32+
void RaiseHotspots(RaiseHotspotParams parameters);
3333
}

src/SLCore/Listener/Analysis/RaiseFindingParams.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,10 @@
2424
namespace SonarLint.VisualStudio.SLCore.Listener.Analysis;
2525

2626
public record RaiseFindingParams<T>(string configurationScopeId, Dictionary<FileUri, List<T>> issuesByFileUri, bool isIntermediatePublication, Guid? analysisId) where T : RaisedFindingDto;
27+
28+
public record RaiseHotspotParams(
29+
string configurationScopeId,
30+
Dictionary<FileUri, List<RaisedHotspotDto>> hotspotsByFileUri,
31+
bool isIntermediatePublication,
32+
Guid? analysisId)
33+
: RaiseFindingParams<RaisedHotspotDto>(configurationScopeId, hotspotsByFileUri, isIntermediatePublication, analysisId);

0 commit comments

Comments
 (0)