Skip to content

Commit af1514d

Browse files
author
Francisco Duarte
authored
Merge pull request #345 from codacy/fix/severity-sarif
fix: Fix severity level in Sarif CY-3724
2 parents 72ef833 + 4efc2da commit af1514d

File tree

8 files changed

+29
-7
lines changed

8 files changed

+29
-7
lines changed

cli/src/main/scala/com/codacy/analysis/cli/analysis/AnalyseExecutor.scala

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class AnalyseExecutor(formatter: Formatter,
6767
tool.name,
6868
fullToolSpec.map(_.toolApiSpec),
6969
fullToolSpec.map(_.patternDescriptions).getOrElse(Set.empty[PatternDescription]),
70+
fullToolSpec.map(_.tool.prefix),
7071
filteredFiles.readableFiles,
7172
analysisResults)
7273
case metricsTool: MetricsTool =>
@@ -112,10 +113,15 @@ class AnalyseExecutor(formatter: Formatter,
112113
formatter.begin()
113114
executorResults.foreach {
114115
case toolResults: IssuesToolExecutorResult =>
115-
toolResults.analysisResults.foreach(results =>
116-
formatter.addAll(toolResults.toolSpecification, toolResults.patternDescriptions, results.to[List]))
116+
toolResults.analysisResults.foreach(
117+
results =>
118+
formatter.addAll(
119+
toolResults.toolSpecification,
120+
toolResults.patternDescriptions,
121+
toolResults.prefix,
122+
results.to[List]))
117123
case toolResults =>
118-
toolResults.analysisResults.foreach(results => formatter.addAll(None, Set.empty, results.to[List]))
124+
toolResults.analysisResults.foreach(results => formatter.addAll(None, Set.empty, None, results.to[List]))
119125
}
120126
formatter.end()
121127

@@ -211,6 +217,7 @@ object AnalyseExecutor {
211217
toolName: String,
212218
toolSpecification: Option[com.codacy.plugins.api.results.Tool.Specification],
213219
patternDescriptions: Set[PatternDescription],
220+
prefix: Option[String],
214221
files: Set[Path],
215222
analysisResults: Try[Set[ToolResult]])
216223
extends ExecutorResult[ToolResult]

cli/src/main/scala/com/codacy/analysis/cli/command/AnalyseCommand.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,9 @@ class AnalyseCommand(analyze: Analyze,
216216

217217
private def issuesToUpload(toolAndIssuesResults: Seq[IssuesToolExecutorResult]): Seq[ResultsUploader.ToolResults] = {
218218
toolAndIssuesResults.map {
219-
case IssuesToolExecutorResult(toolName, _, _, files, Success(issues)) =>
219+
case IssuesToolExecutorResult(toolName, _, _, _, files, Success(issues)) =>
220220
ResultsUploader.ToolResults(toolName, files, Right(issues))
221-
case IssuesToolExecutorResult(toolName, _, _, files, Failure(error)) =>
221+
case IssuesToolExecutorResult(toolName, _, _, _, files, Failure(error)) =>
222222
ResultsUploader.ToolResults(toolName, files, Left(error.getMessage))
223223
}(collection.breakOut)
224224
}

cli/src/main/scala/com/codacy/analysis/cli/formatter/Formatter.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ trait Formatter {
2121

2222
def addAll(toolSpecification: Option[com.codacy.plugins.api.results.Tool.Specification],
2323
patternDescriptions: Set[PatternDescription],
24+
toolPrefix: Option[String],
2425
elements: Seq[Result]): Unit
2526

2627
def end(): Unit

cli/src/main/scala/com/codacy/analysis/cli/formatter/Json.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ private[formatter] class Json(val stream: PrintStream) extends Formatter {
4242

4343
override def addAll(toolSpecification: Option[com.codacy.plugins.api.results.Tool.Specification],
4444
patternDescriptions: Set[PatternDescription],
45+
toolPrefix: Option[String],
4546
elements: Seq[Result]): Unit = elements.foreach(add)
4647

4748
private def add(element: Result): Unit = {

cli/src/main/scala/com/codacy/analysis/cli/formatter/Sarif.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,10 @@ private[formatter] class Sarif(val stream: PrintStream, val executionDirectory:
5252

5353
override def addAll(toolSpecification: Option[com.codacy.plugins.api.results.Tool.Specification],
5454
patternDescriptions: Set[PatternDescription],
55+
toolPrefix: Option[String],
5556
analysisResults: Seq[Result]): Unit = {
5657
toolSpecification.foreach { toolSpec =>
57-
val categorizedIssues = categorizeIssues(toolSpec, analysisResults)
58+
val categorizedIssues = categorizeIssues(toolSpec, toolPrefix, analysisResults)
5859

5960
val securityRules = createRules(categorizedIssues.securityIssues, patternDescriptions)
6061
val nonSecurityRules = createRules(categorizedIssues.nonSecurityIssues, patternDescriptions)
@@ -92,6 +93,7 @@ private[formatter] class Sarif(val stream: PrintStream, val executionDirectory:
9293
}
9394

9495
private def categorizeIssues(toolSpec: com.codacy.plugins.api.results.Tool.Specification,
96+
toolPrefix: Option[String],
9597
analysisResults: Seq[Result]): CategorizedIssues = {
9698
// HACK: Seems like the issues (`issue.category`) do not have the right category
9799
// while in the specification (`toolSpec.patterns[].category`) the pattern has the right category
@@ -101,7 +103,9 @@ private[formatter] class Sarif(val stream: PrintStream, val executionDirectory:
101103
analysisResults.foldLeft(CategorizedIssues(Seq.empty, Seq.empty)) {
102104

103105
case (categorizedIssues, issue: Issue)
104-
if patternsCategoryMap.get(issue.patternId.value).contains(Pattern.Category.Security) =>
106+
if patternsCategoryMap
107+
.get(toolPrefix.fold(issue.patternId.value)(prefix => issue.patternId.value.stripPrefix(prefix)))
108+
.contains(Pattern.Category.Security) =>
105109
categorizedIssues.addSecurityIssue(issue)
106110

107111
case (categorizedIssues, issue: Issue) =>

cli/src/main/scala/com/codacy/analysis/cli/formatter/Text.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ private[formatter] class Text(val stream: PrintStream) extends Formatter {
2929

3030
override def addAll(toolSpecification: Option[com.codacy.plugins.api.results.Tool.Specification],
3131
patternDescriptions: Set[PatternDescription],
32+
toolPrefix: Option[String],
3233
elements: Seq[Result]): Unit = elements.foreach(add)
3334

3435
private def add(element: Result): Unit = {

cli/src/test/scala/com/codacy/analysis/cli/analysis/ExitStatusSpec.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class ExitStatusSpec extends Specification with NoLanguageFeatures with Mockito
2727
toolName = "MyTool",
2828
toolSpecification = None,
2929
patternDescriptions = Set.empty,
30+
prefix = None,
3031
files = Set(Paths.get("Test.scala")),
3132
// scalafmt: { binPack.defnSite = true }
3233
analysisResults = Success(Set(
@@ -58,6 +59,7 @@ class ExitStatusSpec extends Specification with NoLanguageFeatures with Mockito
5859
toolName = "MyTool",
5960
toolSpecification = None,
6061
patternDescriptions = Set.empty,
62+
prefix = None,
6163
files = Set(Paths.get("Test.scala")),
6264
// scalafmt: { binPack.defnSite = true }
6365
analysisResults = Success(Set(
@@ -92,6 +94,7 @@ class ExitStatusSpec extends Specification with NoLanguageFeatures with Mockito
9294
toolName = "MyTool",
9395
toolSpecification = None,
9496
patternDescriptions = Set.empty,
97+
prefix = None,
9598
files = Set(Paths.get("Test.scala")),
9699
analysisResults = Success(Set()))))) should beEqualTo(ExitStatus.ExitCodes.success)
97100
}
@@ -102,12 +105,14 @@ class ExitStatusSpec extends Specification with NoLanguageFeatures with Mockito
102105
toolName = "MyTool",
103106
toolSpecification = None,
104107
patternDescriptions = Set.empty,
108+
prefix = None,
105109
files = Set(),
106110
analysisResults = Success(Set())),
107111
IssuesToolExecutorResult(
108112
toolName = "MyTool",
109113
toolSpecification = None,
110114
patternDescriptions = Set.empty,
115+
prefix = None,
111116
files = Set(Paths.get("Test.scala")),
112117
analysisResults = Failure(new Exception("Failed")))))) should beEqualTo(
113118
ExitStatus.ExitCodes.partiallyFailedAnalysis)
@@ -119,12 +124,14 @@ class ExitStatusSpec extends Specification with NoLanguageFeatures with Mockito
119124
toolName = "MyTool",
120125
toolSpecification = None,
121126
patternDescriptions = Set.empty,
127+
prefix = None,
122128
files = Set(),
123129
analysisResults = Success(Set())),
124130
IssuesToolExecutorResult(
125131
toolName = "MyTool",
126132
toolSpecification = None,
127133
patternDescriptions = Set.empty,
134+
prefix = None,
128135
files = Set(Paths.get("Test.scala")),
129136
analysisResults = Failure(new Exception("Failed")))))) should beEqualTo(ExitStatus.ExitCodes.success)
130137
}

cli/src/test/scala/com/codacy/analysis/cli/formatter/SarifSpec.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ class SarifSpec extends Specification with NoLanguageFeatures {
120120
formatter.addAll(
121121
toolSpecification = Option(toolSpecification),
122122
patternDescriptions = Set(securityPatternDescription, duplicationPatternDescription),
123+
toolPrefix = None,
123124
elements = List(securityIssue, duplicationIssue))
124125
formatter.end()
125126
val formatterOutput = bos.toString

0 commit comments

Comments
 (0)