-
Notifications
You must be signed in to change notification settings - Fork 27
/
RiskGate.java
76 lines (65 loc) · 3.25 KB
/
RiskGate.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
* This file is part of Dependency-Track Jenkins plugin.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jenkinsci.plugins.DependencyTrack.model;
import hudson.model.Result;
import java.io.Serializable;
import java.util.List;
public class RiskGate implements Serializable {
private static final long serialVersionUID = 171256230735670985L;
private Thresholds thresholds;
public RiskGate(Thresholds thresholds) {
this.thresholds = thresholds;
}
/**
* Evaluates if the current results meet or exceed the defined threshold.
* @param previousDistribution
* @param previousFindings
* @param currentDistribution
* @param currentFindings
* @return a Result
*/
public Result evaluate(final SeverityDistribution previousDistribution,
final List<Finding> previousFindings,
final SeverityDistribution currentDistribution,
final List<Finding> currentFindings) {
Result result = Result.SUCCESS;
if (currentDistribution != null) {
if ((currentDistribution.getCritical() > 0 && currentDistribution.getCritical() >= thresholds.totalFindings.critical)
|| (currentDistribution.getHigh() > 0 && currentDistribution.getHigh() >= thresholds.totalFindings.high)
|| (currentDistribution.getMedium() > 0 && currentDistribution.getMedium() >= thresholds.totalFindings.medium)
|| (currentDistribution.getLow() > 0 && currentDistribution.getLow() >= thresholds.totalFindings.low)) {
if (thresholds.totalFindings.failBuild) {
return Result.FAILURE;
} else {
result = Result.UNSTABLE;
}
}
}
if (currentDistribution != null && previousDistribution != null) {
if ((currentDistribution.getCritical() > 0 && currentDistribution.getCritical() >= previousDistribution.getCritical() + thresholds.newFindings.critical)
|| (currentDistribution.getHigh() > 0 && currentDistribution.getHigh() >= previousDistribution.getHigh() + thresholds.newFindings.high)
|| (currentDistribution.getMedium() > 0 && currentDistribution.getMedium() >= previousDistribution.getMedium() + thresholds.newFindings.medium)
|| (currentDistribution.getLow() > 0 && currentDistribution.getLow() >= previousDistribution.getLow() + thresholds.newFindings.low)) {
if (thresholds.newFindings.failBuild) {
return Result.FAILURE;
} else {
result = Result.UNSTABLE;
}
}
}
return result;
}
}