From 6bd7a4fd3a9fcbed5367add7ba9f616531ced342 Mon Sep 17 00:00:00 2001 From: Zipeng WU Date: Mon, 8 Nov 2021 16:20:32 +0100 Subject: [PATCH] SONAR-14658 Show additional security-related rules are available in security reports --- .../SecurityStandardCategoryStatistics.java | 10 ++++ ...ecurityStandardCategoryStatisticsTest.java | 48 +++++++++++++++++++ sonar-ws/src/main/protobuf/ws-security.proto | 2 + 3 files changed, 60 insertions(+) create mode 100644 server/sonar-server-common/src/test/java/org/sonar/server/issue/index/SecurityStandardCategoryStatisticsTest.java diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/SecurityStandardCategoryStatistics.java b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/SecurityStandardCategoryStatistics.java index 88986ec6d06..4a77ef8dba3 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/SecurityStandardCategoryStatistics.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/SecurityStandardCategoryStatistics.java @@ -34,6 +34,7 @@ public class SecurityStandardCategoryStatistics { private final List children; private long activeRules; private long totalRules; + private boolean hasMoreRules; public SecurityStandardCategoryStatistics(String category, long vulnerabilities, OptionalInt vulnerabiliyRating, long toReviewSecurityHotspots, long reviewedSecurityHotspots, Integer securityReviewRating, @Nullable List children) { @@ -44,6 +45,7 @@ public class SecurityStandardCategoryStatistics { this.reviewedSecurityHotspots = reviewedSecurityHotspots; this.securityReviewRating = securityReviewRating; this.children = children; + this.hasMoreRules = false; } public String getCategory() { @@ -89,4 +91,12 @@ public class SecurityStandardCategoryStatistics { this.totalRules = totalRules; return this; } + + public boolean hasMoreRules() { + return hasMoreRules; + } + + public void setHasMoreRules(boolean hasMoreRules) { + this.hasMoreRules = hasMoreRules; + } } diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/issue/index/SecurityStandardCategoryStatisticsTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/issue/index/SecurityStandardCategoryStatisticsTest.java new file mode 100644 index 00000000000..53a602a1198 --- /dev/null +++ b/server/sonar-server-common/src/test/java/org/sonar/server/issue/index/SecurityStandardCategoryStatisticsTest.java @@ -0,0 +1,48 @@ +/* + * SonarQube + * Copyright (C) 2009-2021 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. + */ +package org.sonar.server.issue.index; + +import org.junit.Test; + +import static java.util.OptionalInt.empty; +import static org.assertj.core.api.Assertions.assertThat; + +public class SecurityStandardCategoryStatisticsTest { + + @Test + public void hasMoreRules_default_false() { + SecurityStandardCategoryStatistics standardCategoryStatistics = new SecurityStandardCategoryStatistics( + "cat", 0, empty(), 0, + 0, 5, null + ); + assertThat(standardCategoryStatistics.hasMoreRules()).isFalse(); + } + + @Test + public void hasMoreRules_is_updatable() { + SecurityStandardCategoryStatistics standardCategoryStatistics = new SecurityStandardCategoryStatistics( + "cat", 0, empty(), 0, + 0, 5, null + ); + standardCategoryStatistics.setHasMoreRules(true); + assertThat(standardCategoryStatistics.hasMoreRules()).isTrue(); + } + +} \ No newline at end of file diff --git a/sonar-ws/src/main/protobuf/ws-security.proto b/sonar-ws/src/main/protobuf/ws-security.proto index 59bf2f9a4cd..73ee03a4cbb 100644 --- a/sonar-ws/src/main/protobuf/ws-security.proto +++ b/sonar-ws/src/main/protobuf/ws-security.proto @@ -41,6 +41,7 @@ message SecurityStandardCategoryStatistics { repeated CweStatistics distribution = 8; optional int64 activeRules = 9; optional int64 totalRules = 10; + optional bool hasMoreRules = 11; } message CweStatistics { @@ -52,6 +53,7 @@ message CweStatistics { optional int64 securityReviewRating = 7; optional int64 activeRules = 8; optional int64 totalRules = 9; + optional bool hasMoreRules = 10; } -- 2.39.5