1010import org .gradle .api .tasks .compile .JavaCompile ;
1111import org .gradle .api .tasks .testing .Test ;
1212import org .gradle .jvm .toolchain .JavaLanguageVersion ;
13+ import org .owasp .dependencycheck .gradle .extension .AnalyzerExtension ;
14+ import org .owasp .dependencycheck .gradle .extension .DependencyCheckExtension ;
1315
16+ import java .util .Arrays ;
17+ import java .util .List ;
1418import java .util .LinkedHashMap ;
1519import java .util .Map ;
20+ import java .util .stream .Collectors ;
1621
1722/**
1823 * {@link Plugin} for FormKiQ Gradle Conventions.
@@ -36,6 +41,7 @@ public void apply(Project root) {
3641 p .getPluginManager ().apply ("checkstyle" );
3742 p .getPluginManager ().apply ("com.github.spotbugs" );
3843 p .getPluginManager ().apply ("com.github.ben-manes.versions" );
44+ p .getPluginManager ().apply ("org.owasp.dependencycheck" );
3945 p .getPluginManager ().apply ("com.formkiq.gradle.graalvm-native-plugin" );
4046 p .getPluginManager ().apply ("distribution" );
4147
@@ -105,6 +111,42 @@ public void apply(Project root) {
105111 cs .setMaxErrors (0 );
106112 });
107113
114+ // OWASP Dependency Check
115+ p .getExtensions ().configure (DependencyCheckExtension .class , dc -> {
116+ dc .setFormats (Arrays .asList ("HTML" , "JSON" , "SARIF" ));
117+ dc .setFailBuildOnCVSS (7.0f );
118+ dc .setScanConfigurations (Arrays .asList ("runtimeClasspath" ));
119+ dc .setSkipTestGroups (true );
120+ Object skipProjects = p .findProperty ("dependencyCheckSkipProjects" );
121+ if (skipProjects != null ) {
122+ List <String > projectPaths = Arrays .stream (skipProjects .toString ().split ("," ))
123+ .map (String ::trim )
124+ .filter (s -> !s .isEmpty ())
125+ .collect (Collectors .toList ());
126+ dc .setSkipProjects (projectPaths );
127+ }
128+ dc .analyzers ((AnalyzerExtension analyzers ) -> {
129+ analyzers .getNodeAudit ().setEnabled (false );
130+ analyzers .setOssIndexEnabled (true );
131+ analyzers .ossIndex (ossIndex -> {
132+ Object ossIndexUsername = p .findProperty ("ossIndexUsername" );
133+ if (ossIndexUsername != null ) {
134+ ossIndex .setUsername (ossIndexUsername .toString ());
135+ }
136+
137+ Object ossIndexPassword = p .findProperty ("ossIndexPassword" );
138+ if (ossIndexPassword != null ) {
139+ ossIndex .setPassword (ossIndexPassword .toString ());
140+ }
141+ });
142+ });
143+
144+ Object nvdKey = p .findProperty ("nvdKey" );
145+ if (nvdKey != null ) {
146+ dc .nvd (nvd -> nvd .setApiKey (nvdKey .toString ()));
147+ }
148+ });
149+
108150 // Compiler flags
109151 p .getTasks ().withType (JavaCompile .class )
110152 .configureEach (jc -> jc .getOptions ().getCompilerArgs ().add ("-Xlint:deprecation" ));
0 commit comments