diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/AntLoggerAdapter.html b/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/AntLoggerAdapter.html
index acddbbbba..5b4488ba0 100644
--- a/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/AntLoggerAdapter.html
+++ b/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/AntLoggerAdapter.html
@@ -32,253 +32,258 @@
24 import org.slf4j.helpers.MessageFormatter;
25
26
-27
-28
-29
-30
-31 public class AntLoggerAdapter extends MarkerIgnoringBase {
-32
-33
-34
-35
-36 private Task task;
-37
+27
+28
+29
+30
+31
+32 public class AntLoggerAdapter extends MarkerIgnoringBase {
+33
+34
+35
+36
+37 private static final long serialVersionUID = -1337;
38
-39
-40
-41
-42
-43 public AntLoggerAdapter (Task task) {
-44 super ();
-45 this .task = task;
-46 }
-47
-48
-49
-50
-51
-52
-53 public void setTask(Task task) {
-54 this .task = task;
-55 }
-56
-57 @Override
-58 public boolean isTraceEnabled() {
-59
-60
-61 return true ;
-62 }
-63
-64 @Override
-65 public void trace(String msg) {
-66 if (task != null ) {
-67 task.log(msg, Project.MSG_VERBOSE);
-68 }
-69 }
-70
-71 @Override
-72 public void trace(String format, Object arg) {
-73 if (task != null ) {
-74 final FormattingTuple tp = MessageFormatter.format(format, arg);
-75 task.log(tp.getMessage(), Project.MSG_VERBOSE);
-76 }
-77 }
-78
-79 @Override
-80 public void trace(String format, Object arg1, Object arg2) {
-81 if (task != null ) {
-82 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
-83 task.log(tp.getMessage(), Project.MSG_VERBOSE);
-84 }
-85 }
-86
-87 @Override
-88 public void trace(String format, Object... arguments) {
-89 if (task != null ) {
-90 final FormattingTuple tp = MessageFormatter.format(format, arguments);
-91 task.log(tp.getMessage(), Project.MSG_VERBOSE);
-92 }
-93 }
-94
-95 @Override
-96 public void trace(String msg, Throwable t) {
-97 if (task != null ) {
-98 task.log(msg, t, Project.MSG_VERBOSE);
-99 }
-100 }
-101
-102 @Override
-103 public boolean isDebugEnabled() {
-104 return true ;
+39
+40
+41 private transient Task task;
+42
+43
+44
+45
+46
+47
+48 public AntLoggerAdapter (Task task) {
+49 super ();
+50 this .task = task;
+51 }
+52
+53
+54
+55
+56
+57
+58 public void setTask(Task task) {
+59 this .task = task;
+60 }
+61
+62 @Override
+63 public boolean isTraceEnabled() {
+64
+65
+66 return true ;
+67 }
+68
+69 @Override
+70 public void trace(String msg) {
+71 if (task != null ) {
+72 task.log(msg, Project.MSG_VERBOSE);
+73 }
+74 }
+75
+76 @Override
+77 public void trace(String format, Object arg) {
+78 if (task != null ) {
+79 final FormattingTuple tp = MessageFormatter.format(format, arg);
+80 task.log(tp.getMessage(), Project.MSG_VERBOSE);
+81 }
+82 }
+83
+84 @Override
+85 public void trace(String format, Object arg1, Object arg2) {
+86 if (task != null ) {
+87 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
+88 task.log(tp.getMessage(), Project.MSG_VERBOSE);
+89 }
+90 }
+91
+92 @Override
+93 public void trace(String format, Object... arguments) {
+94 if (task != null ) {
+95 final FormattingTuple tp = MessageFormatter.format(format, arguments);
+96 task.log(tp.getMessage(), Project.MSG_VERBOSE);
+97 }
+98 }
+99
+100 @Override
+101 public void trace(String msg, Throwable t) {
+102 if (task != null ) {
+103 task.log(msg, t, Project.MSG_VERBOSE);
+104 }
105 }
106
107 @Override
-108 public void debug(String msg) {
-109 if (task != null ) {
-110 task.log(msg, Project.MSG_DEBUG);
-111 }
-112 }
-113
-114 @Override
-115 public void debug(String format, Object arg) {
-116 if (task != null ) {
-117 final FormattingTuple tp = MessageFormatter.format(format, arg);
-118 task.log(tp.getMessage(), Project.MSG_DEBUG);
-119 }
-120 }
-121
-122 @Override
-123 public void debug(String format, Object arg1, Object arg2) {
-124 if (task != null ) {
-125 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
-126 task.log(tp.getMessage(), Project.MSG_DEBUG);
-127 }
-128 }
-129
-130 @Override
-131 public void debug(String format, Object... arguments) {
-132 if (task != null ) {
-133 final FormattingTuple tp = MessageFormatter.format(format, arguments);
-134 task.log(tp.getMessage(), Project.MSG_DEBUG);
-135 }
-136 }
-137
-138 @Override
-139 public void debug(String msg, Throwable t) {
-140 if (task != null ) {
-141 task.log(msg, t, Project.MSG_DEBUG);
-142 }
-143 }
-144
-145 @Override
-146 public boolean isInfoEnabled() {
-147 return true ;
+108 public boolean isDebugEnabled() {
+109 return true ;
+110 }
+111
+112 @Override
+113 public void debug(String msg) {
+114 if (task != null ) {
+115 task.log(msg, Project.MSG_DEBUG);
+116 }
+117 }
+118
+119 @Override
+120 public void debug(String format, Object arg) {
+121 if (task != null ) {
+122 final FormattingTuple tp = MessageFormatter.format(format, arg);
+123 task.log(tp.getMessage(), Project.MSG_DEBUG);
+124 }
+125 }
+126
+127 @Override
+128 public void debug(String format, Object arg1, Object arg2) {
+129 if (task != null ) {
+130 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
+131 task.log(tp.getMessage(), Project.MSG_DEBUG);
+132 }
+133 }
+134
+135 @Override
+136 public void debug(String format, Object... arguments) {
+137 if (task != null ) {
+138 final FormattingTuple tp = MessageFormatter.format(format, arguments);
+139 task.log(tp.getMessage(), Project.MSG_DEBUG);
+140 }
+141 }
+142
+143 @Override
+144 public void debug(String msg, Throwable t) {
+145 if (task != null ) {
+146 task.log(msg, t, Project.MSG_DEBUG);
+147 }
148 }
149
150 @Override
-151 public void info(String msg) {
-152 if (task != null ) {
-153 task.log(msg, Project.MSG_INFO);
-154 }
-155 }
-156
-157 @Override
-158 public void info(String format, Object arg) {
-159 if (task != null ) {
-160 final FormattingTuple tp = MessageFormatter.format(format, arg);
-161 task.log(tp.getMessage(), Project.MSG_INFO);
-162 }
-163 }
-164
-165 @Override
-166 public void info(String format, Object arg1, Object arg2) {
-167 if (task != null ) {
-168 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
-169 task.log(tp.getMessage(), Project.MSG_INFO);
-170 }
-171 }
-172
-173 @Override
-174 public void info(String format, Object... arguments) {
-175 if (task != null ) {
-176 final FormattingTuple tp = MessageFormatter.format(format, arguments);
-177 task.log(tp.getMessage(), Project.MSG_INFO);
-178 }
-179 }
-180
-181 @Override
-182 public void info(String msg, Throwable t) {
-183 if (task != null ) {
-184 task.log(msg, t, Project.MSG_INFO);
-185 }
-186 }
-187
-188 @Override
-189 public boolean isWarnEnabled() {
-190 return true ;
+151 public boolean isInfoEnabled() {
+152 return true ;
+153 }
+154
+155 @Override
+156 public void info(String msg) {
+157 if (task != null ) {
+158 task.log(msg, Project.MSG_INFO);
+159 }
+160 }
+161
+162 @Override
+163 public void info(String format, Object arg) {
+164 if (task != null ) {
+165 final FormattingTuple tp = MessageFormatter.format(format, arg);
+166 task.log(tp.getMessage(), Project.MSG_INFO);
+167 }
+168 }
+169
+170 @Override
+171 public void info(String format, Object arg1, Object arg2) {
+172 if (task != null ) {
+173 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
+174 task.log(tp.getMessage(), Project.MSG_INFO);
+175 }
+176 }
+177
+178 @Override
+179 public void info(String format, Object... arguments) {
+180 if (task != null ) {
+181 final FormattingTuple tp = MessageFormatter.format(format, arguments);
+182 task.log(tp.getMessage(), Project.MSG_INFO);
+183 }
+184 }
+185
+186 @Override
+187 public void info(String msg, Throwable t) {
+188 if (task != null ) {
+189 task.log(msg, t, Project.MSG_INFO);
+190 }
191 }
192
193 @Override
-194 public void warn(String msg) {
-195 if (task != null ) {
-196 task.log(msg, Project.MSG_WARN);
-197 }
-198 }
-199
-200 @Override
-201 public void warn(String format, Object arg) {
-202 if (task != null ) {
-203 final FormattingTuple tp = MessageFormatter.format(format, arg);
-204 task.log(tp.getMessage(), Project.MSG_WARN);
-205 }
-206 }
-207
-208 @Override
-209 public void warn(String format, Object... arguments) {
-210 if (task != null ) {
-211 final FormattingTuple tp = MessageFormatter.format(format, arguments);
-212 task.log(tp.getMessage(), Project.MSG_WARN);
-213 }
-214 }
-215
-216 @Override
-217 public void warn(String format, Object arg1, Object arg2) {
-218 if (task != null ) {
-219 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
-220 task.log(tp.getMessage(), Project.MSG_WARN);
-221 }
-222 }
-223
-224 @Override
-225 public void warn(String msg, Throwable t) {
-226 if (task != null ) {
-227 task.log(msg, t, Project.MSG_WARN);
-228 }
-229 }
-230
-231 @Override
-232 public boolean isErrorEnabled() {
-233 return true ;
+194 public boolean isWarnEnabled() {
+195 return true ;
+196 }
+197
+198 @Override
+199 public void warn(String msg) {
+200 if (task != null ) {
+201 task.log(msg, Project.MSG_WARN);
+202 }
+203 }
+204
+205 @Override
+206 public void warn(String format, Object arg) {
+207 if (task != null ) {
+208 final FormattingTuple tp = MessageFormatter.format(format, arg);
+209 task.log(tp.getMessage(), Project.MSG_WARN);
+210 }
+211 }
+212
+213 @Override
+214 public void warn(String format, Object... arguments) {
+215 if (task != null ) {
+216 final FormattingTuple tp = MessageFormatter.format(format, arguments);
+217 task.log(tp.getMessage(), Project.MSG_WARN);
+218 }
+219 }
+220
+221 @Override
+222 public void warn(String format, Object arg1, Object arg2) {
+223 if (task != null ) {
+224 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
+225 task.log(tp.getMessage(), Project.MSG_WARN);
+226 }
+227 }
+228
+229 @Override
+230 public void warn(String msg, Throwable t) {
+231 if (task != null ) {
+232 task.log(msg, t, Project.MSG_WARN);
+233 }
234 }
235
236 @Override
-237 public void error(String msg) {
-238 if (task != null ) {
-239 task.log(msg, Project.MSG_ERR);
-240 }
-241 }
-242
-243 @Override
-244 public void error(String format, Object arg) {
-245 if (task != null ) {
-246 final FormattingTuple tp = MessageFormatter.format(format, arg);
-247 task.log(tp.getMessage(), Project.MSG_ERR);
-248 }
-249 }
-250
-251 @Override
-252 public void error(String format, Object arg1, Object arg2) {
-253 if (task != null ) {
-254 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
-255 task.log(tp.getMessage(), Project.MSG_ERR);
-256 }
-257 }
-258
-259 @Override
-260 public void error(String format, Object... arguments) {
-261 if (task != null ) {
-262 final FormattingTuple tp = MessageFormatter.format(format, arguments);
-263 task.log(tp.getMessage(), Project.MSG_ERR);
-264 }
-265 }
-266
-267 @Override
-268 public void error(String msg, Throwable t) {
-269 if (task != null ) {
-270 task.log(msg, t, Project.MSG_ERR);
-271 }
-272 }
-273 }
+237 public boolean isErrorEnabled() {
+238 return true ;
+239 }
+240
+241 @Override
+242 public void error(String msg) {
+243 if (task != null ) {
+244 task.log(msg, Project.MSG_ERR);
+245 }
+246 }
+247
+248 @Override
+249 public void error(String format, Object arg) {
+250 if (task != null ) {
+251 final FormattingTuple tp = MessageFormatter.format(format, arg);
+252 task.log(tp.getMessage(), Project.MSG_ERR);
+253 }
+254 }
+255
+256 @Override
+257 public void error(String format, Object arg1, Object arg2) {
+258 if (task != null ) {
+259 final FormattingTuple tp = MessageFormatter.format(format, arg1, arg2);
+260 task.log(tp.getMessage(), Project.MSG_ERR);
+261 }
+262 }
+263
+264 @Override
+265 public void error(String format, Object... arguments) {
+266 if (task != null ) {
+267 final FormattingTuple tp = MessageFormatter.format(format, arguments);
+268 task.log(tp.getMessage(), Project.MSG_ERR);
+269 }
+270 }
+271
+272 @Override
+273 public void error(String msg, Throwable t) {
+274 if (task != null ) {
+275 task.log(msg, t, Project.MSG_ERR);
+276 }
+277 }
+278 }
diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-frame.html b/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-frame.html
index 2b11c19df..292ed0d0c 100644
--- a/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-frame.html
+++ b/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-frame.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference Package org.owasp.dependencycheck.ant.logging
+ Dependency-Check Ant Task 1.4.4 Reference Package org.owasp.dependencycheck.ant.logging
diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-summary.html b/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-summary.html
index 4a041fea8..f069a4b2e 100644
--- a/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-summary.html
+++ b/dependency-check-ant/xref/org/owasp/dependencycheck/ant/logging/package-summary.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference Package org.owasp.dependencycheck.ant.logging
+ Dependency-Check Ant Task 1.4.4 Reference Package org.owasp.dependencycheck.ant.logging
diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/Check.html b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/Check.html
index 4d625b854..8a93e8d4a 100644
--- a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/Check.html
+++ b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/Check.html
@@ -355,677 +355,700 @@
347 this .suppressionFile = suppressionFile;
348 }
349
-350
+350
351
-352 private boolean showSummary = true ;
+352 private String hintsFile;
353
354
-355
+355
356
-357
+357
358
-359 public boolean isShowSummary() {
-360 return showSummary;
+359 public String getHintsFile() {
+360 return hintsFile;
361 }
362
363
-364
+364
365
-366
+366
367
-368 public void setShowSummary(boolean showSummary) {
-369 this .showSummary = showSummary;
+368 public void setHintsFile(String hintsFile) {
+369 this .hintsFile = hintsFile;
370 }
-371
-372
-373
-374
-375 private Boolean enableExperimental;
-376
-377
-378
-379
-380
-381
-382 public Boolean isEnableExperimental() {
-383 return enableExperimental;
-384 }
-385
-386
-387
-388
-389
-390
-391 public void setEnableExperimental(Boolean enableExperimental) {
-392 this .enableExperimental = enableExperimental;
-393 }
-394
-395
-396
-397
-398 private Boolean jarAnalyzerEnabled;
-399
-400
-401
-402
-403
-404
-405 public Boolean isJarAnalyzerEnabled() {
-406 return jarAnalyzerEnabled;
-407 }
-408
-409
-410
-411
-412
-413
-414 public void setJarAnalyzerEnabled(Boolean jarAnalyzerEnabled) {
-415 this .jarAnalyzerEnabled = jarAnalyzerEnabled;
-416 }
+371
+372
+373
+374 private boolean showSummary = true ;
+375
+376
+377
+378
+379
+380
+381 public boolean isShowSummary() {
+382 return showSummary;
+383 }
+384
+385
+386
+387
+388
+389
+390 public void setShowSummary(boolean showSummary) {
+391 this .showSummary = showSummary;
+392 }
+393
+394
+395
+396
+397 private Boolean enableExperimental;
+398
+399
+400
+401
+402
+403
+404 public Boolean isEnableExperimental() {
+405 return enableExperimental;
+406 }
+407
+408
+409
+410
+411
+412
+413 public void setEnableExperimental(Boolean enableExperimental) {
+414 this .enableExperimental = enableExperimental;
+415 }
+416
417
-418
+418
419
-420 private Boolean archiveAnalyzerEnabled;
+420 private Boolean jarAnalyzerEnabled;
421
422
423
424
425
426
-427 public Boolean isArchiveAnalyzerEnabled() {
-428 return archiveAnalyzerEnabled;
+427 public Boolean isJarAnalyzerEnabled() {
+428 return jarAnalyzerEnabled;
429 }
-430
-431
-432
-433 private Boolean assemblyAnalyzerEnabled;
-434
-435
-436
-437
-438
-439
-440 public void setArchiveAnalyzerEnabled(Boolean archiveAnalyzerEnabled) {
-441 this .archiveAnalyzerEnabled = archiveAnalyzerEnabled;
-442 }
+430
+431
+432
+433
+434
+435
+436 public void setJarAnalyzerEnabled(Boolean jarAnalyzerEnabled) {
+437 this .jarAnalyzerEnabled = jarAnalyzerEnabled;
+438 }
+439
+440
+441
+442 private Boolean archiveAnalyzerEnabled;
443
444
445
446
447
448
-449 public Boolean isAssemblyAnalyzerEnabled() {
-450 return assemblyAnalyzerEnabled;
+449 public Boolean isArchiveAnalyzerEnabled() {
+450 return archiveAnalyzerEnabled;
451 }
-452
-453
-454
-455
-456
-457
-458 public void setAssemblyAnalyzerEnabled(Boolean assemblyAnalyzerEnabled) {
-459 this .assemblyAnalyzerEnabled = assemblyAnalyzerEnabled;
-460 }
-461
-462
-463
-464 private Boolean nuspecAnalyzerEnabled;
+452
+453
+454
+455 private Boolean assemblyAnalyzerEnabled;
+456
+457
+458
+459
+460
+461
+462 public void setArchiveAnalyzerEnabled(Boolean archiveAnalyzerEnabled) {
+463 this .archiveAnalyzerEnabled = archiveAnalyzerEnabled;
+464 }
465
466
467
468
469
470
-471 public Boolean isNuspecAnalyzerEnabled() {
-472 return nuspecAnalyzerEnabled;
+471 public Boolean isAssemblyAnalyzerEnabled() {
+472 return assemblyAnalyzerEnabled;
473 }
474
475
476
477
-478
+478
479
-480 public void setNuspecAnalyzerEnabled(Boolean nuspecAnalyzerEnabled) {
-481 this .nuspecAnalyzerEnabled = nuspecAnalyzerEnabled;
+480 public void setAssemblyAnalyzerEnabled(Boolean assemblyAnalyzerEnabled) {
+481 this .assemblyAnalyzerEnabled = assemblyAnalyzerEnabled;
482 }
483
-484
+484
485
-486 private Boolean composerAnalyzerEnabled;
+486 private Boolean nuspecAnalyzerEnabled;
487
488
-489
+489
490
-491
+491
492
-493 public Boolean isComposerAnalyzerEnabled() {
-494 return composerAnalyzerEnabled;
+493 public Boolean isNuspecAnalyzerEnabled() {
+494 return nuspecAnalyzerEnabled;
495 }
496
497
-498
+498
499
-500
+500
501
-502 public void setComposerAnalyzerEnabled(Boolean composerAnalyzerEnabled) {
-503 this .composerAnalyzerEnabled = composerAnalyzerEnabled;
+502 public void setNuspecAnalyzerEnabled(Boolean nuspecAnalyzerEnabled) {
+503 this .nuspecAnalyzerEnabled = nuspecAnalyzerEnabled;
504 }
505
-506
+506
507
-508 private Boolean autoconfAnalyzerEnabled;
+508 private Boolean composerAnalyzerEnabled;
509
510
-511
+511
512
-513
+513
514
-515 public Boolean isAutoconfAnalyzerEnabled() {
-516 return autoconfAnalyzerEnabled;
+515 public Boolean isComposerAnalyzerEnabled() {
+516 return composerAnalyzerEnabled;
517 }
518
519
-520
+520
521
-522
+522
523
-524 public void setAutoconfAnalyzerEnabled(Boolean autoconfAnalyzerEnabled) {
-525 this .autoconfAnalyzerEnabled = autoconfAnalyzerEnabled;
+524 public void setComposerAnalyzerEnabled(Boolean composerAnalyzerEnabled) {
+525 this .composerAnalyzerEnabled = composerAnalyzerEnabled;
526 }
527
-528
+528
529
-530 private Boolean cmakeAnalyzerEnabled;
+530 private Boolean autoconfAnalyzerEnabled;
531
532
-533
+533
534
-535
+535
536
-537 public Boolean isCMakeAnalyzerEnabled() {
-538 return cmakeAnalyzerEnabled;
+537 public Boolean isAutoconfAnalyzerEnabled() {
+538 return autoconfAnalyzerEnabled;
539 }
540
541
-542
+542
543
-544
+544
545
-546 public void setCMakeAnalyzerEnabled(Boolean cmakeAnalyzerEnabled) {
-547 this .cmakeAnalyzerEnabled = cmakeAnalyzerEnabled;
+546 public void setAutoconfAnalyzerEnabled(Boolean autoconfAnalyzerEnabled) {
+547 this .autoconfAnalyzerEnabled = autoconfAnalyzerEnabled;
548 }
549
-550
+550
551
-552 private Boolean opensslAnalyzerEnabled;
+552 private Boolean cmakeAnalyzerEnabled;
553
554
-555
+555
556
-557
+557
558
-559 public Boolean isOpensslAnalyzerEnabled() {
-560 return opensslAnalyzerEnabled;
+559 public Boolean isCMakeAnalyzerEnabled() {
+560 return cmakeAnalyzerEnabled;
561 }
562
563
-564
+564
565
-566
+566
567
-568 public void setOpensslAnalyzerEnabled(Boolean opensslAnalyzerEnabled) {
-569 this .opensslAnalyzerEnabled = opensslAnalyzerEnabled;
+568 public void setCMakeAnalyzerEnabled(Boolean cmakeAnalyzerEnabled) {
+569 this .cmakeAnalyzerEnabled = cmakeAnalyzerEnabled;
570 }
571
-572
+572
573
-574 private Boolean nodeAnalyzerEnabled;
+574 private Boolean opensslAnalyzerEnabled;
575
576
-577
+577
578
-579
+579
580
-581 public Boolean isNodeAnalyzerEnabled() {
-582 return nodeAnalyzerEnabled;
+581 public Boolean isOpensslAnalyzerEnabled() {
+582 return opensslAnalyzerEnabled;
583 }
584
585
-586
+586
587
-588
+588
589
-590 public void setNodeAnalyzerEnabled(Boolean nodeAnalyzerEnabled) {
-591 this .nodeAnalyzerEnabled = nodeAnalyzerEnabled;
+590 public void setOpensslAnalyzerEnabled(Boolean opensslAnalyzerEnabled) {
+591 this .opensslAnalyzerEnabled = opensslAnalyzerEnabled;
592 }
593
-594
+594
595
-596 private Boolean rubygemsAnalyzerEnabled;
+596 private Boolean nodeAnalyzerEnabled;
597
598
-599
+599
600
-601
+601
602
-603 public Boolean isRubygemsAnalyzerEnabled() {
-604 return rubygemsAnalyzerEnabled;
+603 public Boolean isNodeAnalyzerEnabled() {
+604 return nodeAnalyzerEnabled;
605 }
606
607
-608
+608
609
-610
+610
611
-612 public void setRubygemsAnalyzerEnabled(Boolean rubygemsAnalyzerEnabled) {
-613 this .rubygemsAnalyzerEnabled = rubygemsAnalyzerEnabled;
+612 public void setNodeAnalyzerEnabled(Boolean nodeAnalyzerEnabled) {
+613 this .nodeAnalyzerEnabled = nodeAnalyzerEnabled;
614 }
615
-616
+616
617
-618 private Boolean pyPackageAnalyzerEnabled;
+618 private Boolean rubygemsAnalyzerEnabled;
619
620
-621
+621
622
-623
+623
624
-625 public Boolean isPyPackageAnalyzerEnabled() {
-626 return pyPackageAnalyzerEnabled;
+625 public Boolean isRubygemsAnalyzerEnabled() {
+626 return rubygemsAnalyzerEnabled;
627 }
628
629
-630
+630
631
-632
+632
633
-634 public void setPyPackageAnalyzerEnabled(Boolean pyPackageAnalyzerEnabled) {
-635 this .pyPackageAnalyzerEnabled = pyPackageAnalyzerEnabled;
+634 public void setRubygemsAnalyzerEnabled(Boolean rubygemsAnalyzerEnabled) {
+635 this .rubygemsAnalyzerEnabled = rubygemsAnalyzerEnabled;
636 }
-637
-638
-639
-640
-641 private Boolean pyDistributionAnalyzerEnabled;
-642
-643
-644
-645
-646
-647
-648 public Boolean isPyDistributionAnalyzerEnabled() {
-649 return pyDistributionAnalyzerEnabled;
-650 }
-651
-652
-653
-654
-655
-656
-657
-658 public void setPyDistributionAnalyzerEnabled(Boolean pyDistributionAnalyzerEnabled) {
-659 this .pyDistributionAnalyzerEnabled = pyDistributionAnalyzerEnabled;
-660 }
-661
-662
-663
-664
-665 private Boolean centralAnalyzerEnabled;
-666
-667
-668
-669
-670
-671
-672 public Boolean isCentralAnalyzerEnabled() {
-673 return centralAnalyzerEnabled;
-674 }
-675
-676
-677
-678
-679
-680
-681 public void setCentralAnalyzerEnabled(Boolean centralAnalyzerEnabled) {
-682 this .centralAnalyzerEnabled = centralAnalyzerEnabled;
-683 }
-684
-685
-686
-687
-688 private Boolean nexusAnalyzerEnabled;
-689
-690
-691
-692
-693
-694
-695 public Boolean isNexusAnalyzerEnabled() {
-696 return nexusAnalyzerEnabled;
-697 }
-698
-699
-700
-701
-702
-703
-704 public void setNexusAnalyzerEnabled(Boolean nexusAnalyzerEnabled) {
-705 this .nexusAnalyzerEnabled = nexusAnalyzerEnabled;
-706 }
-707
-708
-709
-710
-711
-712 private String nexusUrl;
-713
-714
-715
-716
-717
-718
-719 public String getNexusUrl() {
-720 return nexusUrl;
-721 }
-722
-723
-724
-725
-726
-727
-728 public void setNexusUrl(String nexusUrl) {
-729 this .nexusUrl = nexusUrl;
-730 }
-731
-732
+637
+638
+639
+640 private Boolean pyPackageAnalyzerEnabled;
+641
+642
+643
+644
+645
+646
+647 public Boolean isPyPackageAnalyzerEnabled() {
+648 return pyPackageAnalyzerEnabled;
+649 }
+650
+651
+652
+653
+654
+655
+656 public void setPyPackageAnalyzerEnabled(Boolean pyPackageAnalyzerEnabled) {
+657 this .pyPackageAnalyzerEnabled = pyPackageAnalyzerEnabled;
+658 }
+659
+660
+661
+662
+663 private Boolean pyDistributionAnalyzerEnabled;
+664
+665
+666
+667
+668
+669
+670 public Boolean isPyDistributionAnalyzerEnabled() {
+671 return pyDistributionAnalyzerEnabled;
+672 }
+673
+674
+675
+676
+677
+678
+679
+680 public void setPyDistributionAnalyzerEnabled(Boolean pyDistributionAnalyzerEnabled) {
+681 this .pyDistributionAnalyzerEnabled = pyDistributionAnalyzerEnabled;
+682 }
+683
+684
+685
+686
+687 private Boolean centralAnalyzerEnabled;
+688
+689
+690
+691
+692
+693
+694 public Boolean isCentralAnalyzerEnabled() {
+695 return centralAnalyzerEnabled;
+696 }
+697
+698
+699
+700
+701
+702
+703 public void setCentralAnalyzerEnabled(Boolean centralAnalyzerEnabled) {
+704 this .centralAnalyzerEnabled = centralAnalyzerEnabled;
+705 }
+706
+707
+708
+709
+710 private Boolean nexusAnalyzerEnabled;
+711
+712
+713
+714
+715
+716
+717 public Boolean isNexusAnalyzerEnabled() {
+718 return nexusAnalyzerEnabled;
+719 }
+720
+721
+722
+723
+724
+725
+726 public void setNexusAnalyzerEnabled(Boolean nexusAnalyzerEnabled) {
+727 this .nexusAnalyzerEnabled = nexusAnalyzerEnabled;
+728 }
+729
+730
+731
+732
733
-734 private Boolean nexusUsesProxy;
+734 private String nexusUrl;
735
736
-737
+737
738
-739
+739
740
-741 public Boolean isNexusUsesProxy() {
-742 return nexusUsesProxy;
+741 public String getNexusUrl() {
+742 return nexusUrl;
743 }
744
745
-746
+746
747
-748
+748
749
-750 public void setNexusUsesProxy(Boolean nexusUsesProxy) {
-751 this .nexusUsesProxy = nexusUsesProxy;
+750 public void setNexusUrl(String nexusUrl) {
+751 this .nexusUrl = nexusUrl;
752 }
-753
-754
-755
-756
-757
-758 private String zipExtensions;
-759
-760
-761
-762
-763
-764
-765 public String getZipExtensions() {
-766 return zipExtensions;
-767 }
-768
-769
-770
-771
-772
-773
-774 public void setZipExtensions(String zipExtensions) {
-775 this .zipExtensions = zipExtensions;
-776 }
-777
-778
-779
-780
-781 private String pathToMono;
-782
-783
-784
-785
-786
-787
-788 public String getPathToMono() {
-789 return pathToMono;
-790 }
-791
-792
-793
-794
-795
-796
-797 public void setPathToMono(String pathToMono) {
-798 this .pathToMono = pathToMono;
-799 }
-800
-801 @Override
-802 public void execute() throws BuildException {
-803 dealWithReferences();
-804 validateConfiguration();
-805 populateSettings();
-806 Engine engine = null ;
-807 try {
-808 engine = new Engine(Check.class .getClassLoader());
-809 if (isUpdateOnly()) {
-810 log("Deprecated 'UpdateOnly' property set; please use the UpdateTask instead" , Project.MSG_WARN);
-811 try {
-812 engine.doUpdates();
-813 } catch (UpdateException ex) {
-814 if (this .isFailOnError()) {
-815 throw new BuildException(ex);
-816 }
-817 log(ex.getMessage(), Project.MSG_ERR);
-818 }
-819 } else {
-820 for (Resource resource : path) {
-821 final FileProvider provider = resource.as(FileProvider.class );
-822 if (provider != null ) {
-823 final File file = provider.getFile();
-824 if (file != null && file.exists()) {
-825 engine.scan(file);
-826 }
-827 }
-828 }
-829
-830 try {
-831 engine.analyzeDependencies();
-832 } catch (ExceptionCollection ex) {
-833 if (this .isFailOnError()) {
-834 throw new BuildException(ex);
-835 }
-836 }
-837 DatabaseProperties prop = null ;
-838 CveDB cve = null ;
-839 try {
-840 cve = new CveDB();
-841 cve.open();
-842 prop = cve.getDatabaseProperties();
-843 } catch (DatabaseException ex) {
-844 log("Unable to retrieve DB Properties" , ex, Project.MSG_DEBUG);
-845 } finally {
-846 if (cve != null ) {
-847 cve.close();
-848 }
-849 }
-850 final ReportGenerator reporter = new ReportGenerator(getProjectName(), engine.getDependencies(), engine.getAnalyzers(), prop);
-851 reporter.generateReports(reportOutputDirectory, reportFormat);
-852
-853 if (this .failBuildOnCVSS <= 10) {
-854 checkForFailure(engine.getDependencies());
-855 }
-856 if (this .showSummary) {
-857 showSummary(engine.getDependencies());
+753
+754
+755
+756 private Boolean nexusUsesProxy;
+757
+758
+759
+760
+761
+762
+763 public Boolean isNexusUsesProxy() {
+764 return nexusUsesProxy;
+765 }
+766
+767
+768
+769
+770
+771
+772 public void setNexusUsesProxy(Boolean nexusUsesProxy) {
+773 this .nexusUsesProxy = nexusUsesProxy;
+774 }
+775
+776
+777
+778
+779
+780 private String zipExtensions;
+781
+782
+783
+784
+785
+786
+787 public String getZipExtensions() {
+788 return zipExtensions;
+789 }
+790
+791
+792
+793
+794
+795
+796 public void setZipExtensions(String zipExtensions) {
+797 this .zipExtensions = zipExtensions;
+798 }
+799
+800
+801
+802
+803 private String pathToMono;
+804
+805
+806
+807
+808
+809
+810 public String getPathToMono() {
+811 return pathToMono;
+812 }
+813
+814
+815
+816
+817
+818
+819 public void setPathToMono(String pathToMono) {
+820 this .pathToMono = pathToMono;
+821 }
+822
+823 @Override
+824 public void execute() throws BuildException {
+825 dealWithReferences();
+826 validateConfiguration();
+827 populateSettings();
+828 Engine engine = null ;
+829 try {
+830 engine = new Engine(Check.class .getClassLoader());
+831 if (isUpdateOnly()) {
+832 log("Deprecated 'UpdateOnly' property set; please use the UpdateTask instead" , Project.MSG_WARN);
+833 try {
+834 engine.doUpdates();
+835 } catch (UpdateException ex) {
+836 if (this .isFailOnError()) {
+837 throw new BuildException(ex);
+838 }
+839 log(ex.getMessage(), Project.MSG_ERR);
+840 }
+841 } else {
+842 for (Resource resource : path) {
+843 final FileProvider provider = resource.as(FileProvider.class );
+844 if (provider != null ) {
+845 final File file = provider.getFile();
+846 if (file != null && file.exists()) {
+847 engine.scan(file);
+848 }
+849 }
+850 }
+851
+852 try {
+853 engine.analyzeDependencies();
+854 } catch (ExceptionCollection ex) {
+855 if (this .isFailOnError()) {
+856 throw new BuildException(ex);
+857 }
858 }
-859 }
-860 } catch (DatabaseException ex) {
-861 final String msg = "Unable to connect to the dependency-check database; analysis has stopped" ;
-862 if (this .isFailOnError()) {
-863 throw new BuildException(msg, ex);
-864 }
-865 log(msg, ex, Project.MSG_ERR);
-866 } catch (ReportException ex) {
-867 final String msg = "Unable to generate the dependency-check report" ;
-868 if (this .isFailOnError()) {
-869 throw new BuildException(msg, ex);
-870 }
-871 log(msg, ex, Project.MSG_ERR);
-872 } finally {
-873 Settings.cleanup(true );
-874 if (engine != null ) {
-875 engine.cleanup();
-876 }
-877 }
-878 }
-879
-880
-881
-882
-883
-884
-885
-886 private void validateConfiguration() throws BuildException {
-887 if (path == null ) {
-888 throw new BuildException("No project dependencies have been defined to analyze." );
-889 }
-890 if (failBuildOnCVSS < 0 || failBuildOnCVSS > 11) {
-891 throw new BuildException("Invalid configuration, failBuildOnCVSS must be between 0 and 11." );
-892 }
-893 }
-894
-895
-896
-897
-898
-899
-900
-901
-902 @Override
-903 protected void populateSettings() throws BuildException {
-904 super .populateSettings();
-905 Settings.setBooleanIfNotNull(Settings.KEYS.AUTO_UPDATE, autoUpdate);
-906 Settings.setStringIfNotEmpty(Settings.KEYS.SUPPRESSION_FILE, suppressionFile);
-907 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_EXPERIMENTAL_ENABLED, enableExperimental);
-908 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_JAR_ENABLED, jarAnalyzerEnabled);
-909 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_PYTHON_DISTRIBUTION_ENABLED, pyDistributionAnalyzerEnabled);
-910 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_PYTHON_PACKAGE_ENABLED, pyPackageAnalyzerEnabled);
-911 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_RUBY_GEMSPEC_ENABLED, rubygemsAnalyzerEnabled);
-912 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_OPENSSL_ENABLED, opensslAnalyzerEnabled);
-913 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_CMAKE_ENABLED, cmakeAnalyzerEnabled);
-914 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_AUTOCONF_ENABLED, autoconfAnalyzerEnabled);
-915 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_COMPOSER_LOCK_ENABLED, composerAnalyzerEnabled);
-916 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NODE_PACKAGE_ENABLED, nodeAnalyzerEnabled);
-917 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NUSPEC_ENABLED, nuspecAnalyzerEnabled);
-918 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_CENTRAL_ENABLED, centralAnalyzerEnabled);
-919 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NEXUS_ENABLED, nexusAnalyzerEnabled);
-920 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_ARCHIVE_ENABLED, archiveAnalyzerEnabled);
-921 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_ASSEMBLY_ENABLED, assemblyAnalyzerEnabled);
-922 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_NEXUS_URL, nexusUrl);
-923 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NEXUS_USES_PROXY, nexusUsesProxy);
-924 Settings.setStringIfNotEmpty(Settings.KEYS.ADDITIONAL_ZIP_EXTENSIONS, zipExtensions);
-925 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH, pathToMono);
-926 }
-927
-928
-929
-930
-931
-932
-933
-934
-935
-936 private void checkForFailure(List<Dependency> dependencies) throws BuildException {
-937 final StringBuilder ids = new StringBuilder();
-938 for (Dependency d : dependencies) {
-939 for (Vulnerability v : d.getVulnerabilities()) {
-940 if (v.getCvssScore() >= failBuildOnCVSS) {
-941 if (ids.length() == 0) {
-942 ids.append(v.getName());
-943 } else {
-944 ids.append(", " ).append(v.getName());
-945 }
-946 }
-947 }
-948 }
-949 if (ids.length() > 0) {
-950 final String msg = String.format("%n%nDependency-Check Failure:%n"
-951 + "One or more dependencies were identified with vulnerabilities that have a CVSS score greater then '%.1f': %s%n"
-952 + "See the dependency-check report for more details.%n%n" , failBuildOnCVSS, ids.toString());
-953 throw new BuildException(msg);
-954 }
-955 }
-956
-957
-958
-959
-960
-961
-962
-963 private void showSummary(List<Dependency> dependencies) {
-964 final StringBuilder summary = new StringBuilder();
-965 for (Dependency d : dependencies) {
-966 boolean firstEntry = true ;
-967 final StringBuilder ids = new StringBuilder();
-968 for (Vulnerability v : d.getVulnerabilities()) {
-969 if (firstEntry) {
-970 firstEntry = false;
-971 } else {
-972 ids.append(", " );
-973 }
-974 ids.append(v.getName());
-975 }
-976 if (ids.length() > 0) {
-977 summary.append(d.getFileName()).append(" (" );
-978 firstEntry = true ;
-979 for (Identifier id : d.getIdentifiers()) {
-980 if (firstEntry) {
-981 firstEntry = false;
-982 } else {
-983 summary.append(", " );
-984 }
-985 summary.append(id.getValue());
-986 }
-987 summary.append(") : " ).append(ids).append(NEW_LINE);
-988 }
-989 }
-990 if (summary.length() > 0) {
-991 final String msg = String.format("%n%n"
-992 + "One or more dependencies were identified with known vulnerabilities:%n%n%s"
-993 + "%n%nSee the dependency-check report for more details.%n%n" , summary.toString());
-994 log(msg, Project.MSG_WARN);
-995 }
-996 }
-997
-998
-999
-1000
-1001
-1002 public static class ReportFormats extends EnumeratedAttribute {
-1003
-1004
-1005
-1006
-1007
-1008
-1009 @Override
-1010 public String[] getValues() {
-1011 int i = 0;
-1012 final Format[] formats = Format.values();
-1013 final String[] values = new String[formats.length];
-1014 for (Format format : formats) {
-1015 values[i++] = format.name();
-1016 }
-1017 return values;
+859 DatabaseProperties prop = null ;
+860 CveDB cve = null ;
+861 try {
+862 cve = new CveDB();
+863 cve.open();
+864 prop = cve.getDatabaseProperties();
+865 } catch (DatabaseException ex) {
+866 log("Unable to retrieve DB Properties" , ex, Project.MSG_DEBUG);
+867 } finally {
+868 if (cve != null ) {
+869 cve.close();
+870 }
+871 }
+872 final ReportGenerator reporter = new ReportGenerator(getProjectName(), engine.getDependencies(), engine.getAnalyzers(), prop);
+873 reporter.generateReports(reportOutputDirectory, reportFormat);
+874
+875 if (this .failBuildOnCVSS <= 10) {
+876 checkForFailure(engine.getDependencies());
+877 }
+878 if (this .showSummary) {
+879 showSummary(engine.getDependencies());
+880 }
+881 }
+882 } catch (DatabaseException ex) {
+883 final String msg = "Unable to connect to the dependency-check database; analysis has stopped" ;
+884 if (this .isFailOnError()) {
+885 throw new BuildException(msg, ex);
+886 }
+887 log(msg, ex, Project.MSG_ERR);
+888 } catch (ReportException ex) {
+889 final String msg = "Unable to generate the dependency-check report" ;
+890 if (this .isFailOnError()) {
+891 throw new BuildException(msg, ex);
+892 }
+893 log(msg, ex, Project.MSG_ERR);
+894 } finally {
+895 Settings.cleanup(true );
+896 if (engine != null ) {
+897 engine.cleanup();
+898 }
+899 }
+900 }
+901
+902
+903
+904
+905
+906
+907
+908 private void validateConfiguration() throws BuildException {
+909 if (path == null ) {
+910 throw new BuildException("No project dependencies have been defined to analyze." );
+911 }
+912 if (failBuildOnCVSS < 0 || failBuildOnCVSS > 11) {
+913 throw new BuildException("Invalid configuration, failBuildOnCVSS must be between 0 and 11." );
+914 }
+915 }
+916
+917
+918
+919
+920
+921
+922
+923
+924 @Override
+925 protected void populateSettings() throws BuildException {
+926 super .populateSettings();
+927 Settings.setBooleanIfNotNull(Settings.KEYS.AUTO_UPDATE, autoUpdate);
+928 Settings.setStringIfNotEmpty(Settings.KEYS.SUPPRESSION_FILE, suppressionFile);
+929 Settings.setStringIfNotEmpty(Settings.KEYS.HINTS_FILE, hintsFile);
+930 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_EXPERIMENTAL_ENABLED, enableExperimental);
+931 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_JAR_ENABLED, jarAnalyzerEnabled);
+932 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_PYTHON_DISTRIBUTION_ENABLED, pyDistributionAnalyzerEnabled);
+933 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_PYTHON_PACKAGE_ENABLED, pyPackageAnalyzerEnabled);
+934 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_RUBY_GEMSPEC_ENABLED, rubygemsAnalyzerEnabled);
+935 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_OPENSSL_ENABLED, opensslAnalyzerEnabled);
+936 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_CMAKE_ENABLED, cmakeAnalyzerEnabled);
+937 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_AUTOCONF_ENABLED, autoconfAnalyzerEnabled);
+938 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_COMPOSER_LOCK_ENABLED, composerAnalyzerEnabled);
+939 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NODE_PACKAGE_ENABLED, nodeAnalyzerEnabled);
+940 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NUSPEC_ENABLED, nuspecAnalyzerEnabled);
+941 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_CENTRAL_ENABLED, centralAnalyzerEnabled);
+942 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NEXUS_ENABLED, nexusAnalyzerEnabled);
+943 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_ARCHIVE_ENABLED, archiveAnalyzerEnabled);
+944 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_ASSEMBLY_ENABLED, assemblyAnalyzerEnabled);
+945 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_NEXUS_URL, nexusUrl);
+946 Settings.setBooleanIfNotNull(Settings.KEYS.ANALYZER_NEXUS_USES_PROXY, nexusUsesProxy);
+947 Settings.setStringIfNotEmpty(Settings.KEYS.ADDITIONAL_ZIP_EXTENSIONS, zipExtensions);
+948 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH, pathToMono);
+949 }
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959 private void checkForFailure(List<Dependency> dependencies) throws BuildException {
+960 final StringBuilder ids = new StringBuilder();
+961 for (Dependency d : dependencies) {
+962 for (Vulnerability v : d.getVulnerabilities()) {
+963 if (v.getCvssScore() >= failBuildOnCVSS) {
+964 if (ids.length() == 0) {
+965 ids.append(v.getName());
+966 } else {
+967 ids.append(", " ).append(v.getName());
+968 }
+969 }
+970 }
+971 }
+972 if (ids.length() > 0) {
+973 final String msg = String.format("%n%nDependency-Check Failure:%n"
+974 + "One or more dependencies were identified with vulnerabilities that have a CVSS score greater then '%.1f': %s%n"
+975 + "See the dependency-check report for more details.%n%n" , failBuildOnCVSS, ids.toString());
+976 throw new BuildException(msg);
+977 }
+978 }
+979
+980
+981
+982
+983
+984
+985
+986 private void showSummary(List<Dependency> dependencies) {
+987 final StringBuilder summary = new StringBuilder();
+988 for (Dependency d : dependencies) {
+989 boolean firstEntry = true ;
+990 final StringBuilder ids = new StringBuilder();
+991 for (Vulnerability v : d.getVulnerabilities()) {
+992 if (firstEntry) {
+993 firstEntry = false;
+994 } else {
+995 ids.append(", " );
+996 }
+997 ids.append(v.getName());
+998 }
+999 if (ids.length() > 0) {
+1000 summary.append(d.getFileName()).append(" (" );
+1001 firstEntry = true ;
+1002 for (Identifier id : d.getIdentifiers()) {
+1003 if (firstEntry) {
+1004 firstEntry = false;
+1005 } else {
+1006 summary.append(", " );
+1007 }
+1008 summary.append(id.getValue());
+1009 }
+1010 summary.append(") : " ).append(ids).append(NEW_LINE);
+1011 }
+1012 }
+1013 if (summary.length() > 0) {
+1014 final String msg = String.format("%n%n"
+1015 + "One or more dependencies were identified with known vulnerabilities:%n%n%s"
+1016 + "%n%nSee the dependency-check report for more details.%n%n" , summary.toString());
+1017 log(msg, Project.MSG_WARN);
1018 }
1019 }
-1020 }
+1020
+1021
+1022
+1023
+1024
+1025 public static class ReportFormats extends EnumeratedAttribute {
+1026
+1027
+1028
+1029
+1030
+1031
+1032 @Override
+1033 public String[] getValues() {
+1034 int i = 0;
+1035 final Format[] formats = Format.values();
+1036 final String[] values = new String[formats.length];
+1037 for (Format format : formats) {
+1038 values[i++] = format.name();
+1039 }
+1040 return values;
+1041 }
+1042 }
+1043 }
diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html
index 683c19176..6d6c7c2fe 100644
--- a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html
+++ b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-frame.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference Package org.owasp.dependencycheck.taskdefs
+ Dependency-Check Ant Task 1.4.4 Reference Package org.owasp.dependencycheck.taskdefs
diff --git a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html
index aa7ba8d8a..ba7404dc3 100644
--- a/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html
+++ b/dependency-check-ant/xref/org/owasp/dependencycheck/taskdefs/package-summary.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference Package org.owasp.dependencycheck.taskdefs
+ Dependency-Check Ant Task 1.4.4 Reference Package org.owasp.dependencycheck.taskdefs
diff --git a/dependency-check-ant/xref/org/slf4j/impl/package-frame.html b/dependency-check-ant/xref/org/slf4j/impl/package-frame.html
index 56f691028..a7b77f31a 100644
--- a/dependency-check-ant/xref/org/slf4j/impl/package-frame.html
+++ b/dependency-check-ant/xref/org/slf4j/impl/package-frame.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference Package org.slf4j.impl
+ Dependency-Check Ant Task 1.4.4 Reference Package org.slf4j.impl
diff --git a/dependency-check-ant/xref/org/slf4j/impl/package-summary.html b/dependency-check-ant/xref/org/slf4j/impl/package-summary.html
index 65fb0ceeb..720e5a0e7 100644
--- a/dependency-check-ant/xref/org/slf4j/impl/package-summary.html
+++ b/dependency-check-ant/xref/org/slf4j/impl/package-summary.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference Package org.slf4j.impl
+ Dependency-Check Ant Task 1.4.4 Reference Package org.slf4j.impl
diff --git a/dependency-check-ant/xref/overview-frame.html b/dependency-check-ant/xref/overview-frame.html
index 9e7c3a85a..246ef399c 100644
--- a/dependency-check-ant/xref/overview-frame.html
+++ b/dependency-check-ant/xref/overview-frame.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference
+ Dependency-Check Ant Task 1.4.4 Reference
diff --git a/dependency-check-ant/xref/overview-summary.html b/dependency-check-ant/xref/overview-summary.html
index 6b8932af8..c1848b65e 100644
--- a/dependency-check-ant/xref/overview-summary.html
+++ b/dependency-check-ant/xref/overview-summary.html
@@ -3,7 +3,7 @@
- Dependency-Check Ant Task 1.4.3 Reference
+ Dependency-Check Ant Task 1.4.4 Reference
@@ -24,7 +24,7 @@
- Dependency-Check Ant Task 1.4.3 Reference
+ Dependency-Check Ant Task 1.4.4 Reference
diff --git a/dependency-check-cli/apidocs/allclasses-frame.html b/dependency-check-cli/apidocs/allclasses-frame.html
index 62b36a1ed..e4ff86e25 100644
--- a/dependency-check-cli/apidocs/allclasses-frame.html
+++ b/dependency-check-cli/apidocs/allclasses-frame.html
@@ -2,10 +2,10 @@
-
+
-All Classes (Dependency-Check Command Line 1.4.3 API)
-
+All Classes (Dependency-Check Command Line 1.4.4 API)
+
diff --git a/dependency-check-cli/apidocs/allclasses-noframe.html b/dependency-check-cli/apidocs/allclasses-noframe.html
index f227c3a4a..775022a85 100644
--- a/dependency-check-cli/apidocs/allclasses-noframe.html
+++ b/dependency-check-cli/apidocs/allclasses-noframe.html
@@ -2,10 +2,10 @@
-
+
-All Classes (Dependency-Check Command Line 1.4.3 API)
-
+All Classes (Dependency-Check Command Line 1.4.4 API)
+
diff --git a/dependency-check-cli/apidocs/constant-values.html b/dependency-check-cli/apidocs/constant-values.html
index ab1e06e82..091db6d43 100644
--- a/dependency-check-cli/apidocs/constant-values.html
+++ b/dependency-check-cli/apidocs/constant-values.html
@@ -2,10 +2,10 @@
-
+
-Constant Field Values (Dependency-Check Command Line 1.4.3 API)
-
+Constant Field Values (Dependency-Check Command Line 1.4.4 API)
+
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,13 +13,13 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
diff --git a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html
index 7cc622dd3..3da449cc7 100644
--- a/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html
+++ b/dependency-check-cli/apidocs/org/owasp/dependencycheck/package-summary.html
@@ -2,10 +2,10 @@
-
+
-org.owasp.dependencycheck (Dependency-Check Command Line 1.4.3 API)
-
+org.owasp.dependencycheck (Dependency-Check Command Line 1.4.4 API)
+
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@
-
+
diff --git a/dependency-check-cli/cobertura/frame-summary.html b/dependency-check-cli/cobertura/frame-summary.html
index e944f6a2a..6d7faac29 100644
--- a/dependency-check-cli/cobertura/frame-summary.html
+++ b/dependency-check-cli/cobertura/frame-summary.html
@@ -16,8 +16,8 @@
-
+
diff --git a/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html b/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html
index 104fe0adf..b1981e996 100644
--- a/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html
+++ b/dependency-check-cli/cobertura/org.owasp.dependencycheck.App.html
@@ -12,7 +12,7 @@
@@ -60,711 +60,715 @@
21
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
22
- import java.io.File;
+ import ch.qos.logback.classic.spi.ILoggingEvent;
23
- import java.io.FileNotFoundException;
+ import java.io.File;
24
- import java.io.IOException;
+ import java.io.FileNotFoundException;
25
- import java.util.ArrayList;
+ import java.io.IOException;
26
- import java.util.HashSet;
+ import java.util.ArrayList;
27
- import java.util.List;
+ import java.util.HashSet;
28
- import java.util.Set;
+ import java.util.List;
29
- import org.apache.commons.cli.ParseException;
+ import java.util.Set;
30
- import org.owasp.dependencycheck.data.nvdcve.CveDB;
+ import org.apache.commons.cli.ParseException;
31
- import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
+ import org.owasp.dependencycheck.data.nvdcve.CveDB;
32
- import org.owasp.dependencycheck.data.nvdcve.DatabaseProperties;
+ import org.owasp.dependencycheck.data.nvdcve.DatabaseException;
33
- import org.owasp.dependencycheck.dependency.Dependency;
+ import org.owasp.dependencycheck.data.nvdcve.DatabaseProperties;
34
- import org.apache.tools.ant.DirectoryScanner;
+ import org.owasp.dependencycheck.dependency.Dependency;
35
- import org.owasp.dependencycheck.reporting.ReportGenerator;
+ import org.apache.tools.ant.DirectoryScanner;
36
- import org.owasp.dependencycheck.utils.Settings;
+ import org.owasp.dependencycheck.reporting.ReportGenerator;
37
- import org.slf4j.Logger;
+ import org.owasp.dependencycheck.utils.Settings;
38
- import org.slf4j.LoggerFactory;
+ import org.slf4j.Logger;
39
- import ch.qos.logback.core.FileAppender;
+ import org.slf4j.LoggerFactory;
40
- import org.owasp.dependencycheck.data.update.exception.UpdateException;
+ import ch.qos.logback.core.FileAppender;
41
- import org.owasp.dependencycheck.exception.ExceptionCollection;
+ import org.owasp.dependencycheck.data.update.exception.UpdateException;
42
- import org.owasp.dependencycheck.exception.ReportException;
+ import org.owasp.dependencycheck.exception.ExceptionCollection;
43
- import org.owasp.dependencycheck.utils.InvalidSettingException;
+ import org.owasp.dependencycheck.exception.ReportException;
44
- import org.slf4j.impl.StaticLoggerBinder;
+ import org.owasp.dependencycheck.utils.InvalidSettingException;
45
-
+ import org.slf4j.impl.StaticLoggerBinder;
46
-
+
47
-
+
48
-
+
49
-
+
50
+
+ 51
- 51 2 public class App {
- 52
-
+ 52 2 public class App {
53
-
+
54
-
+
55
+
+ 56
- 56 1 private static final Logger LOGGER = LoggerFactory.getLogger(App.class );
- 57
-
+ 57 1 private static final Logger LOGGER = LoggerFactory.getLogger(App.class );
58
-
+
59
-
+
60
-
+
61
-
+
62
-
- 63
- public static void main(String[] args) {
- 64 0 int exitCode = 0;
- 65
- try {
- 66 0 Settings.initialize();
- 67 0 final App app = new App();
- 68 0 exitCode = app.run(args);
- 69 0 LOGGER.debug("Exit code: " + exitCode);
- 70
- } finally {
- 71 0 Settings.cleanup(true );
- 72 0 }
- 73 0 System.exit(exitCode);
- 74 0 }
- 75
-
- 76
-
- 77
-
- 78
-
- 79
+ 63
+
+ 64
+ public static void main(String[] args) {
+ 65 0 int exitCode = 0;
+ 66
+ try {
+ 67 0 Settings.initialize();
+ 68 0 final App app = new App();
+ 69 0 exitCode = app.run(args);
+ 70 0 LOGGER.debug("Exit code: " + exitCode);
+ 71
+ } finally {
+ 72 0 Settings.cleanup(true );
+ 73 0 }
+ 74 0 System.exit(exitCode);
+ 75 0 }
+ 76
+
+ 77
+
+ 78
+
+ 79
+
80
-
+
81
-
+
82
+
+ 83
public int run(String[] args) {
- 83 0 int exitCode = 0;
- 84 0 final CliParser cli = new CliParser();
- 85
-
+ 84 0 int exitCode = 0;
+ 85 0 final CliParser cli = new CliParser();
86
- try {
- 87 0 cli.parse(args);
- 88 0 } catch (FileNotFoundException ex) {
- 89 0 System.err.println(ex.getMessage());
- 90 0 cli.printHelp();
- 91 0 return -1;
- 92 0 } catch (ParseException ex) {
- 93 0 System.err.println(ex.getMessage());
- 94 0 cli.printHelp();
- 95 0 return -2;
- 96 0 }
- 97
- 98 0 if (cli.getVerboseLog() != null ) {
- 99 0 prepareLogger(cli.getVerboseLog());
- 100
- }
+ 87
+ try {
+ 88 0 cli.parse(args);
+ 89 0 } catch (FileNotFoundException ex) {
+ 90 0 System.err.println(ex.getMessage());
+ 91 0 cli.printHelp();
+ 92 0 return -1;
+ 93 0 } catch (ParseException ex) {
+ 94 0 System.err.println(ex.getMessage());
+ 95 0 cli.printHelp();
+ 96 0 return -2;
+ 97 0 }
+ 98
+
+ 99 0 if (cli.getVerboseLog() != null ) {
+ 100 0 prepareLogger(cli.getVerboseLog());
101
+ }
+ 102
- 102 0 if (cli.isPurge()) {
- 103 0 if (cli.getConnectionString() != null ) {
- 104 0 LOGGER.error("Unable to purge the database when using a non-default connection string" );
- 105 0 exitCode = -3;
- 106
- } else {
+ 103 0 if (cli.isPurge()) {
+ 104 0 if (cli.getConnectionString() != null ) {
+ 105 0 LOGGER.error("Unable to purge the database when using a non-default connection string" );
+ 106 0 exitCode = -3;
107
+ } else {
+ 108
try {
- 108 0 populateSettings(cli);
- 109 0 } catch (InvalidSettingException ex) {
- 110 0 LOGGER.error(ex.getMessage());
- 111 0 LOGGER.debug("Error loading properties file" , ex);
- 112 0 exitCode = -4;
- 113 0 }
- 114
- File db;
+ 109 0 populateSettings(cli);
+ 110 0 } catch (InvalidSettingException ex) {
+ 111 0 LOGGER.error(ex.getMessage());
+ 112 0 LOGGER.debug("Error loading properties file" , ex);
+ 113 0 exitCode = -4;
+ 114 0 }
115
+ File db;
+ 116
try {
- 116 0 db = new File(Settings.getDataDirectory(), "dc.h2.db" );
- 117 0 if (db.exists()) {
- 118 0 if (db.delete()) {
- 119 0 LOGGER.info("Database file purged; local copy of the NVD has been removed" );
- 120
+ 117 0 db = new File(Settings.getDataDirectory(), "dc.h2.db" );
+ 118 0 if (db.exists()) {
+ 119 0 if (db.delete()) {
+ 120 0 LOGGER.info("Database file purged; local copy of the NVD has been removed" );
+ 121
} else {
- 121 0 LOGGER.error("Unable to delete '{}'; please delete the file manually" , db.getAbsolutePath());
- 122 0 exitCode = -5;
- 123
- }
+ 122 0 LOGGER.error("Unable to delete '{}'; please delete the file manually" , db.getAbsolutePath());
+ 123 0 exitCode = -5;
124
+ }
+ 125
} else {
- 125 0 LOGGER.error("Unable to purge database; the database file does not exists: {}" , db.getAbsolutePath());
- 126 0 exitCode = -6;
- 127
+ 126 0 LOGGER.error("Unable to purge database; the database file does not exists: {}" , db.getAbsolutePath());
+ 127 0 exitCode = -6;
+ 128
}
- 128 0 } catch (IOException ex) {
- 129 0 LOGGER.error("Unable to delete the database" );
- 130 0 exitCode = -7;
- 131 0 }
- 132
+ 129 0 } catch (IOException ex) {
+ 130 0 LOGGER.error("Unable to delete the database" );
+ 131 0 exitCode = -7;
+ 132 0 }
+ 133
}
- 133 0 } else if (cli.isGetVersion()) {
- 134 0 cli.printVersionInfo();
- 135 0 } else if (cli.isUpdateOnly()) {
- 136
+ 134 0 } else if (cli.isGetVersion()) {
+ 135 0 cli.printVersionInfo();
+ 136 0 } else if (cli.isUpdateOnly()) {
+ 137
try {
- 137 0 populateSettings(cli);
- 138 0 } catch (InvalidSettingException ex) {
- 139 0 LOGGER.error(ex.getMessage());
- 140 0 LOGGER.debug("Error loading properties file" , ex);
- 141 0 exitCode = -4;
- 142 0 }
- 143
+ 138 0 populateSettings(cli);
+ 139 0 } catch (InvalidSettingException ex) {
+ 140 0 LOGGER.error(ex.getMessage());
+ 141 0 LOGGER.debug("Error loading properties file" , ex);
+ 142 0 exitCode = -4;
+ 143 0 }
+ 144
try {
- 144 0 runUpdateOnly();
- 145 0 } catch (UpdateException ex) {
- 146 0 LOGGER.error(ex.getMessage());
- 147 0 exitCode = -8;
- 148 0 } catch (DatabaseException ex) {
- 149 0 LOGGER.error(ex.getMessage());
- 150 0 exitCode = -9;
- 151 0 }
- 152 0 } else if (cli.isRunScan()) {
- 153
+ 145 0 runUpdateOnly();
+ 146 0 } catch (UpdateException ex) {
+ 147 0 LOGGER.error(ex.getMessage());
+ 148 0 exitCode = -8;
+ 149 0 } catch (DatabaseException ex) {
+ 150 0 LOGGER.error(ex.getMessage());
+ 151 0 exitCode = -9;
+ 152 0 }
+ 153 0 } else if (cli.isRunScan()) {
+ 154
try {
- 154 0 populateSettings(cli);
- 155 0 } catch (InvalidSettingException ex) {
- 156 0 LOGGER.error(ex.getMessage());
- 157 0 LOGGER.debug("Error loading properties file" , ex);
- 158 0 exitCode = -4;
- 159 0 }
- 160
+ 155 0 populateSettings(cli);
+ 156 0 } catch (InvalidSettingException ex) {
+ 157 0 LOGGER.error(ex.getMessage());
+ 158 0 LOGGER.debug("Error loading properties file" , ex);
+ 159 0 exitCode = -4;
+ 160 0 }
+ 161
try {
- 161 0 final String[] scanFiles = cli.getScanFiles();
- 162 0 if (scanFiles != null ) {
- 163 0 runScan(cli.getReportDirectory(), cli.getReportFormat(), cli.getProjectName(), scanFiles,
- 164 0 cli.getExcludeList(), cli.getSymLinkDepth());
- 165
+ 162 0 final String[] scanFiles = cli.getScanFiles();
+ 163 0 if (scanFiles != null ) {
+ 164 0 runScan(cli.getReportDirectory(), cli.getReportFormat(), cli.getProjectName(), scanFiles,
+ 165 0 cli.getExcludeList(), cli.getSymLinkDepth());
+ 166
} else {
- 166 0 LOGGER.error("No scan files configured" );
- 167
+ 167 0 LOGGER.error("No scan files configured" );
+ 168
}
- 168 0 } catch (InvalidScanPathException ex) {
- 169 0 LOGGER.error("An invalid scan path was detected; unable to scan '//*' paths" );
- 170 0 exitCode = -10;
- 171 0 } catch (DatabaseException ex) {
- 172 0 LOGGER.error(ex.getMessage());
- 173 0 exitCode = -11;
- 174 0 } catch (ReportException ex) {
- 175 0 LOGGER.error(ex.getMessage());
- 176 0 exitCode = -12;
- 177 0 } catch (ExceptionCollection ex) {
- 178 0 if (ex.isFatal()) {
- 179 0 exitCode = -13;
- 180 0 LOGGER.error("One or more fatal errors occured" );
- 181
+ 169 0 } catch (InvalidScanPathException ex) {
+ 170 0 LOGGER.error("An invalid scan path was detected; unable to scan '//*' paths" );
+ 171 0 exitCode = -10;
+ 172 0 } catch (DatabaseException ex) {
+ 173 0 LOGGER.error(ex.getMessage());
+ 174 0 exitCode = -11;
+ 175 0 } catch (ReportException ex) {
+ 176 0 LOGGER.error(ex.getMessage());
+ 177 0 exitCode = -12;
+ 178 0 } catch (ExceptionCollection ex) {
+ 179 0 if (ex.isFatal()) {
+ 180 0 exitCode = -13;
+ 181 0 LOGGER.error("One or more fatal errors occurred" );
+ 182
} else {
- 182 0 exitCode = -14;
- 183
+ 183 0 exitCode = -14;
+ 184
}
- 184 0 for (Throwable e : ex.getExceptions()) {
- 185 0 LOGGER.error(e.getMessage());
- 186 0 }
- 187 0 }
- 188
+ 185 0 for (Throwable e : ex.getExceptions()) {
+ 186 0 LOGGER.error(e.getMessage());
+ 187 0 }
+ 188 0 }
+ 189
} else {
- 189 0 cli.printHelp();
- 190
+ 190 0 cli.printHelp();
+ 191
}
- 191 0 return exitCode;
- 192
- }
+ 192 0 return exitCode;
193
-
+ }
194
-
+
195
-
+
196
-
+
197
-
+
198
-
+
199
-
+
200
-
+
201
-
+
202
-
+
203
-
+
204
-
+
205
-
+
206
-
+
207
-
+
208
-
+
209
-
+
210
-
+
211
-
+
212
-
+
213
-
+
214
-
+
215
- private void runScan(String reportDirectory, String outputFormat, String applicationName, String[] files,
+
216
+ private void runScan(String reportDirectory, String outputFormat, String applicationName, String[] files,
+ 217
String[] excludes, int symLinkDepth) throws InvalidScanPathException, DatabaseException, ExceptionCollection, ReportException {
- 217 0 Engine engine = null ;
- 218
+ 218 0 Engine engine = null ;
+ 219
try {
- 219 0 engine = new Engine();
- 220 0 final List<String> antStylePaths = new ArrayList<String>();
- 221 0 for (String file : files) {
- 222 0 final String antPath = ensureCanonicalPath(file);
- 223 0 antStylePaths.add(antPath);
- 224
- }
+ 220 0 engine = new Engine();
+ 221 0 final List<String> antStylePaths = new ArrayList<String>();
+ 222 0 for (String file : files) {
+ 223 0 final String antPath = ensureCanonicalPath(file);
+ 224 0 antStylePaths.add(antPath);
225
+ }
+ 226
- 226 0 final Set<File> paths = new HashSet<File>();
- 227 0 for (String file : antStylePaths) {
- 228 0 LOGGER.debug("Scanning {}" , file);
- 229 0 final DirectoryScanner scanner = new DirectoryScanner();
- 230 0 String include = file.replace('\\' , '/' );
- 231
- File baseDir;
+ 227 0 final Set<File> paths = new HashSet<File>();
+ 228 0 for (String file : antStylePaths) {
+ 229 0 LOGGER.debug("Scanning {}" , file);
+ 230 0 final DirectoryScanner scanner = new DirectoryScanner();
+ 231 0 String include = file.replace('\\' , '/' );
232
+ File baseDir;
+ 233
- 233 0 if (include.startsWith("//" )) {
- 234 0 throw new InvalidScanPathException("Unable to scan paths specified by //" );
- 235
+ 234 0 if (include.startsWith("//" )) {
+ 235 0 throw new InvalidScanPathException("Unable to scan paths specified by //" );
+ 236
} else {
- 236 0 final int pos = getLastFileSeparator(include);
- 237 0 final String tmpBase = include.substring(0, pos);
- 238 0 final String tmpInclude = include.substring(pos + 1);
- 239 0 if (tmpInclude.indexOf('*' ) >= 0 || tmpInclude.indexOf('?' ) >= 0
- 240 0 || (new File(include)).isFile()) {
- 241 0 baseDir = new File(tmpBase);
- 242 0 include = tmpInclude;
- 243
+ 237 0 final int pos = getLastFileSeparator(include);
+ 238 0 final String tmpBase = include.substring(0, pos);
+ 239 0 final String tmpInclude = include.substring(pos + 1);
+ 240 0 if (tmpInclude.indexOf('*' ) >= 0 || tmpInclude.indexOf('?' ) >= 0
+ 241 0 || (new File(include)).isFile()) {
+ 242 0 baseDir = new File(tmpBase);
+ 243 0 include = tmpInclude;
+ 244
} else {
- 244 0 baseDir = new File(tmpBase, tmpInclude);
- 245 0 include = "**/*" ;
- 246
- }
+ 245 0 baseDir = new File(tmpBase, tmpInclude);
+ 246 0 include = "**/*" ;
247
- }
- 248 0 scanner.setBasedir(baseDir);
- 249 0 final String[] includes = {include};
- 250 0 scanner.setIncludes(includes);
- 251 0 scanner.setMaxLevelsOfSymlinks(symLinkDepth);
- 252 0 if (symLinkDepth <= 0) {
- 253 0 scanner.setFollowSymlinks(false );
- 254
- }
- 255 0 if (excludes != null && excludes.length > 0) {
- 256 0 scanner.addExcludes(excludes);
- 257
- }
- 258 0 scanner.scan();
- 259 0 if (scanner.getIncludedFilesCount() > 0) {
- 260 0 for (String s : scanner.getIncludedFiles()) {
- 261 0 final File f = new File(baseDir, s);
- 262 0 LOGGER.debug("Found file {}" , f.toString());
- 263 0 paths.add(f);
- 264
}
+ 248
+ }
+ 249 0 scanner.setBasedir(baseDir);
+ 250 0 final String[] includes = {include};
+ 251 0 scanner.setIncludes(includes);
+ 252 0 scanner.setMaxLevelsOfSymlinks(symLinkDepth);
+ 253 0 if (symLinkDepth <= 0) {
+ 254 0 scanner.setFollowSymlinks(false );
+ 255
+ }
+ 256 0 if (excludes != null && excludes.length > 0) {
+ 257 0 scanner.addExcludes(excludes);
+ 258
+ }
+ 259 0 scanner.scan();
+ 260 0 if (scanner.getIncludedFilesCount() > 0) {
+ 261 0 for (String s : scanner.getIncludedFiles()) {
+ 262 0 final File f = new File(baseDir, s);
+ 263 0 LOGGER.debug("Found file {}" , f.toString());
+ 264 0 paths.add(f);
265
+ }
+ 266
}
- 266 0 }
- 267 0 engine.scan(paths);
- 268
+ 267 0 }
+ 268 0 engine.scan(paths);
+ 269
- 269 0 ExceptionCollection exCol = null ;
- 270
+ 270 0 ExceptionCollection exCol = null ;
+ 271
try {
- 271 0 engine.analyzeDependencies();
- 272 0 } catch (ExceptionCollection ex) {
- 273 0 if (ex.isFatal()) {
- 274 0 throw ex;
- 275
+ 272 0 engine.analyzeDependencies();
+ 273 0 } catch (ExceptionCollection ex) {
+ 274 0 if (ex.isFatal()) {
+ 275 0 throw ex;
+ 276
}
- 276 0 exCol = ex;
- 277 0 }
- 278 0 final List<Dependency> dependencies = engine.getDependencies();
- 279 0 DatabaseProperties prop = null ;
- 280 0 CveDB cve = null ;
- 281
+ 277 0 exCol = ex;
+ 278 0 }
+ 279 0 final List<Dependency> dependencies = engine.getDependencies();
+ 280 0 DatabaseProperties prop = null ;
+ 281 0 CveDB cve = null ;
+ 282
try {
- 282 0 cve = new CveDB();
- 283 0 cve.open();
- 284 0 prop = cve.getDatabaseProperties();
- 285
+ 283 0 cve = new CveDB();
+ 284 0 cve.open();
+ 285 0 prop = cve.getDatabaseProperties();
+ 286
} finally {
- 286 0 if (cve != null ) {
- 287 0 cve.close();
- 288
- }
+ 287 0 if (cve != null ) {
+ 288 0 cve.close();
289
- }
- 290 0 final ReportGenerator report = new ReportGenerator(applicationName, dependencies, engine.getAnalyzers(), prop);
- 291
- try {
- 292 0 report.generateReports(reportDirectory, outputFormat);
- 293 0 } catch (ReportException ex) {
- 294 0 if (exCol != null ) {
- 295 0 exCol.addException(ex);
- 296 0 throw exCol;
- 297
- } else {
- 298 0 throw ex;
- 299
}
- 300 0 }
- 301 0 if (exCol != null && exCol.getExceptions().size() > 0) {
- 302 0 throw exCol;
- 303
+ 290
}
- 304
- } finally {
- 305 0 if (engine != null ) {
- 306 0 engine.cleanup();
- 307
- }
- 308
- }
- 309
-
- 310 0 }
- 311
-
- 312
-
- 313
-
- 314
-
- 315
-
- 316
-
- 317
-
- 318
-
- 319
- private void runUpdateOnly() throws UpdateException, DatabaseException {
- 320 0 Engine engine = null ;
- 321
- try {
- 322 0 engine = new Engine();
- 323 0 engine.doUpdates();
- 324
- } finally {
- 325 0 if (engine != null ) {
- 326 0 engine.cleanup();
- 327
- }
- 328
- }
- 329 0 }
- 330
-
- 331
-
- 332
-
- 333
-
- 334
-
- 335
-
- 336
-
- 337
-
- 338
-
- 339
-
- 340
- private void populateSettings(CliParser cli) throws InvalidSettingException {
- 341 0 final boolean autoUpdate = cli.isAutoUpdate();
- 342 0 final String connectionTimeout = cli.getConnectionTimeout();
- 343 0 final String proxyServer = cli.getProxyServer();
- 344 0 final String proxyPort = cli.getProxyPort();
- 345 0 final String proxyUser = cli.getProxyUsername();
- 346 0 final String proxyPass = cli.getProxyPassword();
- 347 0 final String dataDirectory = cli.getDataDirectory();
- 348 0 final File propertiesFile = cli.getPropertiesFile();
- 349 0 final String suppressionFile = cli.getSuppressionFile();
- 350 0 final String nexusUrl = cli.getNexusUrl();
- 351 0 final String databaseDriverName = cli.getDatabaseDriverName();
- 352 0 final String databaseDriverPath = cli.getDatabaseDriverPath();
- 353 0 final String connectionString = cli.getConnectionString();
- 354 0 final String databaseUser = cli.getDatabaseUser();
- 355 0 final String databasePassword = cli.getDatabasePassword();
- 356 0 final String additionalZipExtensions = cli.getAdditionalZipExtensions();
- 357 0 final String pathToMono = cli.getPathToMono();
- 358 0 final String cveMod12 = cli.getModifiedCve12Url();
- 359 0 final String cveMod20 = cli.getModifiedCve20Url();
- 360 0 final String cveBase12 = cli.getBaseCve12Url();
- 361 0 final String cveBase20 = cli.getBaseCve20Url();
- 362 0 final Integer cveValidForHours = cli.getCveValidForHours();
- 363 0 final boolean experimentalEnabled = cli.isExperimentalEnabled();
- 364
-
- 365 0 if (propertiesFile != null ) {
- 366
+ 291 0 final ReportGenerator report = new ReportGenerator(applicationName, dependencies, engine.getAnalyzers(), prop);
+ 292
try {
- 367 0 Settings.mergeProperties(propertiesFile);
- 368 0 } catch (FileNotFoundException ex) {
- 369 0 throw new InvalidSettingException("Unable to find properties file '" + propertiesFile.getPath() + "'" , ex);
- 370 0 } catch (IOException ex) {
- 371 0 throw new InvalidSettingException("Error reading properties file '" + propertiesFile.getPath() + "'" , ex);
- 372 0 }
- 373
- }
- 374
-
- 375
-
- 376
-
- 377 0 final boolean nexusUsesProxy = cli.isNexusUsesProxy();
- 378 0 if (dataDirectory != null ) {
- 379 0 Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDirectory);
- 380 0 } else if (System.getProperty("basedir" ) != null ) {
- 381 0 final File dataDir = new File(System.getProperty("basedir" ), "data" );
- 382 0 Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDir.getAbsolutePath());
- 383 0 } else {
- 384 0 final File jarPath = new File(App.class .getProtectionDomain().getCodeSource().getLocation().getPath());
- 385 0 final File base = jarPath.getParentFile();
- 386 0 final String sub = Settings.getString(Settings.KEYS.DATA_DIRECTORY);
- 387 0 final File dataDir = new File(base, sub);
- 388 0 Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDir.getAbsolutePath());
- 389
- }
- 390 0 Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, autoUpdate);
- 391 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_SERVER, proxyServer);
- 392 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_PORT, proxyPort);
- 393 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_USERNAME, proxyUser);
- 394 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_PASSWORD, proxyPass);
- 395 0 Settings.setStringIfNotEmpty(Settings.KEYS.CONNECTION_TIMEOUT, connectionTimeout);
- 396 0 Settings.setStringIfNotEmpty(Settings.KEYS.SUPPRESSION_FILE, suppressionFile);
- 397 0 Settings.setIntIfNotNull(Settings.KEYS.CVE_CHECK_VALID_FOR_HOURS, cveValidForHours);
- 398
-
- 399
-
- 400 0 Settings.setBoolean(Settings.KEYS.ANALYZER_EXPERIMENTAL_ENABLED, experimentalEnabled);
- 401 0 Settings.setBoolean(Settings.KEYS.ANALYZER_JAR_ENABLED, !cli.isJarDisabled());
- 402 0 Settings.setBoolean(Settings.KEYS.ANALYZER_ARCHIVE_ENABLED, !cli.isArchiveDisabled());
- 403 0 Settings.setBoolean(Settings.KEYS.ANALYZER_PYTHON_DISTRIBUTION_ENABLED, !cli.isPythonDistributionDisabled());
- 404 0 Settings.setBoolean(Settings.KEYS.ANALYZER_PYTHON_PACKAGE_ENABLED, !cli.isPythonPackageDisabled());
- 405 0 Settings.setBoolean(Settings.KEYS.ANALYZER_AUTOCONF_ENABLED, !cli.isAutoconfDisabled());
- 406 0 Settings.setBoolean(Settings.KEYS.ANALYZER_CMAKE_ENABLED, !cli.isCmakeDisabled());
- 407 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NUSPEC_ENABLED, !cli.isNuspecDisabled());
- 408 0 Settings.setBoolean(Settings.KEYS.ANALYZER_ASSEMBLY_ENABLED, !cli.isAssemblyDisabled());
- 409 0 Settings.setBoolean(Settings.KEYS.ANALYZER_BUNDLE_AUDIT_ENABLED, !cli.isBundleAuditDisabled());
- 410 0 Settings.setBoolean(Settings.KEYS.ANALYZER_OPENSSL_ENABLED, !cli.isOpenSSLDisabled());
- 411 0 Settings.setBoolean(Settings.KEYS.ANALYZER_COMPOSER_LOCK_ENABLED, !cli.isComposerDisabled());
- 412 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NODE_PACKAGE_ENABLED, !cli.isNodeJsDisabled());
- 413 0 Settings.setBoolean(Settings.KEYS.ANALYZER_RUBY_GEMSPEC_ENABLED, !cli.isRubyGemspecDisabled());
- 414 0 Settings.setBoolean(Settings.KEYS.ANALYZER_CENTRAL_ENABLED, !cli.isCentralDisabled());
- 415 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_ENABLED, !cli.isNexusDisabled());
- 416
-
- 417 0 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_BUNDLE_AUDIT_PATH, cli.getPathToBundleAudit());
- 418 0 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_NEXUS_URL, nexusUrl);
- 419 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_USES_PROXY, nexusUsesProxy);
- 420 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_DRIVER_NAME, databaseDriverName);
- 421 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_DRIVER_PATH, databaseDriverPath);
- 422 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_CONNECTION_STRING, connectionString);
- 423 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_USER, databaseUser);
- 424 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_PASSWORD, databasePassword);
- 425 0 Settings.setStringIfNotEmpty(Settings.KEYS.ADDITIONAL_ZIP_EXTENSIONS, additionalZipExtensions);
- 426 0 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH, pathToMono);
- 427 0 if (cveBase12 != null && !cveBase12.isEmpty()) {
- 428 0 Settings.setString(Settings.KEYS.CVE_SCHEMA_1_2, cveBase12);
- 429 0 Settings.setString(Settings.KEYS.CVE_SCHEMA_2_0, cveBase20);
- 430 0 Settings.setString(Settings.KEYS.CVE_MODIFIED_12_URL, cveMod12);
- 431 0 Settings.setString(Settings.KEYS.CVE_MODIFIED_20_URL, cveMod20);
- 432
- }
- 433 0 }
- 434
-
- 435
-
- 436
-
- 437
-
- 438
-
- 439
-
- 440
- private void prepareLogger(String verboseLog) {
- 441 0 final StaticLoggerBinder loggerBinder = StaticLoggerBinder.getSingleton();
- 442 0 final LoggerContext context = (LoggerContext) loggerBinder.getLoggerFactory();
- 443
-
- 444 0 final PatternLayoutEncoder encoder = new PatternLayoutEncoder();
- 445 0 encoder.setPattern("%d %C:%L%n%-5level - %msg%n" );
- 446 0 encoder.setContext(context);
- 447 0 encoder.start();
- 448 0 final FileAppender fa = new FileAppender();
- 449 0 fa.setAppend(true );
- 450 0 fa.setEncoder(encoder);
- 451 0 fa.setContext(context);
- 452 0 fa.setFile(verboseLog);
- 453 0 final File f = new File(verboseLog);
- 454 0 String name = f.getName();
- 455 0 final int i = name.lastIndexOf('.' );
- 456 0 if (i > 1) {
- 457 0 name = name.substring(0, i);
- 458
- }
- 459 0 fa.setName(name);
- 460 0 fa.start();
- 461 0 final ch.qos.logback.classic.Logger rootLogger = context.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
- 462 0 rootLogger.addAppender(fa);
- 463 0 }
- 464
-
- 465
-
- 466
-
- 467
-
- 468
-
- 469
-
- 470
-
- 471
-
- 472
-
- 473
-
- 474
- protected String ensureCanonicalPath(String path) {
- 475
- String basePath;
- 476 2 String wildCards = null ;
- 477 2 final String file = path.replace('\\' , '/' );
- 478 2 if (file.contains("*" ) || file.contains("?" )) {
- 479
-
- 480 1 int pos = getLastFileSeparator(file);
- 481 1 if (pos < 0) {
- 482 0 return file;
- 483
+ 293 0 report.generateReports(reportDirectory, outputFormat);
+ 294 0 } catch (ReportException ex) {
+ 295 0 if (exCol != null ) {
+ 296 0 exCol.addException(ex);
+ 297 0 throw exCol;
+ 298
+ } else {
+ 299 0 throw ex;
+ 300
+ }
+ 301 0 }
+ 302 0 if (exCol != null && exCol.getExceptions().size() > 0) {
+ 303 0 throw exCol;
+ 304
}
- 484 1 pos += 1;
- 485 1 basePath = file.substring(0, pos);
- 486 1 wildCards = file.substring(pos);
- 487 1 } else {
- 488 1 basePath = file;
- 489
+ 305
+ } finally {
+ 306 0 if (engine != null ) {
+ 307 0 engine.cleanup();
+ 308
+ }
+ 309
}
- 490
+ 310
- 491 2 File f = new File(basePath);
- 492
+ 311 0 }
+ 312
+
+ 313
+
+ 314
+
+ 315
+
+ 316
+
+ 317
+
+ 318
+
+ 319
+
+ 320
+ private void runUpdateOnly() throws UpdateException, DatabaseException {
+ 321 0 Engine engine = null ;
+ 322
try {
- 493 2 f = f.getCanonicalFile();
- 494 2 if (wildCards != null ) {
- 495 1 f = new File(f, wildCards);
- 496
+ 323 0 engine = new Engine();
+ 324 0 engine.doUpdates();
+ 325
+ } finally {
+ 326 0 if (engine != null ) {
+ 327 0 engine.cleanup();
+ 328
}
- 497 0 } catch (IOException ex) {
- 498 0 LOGGER.warn("Invalid path '{}' was provided." , path);
- 499 0 LOGGER.debug("Invalid path provided" , ex);
- 500 2 }
- 501 2 return f.getAbsolutePath().replace('\\' , '/' );
- 502
- }
- 503
-
- 504
-
- 505
-
- 506
-
- 507
-
- 508
-
- 509
-
- 510
- private int getLastFileSeparator(String file) {
- 511 1 if (file.contains("*" ) || file.contains("?" )) {
- 512 1 int p1 = file.indexOf('*' );
- 513 1 int p2 = file.indexOf('?' );
- 514 1 p1 = p1 > 0 ? p1 : file.length();
- 515 1 p2 = p2 > 0 ? p2 : file.length();
- 516 1 int pos = p1 < p2 ? p1 : p2;
- 517 1 pos = file.lastIndexOf('/' , pos);
- 518 1 return pos;
- 519
- } else {
- 520 0 return file.lastIndexOf('/' );
- 521
+ 329
}
- 522
+ 330 0 }
+ 331
+
+ 332
+
+ 333
+
+ 334
+
+ 335
+
+ 336
+
+ 337
+
+ 338
+
+ 339
+
+ 340
+
+ 341
+ private void populateSettings(CliParser cli) throws InvalidSettingException {
+ 342 0 final boolean autoUpdate = cli.isAutoUpdate();
+ 343 0 final String connectionTimeout = cli.getConnectionTimeout();
+ 344 0 final String proxyServer = cli.getProxyServer();
+ 345 0 final String proxyPort = cli.getProxyPort();
+ 346 0 final String proxyUser = cli.getProxyUsername();
+ 347 0 final String proxyPass = cli.getProxyPassword();
+ 348 0 final String dataDirectory = cli.getDataDirectory();
+ 349 0 final File propertiesFile = cli.getPropertiesFile();
+ 350 0 final String suppressionFile = cli.getSuppressionFile();
+ 351 0 final String hintsFile = cli.getHintsFile();
+ 352 0 final String nexusUrl = cli.getNexusUrl();
+ 353 0 final String databaseDriverName = cli.getDatabaseDriverName();
+ 354 0 final String databaseDriverPath = cli.getDatabaseDriverPath();
+ 355 0 final String connectionString = cli.getConnectionString();
+ 356 0 final String databaseUser = cli.getDatabaseUser();
+ 357 0 final String databasePassword = cli.getDatabasePassword();
+ 358 0 final String additionalZipExtensions = cli.getAdditionalZipExtensions();
+ 359 0 final String pathToMono = cli.getPathToMono();
+ 360 0 final String cveMod12 = cli.getModifiedCve12Url();
+ 361 0 final String cveMod20 = cli.getModifiedCve20Url();
+ 362 0 final String cveBase12 = cli.getBaseCve12Url();
+ 363 0 final String cveBase20 = cli.getBaseCve20Url();
+ 364 0 final Integer cveValidForHours = cli.getCveValidForHours();
+ 365 0 final boolean experimentalEnabled = cli.isExperimentalEnabled();
+ 366
+
+ 367 0 if (propertiesFile != null ) {
+ 368
+ try {
+ 369 0 Settings.mergeProperties(propertiesFile);
+ 370 0 } catch (FileNotFoundException ex) {
+ 371 0 throw new InvalidSettingException("Unable to find properties file '" + propertiesFile.getPath() + "'" , ex);
+ 372 0 } catch (IOException ex) {
+ 373 0 throw new InvalidSettingException("Error reading properties file '" + propertiesFile.getPath() + "'" , ex);
+ 374 0 }
+ 375
+ }
+ 376
+
+ 377
+
+ 378
+
+ 379 0 final boolean nexusUsesProxy = cli.isNexusUsesProxy();
+ 380 0 if (dataDirectory != null ) {
+ 381 0 Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDirectory);
+ 382 0 } else if (System.getProperty("basedir" ) != null ) {
+ 383 0 final File dataDir = new File(System.getProperty("basedir" ), "data" );
+ 384 0 Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDir.getAbsolutePath());
+ 385 0 } else {
+ 386 0 final File jarPath = new File(App.class .getProtectionDomain().getCodeSource().getLocation().getPath());
+ 387 0 final File base = jarPath.getParentFile();
+ 388 0 final String sub = Settings.getString(Settings.KEYS.DATA_DIRECTORY);
+ 389 0 final File dataDir = new File(base, sub);
+ 390 0 Settings.setString(Settings.KEYS.DATA_DIRECTORY, dataDir.getAbsolutePath());
+ 391
+ }
+ 392 0 Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, autoUpdate);
+ 393 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_SERVER, proxyServer);
+ 394 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_PORT, proxyPort);
+ 395 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_USERNAME, proxyUser);
+ 396 0 Settings.setStringIfNotEmpty(Settings.KEYS.PROXY_PASSWORD, proxyPass);
+ 397 0 Settings.setStringIfNotEmpty(Settings.KEYS.CONNECTION_TIMEOUT, connectionTimeout);
+ 398 0 Settings.setStringIfNotEmpty(Settings.KEYS.SUPPRESSION_FILE, suppressionFile);
+ 399 0 Settings.setStringIfNotEmpty(Settings.KEYS.HINTS_FILE, hintsFile);
+ 400 0 Settings.setIntIfNotNull(Settings.KEYS.CVE_CHECK_VALID_FOR_HOURS, cveValidForHours);
+ 401
+
+ 402
+
+ 403 0 Settings.setBoolean(Settings.KEYS.ANALYZER_EXPERIMENTAL_ENABLED, experimentalEnabled);
+ 404 0 Settings.setBoolean(Settings.KEYS.ANALYZER_JAR_ENABLED, !cli.isJarDisabled());
+ 405 0 Settings.setBoolean(Settings.KEYS.ANALYZER_ARCHIVE_ENABLED, !cli.isArchiveDisabled());
+ 406 0 Settings.setBoolean(Settings.KEYS.ANALYZER_PYTHON_DISTRIBUTION_ENABLED, !cli.isPythonDistributionDisabled());
+ 407 0 Settings.setBoolean(Settings.KEYS.ANALYZER_PYTHON_PACKAGE_ENABLED, !cli.isPythonPackageDisabled());
+ 408 0 Settings.setBoolean(Settings.KEYS.ANALYZER_AUTOCONF_ENABLED, !cli.isAutoconfDisabled());
+ 409 0 Settings.setBoolean(Settings.KEYS.ANALYZER_CMAKE_ENABLED, !cli.isCmakeDisabled());
+ 410 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NUSPEC_ENABLED, !cli.isNuspecDisabled());
+ 411 0 Settings.setBoolean(Settings.KEYS.ANALYZER_ASSEMBLY_ENABLED, !cli.isAssemblyDisabled());
+ 412 0 Settings.setBoolean(Settings.KEYS.ANALYZER_BUNDLE_AUDIT_ENABLED, !cli.isBundleAuditDisabled());
+ 413 0 Settings.setBoolean(Settings.KEYS.ANALYZER_OPENSSL_ENABLED, !cli.isOpenSSLDisabled());
+ 414 0 Settings.setBoolean(Settings.KEYS.ANALYZER_COMPOSER_LOCK_ENABLED, !cli.isComposerDisabled());
+ 415 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NODE_PACKAGE_ENABLED, !cli.isNodeJsDisabled());
+ 416 0 Settings.setBoolean(Settings.KEYS.ANALYZER_RUBY_GEMSPEC_ENABLED, !cli.isRubyGemspecDisabled());
+ 417 0 Settings.setBoolean(Settings.KEYS.ANALYZER_CENTRAL_ENABLED, !cli.isCentralDisabled());
+ 418 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_ENABLED, !cli.isNexusDisabled());
+ 419
+
+ 420 0 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_BUNDLE_AUDIT_PATH, cli.getPathToBundleAudit());
+ 421 0 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_NEXUS_URL, nexusUrl);
+ 422 0 Settings.setBoolean(Settings.KEYS.ANALYZER_NEXUS_USES_PROXY, nexusUsesProxy);
+ 423 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_DRIVER_NAME, databaseDriverName);
+ 424 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_DRIVER_PATH, databaseDriverPath);
+ 425 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_CONNECTION_STRING, connectionString);
+ 426 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_USER, databaseUser);
+ 427 0 Settings.setStringIfNotEmpty(Settings.KEYS.DB_PASSWORD, databasePassword);
+ 428 0 Settings.setStringIfNotEmpty(Settings.KEYS.ADDITIONAL_ZIP_EXTENSIONS, additionalZipExtensions);
+ 429 0 Settings.setStringIfNotEmpty(Settings.KEYS.ANALYZER_ASSEMBLY_MONO_PATH, pathToMono);
+ 430 0 if (cveBase12 != null && !cveBase12.isEmpty()) {
+ 431 0 Settings.setString(Settings.KEYS.CVE_SCHEMA_1_2, cveBase12);
+ 432 0 Settings.setString(Settings.KEYS.CVE_SCHEMA_2_0, cveBase20);
+ 433 0 Settings.setString(Settings.KEYS.CVE_MODIFIED_12_URL, cveMod12);
+ 434 0 Settings.setString(Settings.KEYS.CVE_MODIFIED_20_URL, cveMod20);
+ 435
+ }
+ 436 0 }
+ 437
+
+ 438
+
+ 439
+
+ 440
+
+ 441
+
+ 442
+
+ 443
+ private void prepareLogger(String verboseLog) {
+ 444 0 final StaticLoggerBinder loggerBinder = StaticLoggerBinder.getSingleton();
+ 445 0 final LoggerContext context = (LoggerContext) loggerBinder.getLoggerFactory();
+ 446
+
+ 447 0 final PatternLayoutEncoder encoder = new PatternLayoutEncoder();
+ 448 0 encoder.setPattern("%d %C:%L%n%-5level - %msg%n" );
+ 449 0 encoder.setContext(context);
+ 450 0 encoder.start();
+ 451 0 final FileAppender<ILoggingEvent> fa = new FileAppender<ILoggingEvent>();
+ 452 0 fa.setAppend(true );
+ 453 0 fa.setEncoder(encoder);
+ 454 0 fa.setContext(context);
+ 455 0 fa.setFile(verboseLog);
+ 456 0 final File f = new File(verboseLog);
+ 457 0 String name = f.getName();
+ 458 0 final int i = name.lastIndexOf('.' );
+ 459 0 if (i > 1) {
+ 460 0 name = name.substring(0, i);
+ 461
+ }
+ 462 0 fa.setName(name);
+ 463 0 fa.start();
+ 464 0 final ch.qos.logback.classic.Logger rootLogger = context.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
+ 465 0 rootLogger.addAppender(fa);
+ 466 0 }
+ 467
+
+ 468
+
+ 469
+
+ 470
+
+ 471
+
+ 472
+
+ 473
+
+ 474
+
+ 475
+
+ 476
+
+ 477
+ protected String ensureCanonicalPath(String path) {
+ 478
+ String basePath;
+ 479 2 String wildCards = null ;
+ 480 2 final String file = path.replace('\\' , '/' );
+ 481 2 if (file.contains("*" ) || file.contains("?" )) {
+ 482
+
+ 483 1 int pos = getLastFileSeparator(file);
+ 484 1 if (pos < 0) {
+ 485 0 return file;
+ 486
+ }
+ 487 1 pos += 1;
+ 488 1 basePath = file.substring(0, pos);
+ 489 1 wildCards = file.substring(pos);
+ 490 1 } else {
+ 491 1 basePath = file;
+ 492
+ }
+ 493
+
+ 494 2 File f = new File(basePath);
+ 495
+ try {
+ 496 2 f = f.getCanonicalFile();
+ 497 2 if (wildCards != null ) {
+ 498 1 f = new File(f, wildCards);
+ 499
+ }
+ 500 0 } catch (IOException ex) {
+ 501 0 LOGGER.warn("Invalid path '{}' was provided." , path);
+ 502 0 LOGGER.debug("Invalid path provided" , ex);
+ 503 2 }
+ 504 2 return f.getAbsolutePath().replace('\\' , '/' );
+ 505
}
- 523
+ 506
+
+ 507
+
+ 508
+
+ 509
+
+ 510
+
+ 511
+
+ 512
+
+ 513
+ private int getLastFileSeparator(String file) {
+ 514 1 if (file.contains("*" ) || file.contains("?" )) {
+ 515 1 int p1 = file.indexOf('*' );
+ 516 1 int p2 = file.indexOf('?' );
+ 517 1 p1 = p1 > 0 ? p1 : file.length();
+ 518 1 p2 = p2 > 0 ? p2 : file.length();
+ 519 1 int pos = p1 < p2 ? p1 : p2;
+ 520 1 pos = file.lastIndexOf('/' , pos);
+ 521 1 return pos;
+ 522
+ } else {
+ 523 0 return file.lastIndexOf('/' );
+ 524
+ }
+ 525
+ }
+ 526
}
-
+
diff --git a/dependency-check-cli/cobertura/org.owasp.dependencycheck.CliParser.html b/dependency-check-cli/cobertura/org.owasp.dependencycheck.CliParser.html
index aeb3abc8e..ad0859937 100644
--- a/dependency-check-cli/cobertura/org.owasp.dependencycheck.CliParser.html
+++ b/dependency-check-cli/cobertura/org.owasp.dependencycheck.CliParser.html
@@ -12,8 +12,8 @@
@@ -464,1978 +464,2011 @@
278 11 .build();
279
- 280 11 final Option cveValidForHours = Option.builder().argName("hours" ).hasArg().longOpt(ARGUMENT.CVE_VALID_FOR_HOURS)
- 281 11 .desc("The number of hours to wait before checking for new updates from the NVD." )
+ 280 11 final Option hintsFile = Option.builder().argName("file" ).hasArg().longOpt(ARGUMENT.HINTS_FILE)
+ 281 11 .desc("The file path to the hints XML file." )
282 11 .build();
283
- 284 11 final Option experimentalEnabled = Option.builder().longOpt(ARGUMENT.EXPERIMENTAL)
- 285 11 .desc("Enables the experimental analzers." )
+ 284 11 final Option cveValidForHours = Option.builder().argName("hours" ).hasArg().longOpt(ARGUMENT.CVE_VALID_FOR_HOURS)
+ 285 11 .desc("The number of hours to wait before checking for new updates from the NVD." )
286 11 .build();
287
- 288
-
- 289 11 final OptionGroup og = new OptionGroup();
- 290 11 og.addOption(path);
+ 288 11 final Option experimentalEnabled = Option.builder().longOpt(ARGUMENT.EXPERIMENTAL)
+ 289 11 .desc("Enables the experimental analzers." )
+ 290 11 .build();
291
- 292 11 final OptionGroup exog = new OptionGroup();
- 293 11 exog.addOption(excludes);
- 294
+ 292
+
+ 293 11 final OptionGroup og = new OptionGroup();
+ 294 11 og.addOption(path);
+ 295
- 295 11 options.addOptionGroup(og)
- 296 11 .addOptionGroup(exog)
- 297 11 .addOption(projectName)
- 298 11 .addOption(out)
- 299 11 .addOption(outputFormat)
- 300 11 .addOption(version)
- 301 11 .addOption(help)
- 302 11 .addOption(advancedHelp)
- 303 11 .addOption(noUpdate)
- 304 11 .addOption(symLinkDepth)
- 305 11 .addOption(props)
- 306 11 .addOption(verboseLog)
- 307 11 .addOption(suppressionFile)
- 308 11 .addOption(cveValidForHours)
- 309 11 .addOption(experimentalEnabled);
- 310 11 }
- 311
+ 296 11 final OptionGroup exog = new OptionGroup();
+ 297 11 exog.addOption(excludes);
+ 298
- 312
-
- 313
-
- 314
-
- 315
-
+ 299 11 options.addOptionGroup(og)
+ 300 11 .addOptionGroup(exog)
+ 301 11 .addOption(projectName)
+ 302 11 .addOption(out)
+ 303 11 .addOption(outputFormat)
+ 304 11 .addOption(version)
+ 305 11 .addOption(help)
+ 306 11 .addOption(advancedHelp)
+ 307 11 .addOption(noUpdate)
+ 308 11 .addOption(symLinkDepth)
+ 309 11 .addOption(props)
+ 310 11 .addOption(verboseLog)
+ 311 11 .addOption(suppressionFile)
+ 312 11 .addOption(hintsFile)
+ 313 11 .addOption(cveValidForHours)
+ 314 11 .addOption(experimentalEnabled);
+ 315 11 }
316
-
+
317
-
+
318
-
+
319
-
+
320
- @SuppressWarnings("static-access" )
+
321
- private void addAdvancedOptions(final Options options) throws IllegalArgumentException {
+
322
-
- 323 9 final Option cve12Base = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_BASE_12)
- 324 9 .desc("Base URL for each year’s CVE 1.2, the %d will be replaced with the year. " )
- 325 9 .build();
+
+ 323
+
+ 324
+
+ 325
+ @SuppressWarnings("static-access" )
326
+ private void addAdvancedOptions(final Options options) throws IllegalArgumentException {
+ 327
- 327 9 final Option cve20Base = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_BASE_20)
- 328 9 .desc("Base URL for each year’s CVE 2.0, the %d will be replaced with the year." )
- 329 9 .build();
- 330
+ 328 9 final Option cve12Base = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_BASE_12)
+ 329 9 .desc("Base URL for each year’s CVE 1.2, the %d will be replaced with the year. " )
+ 330 9 .build();
+ 331
- 331 9 final Option cve12Modified = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_MOD_12)
- 332 9 .desc("URL for the modified CVE 1.2." )
- 333 9 .build();
- 334
+ 332 9 final Option cve20Base = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_BASE_20)
+ 333 9 .desc("Base URL for each year’s CVE 2.0, the %d will be replaced with the year." )
+ 334 9 .build();
+ 335
- 335 9 final Option cve20Modified = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_MOD_20)
- 336 9 .desc("URL for the modified CVE 2.0." )
- 337 9 .build();
- 338
+ 336 9 final Option cve12Modified = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_MOD_12)
+ 337 9 .desc("URL for the modified CVE 1.2." )
+ 338 9 .build();
+ 339
- 339 9 final Option updateOnly = Option.builder().longOpt(ARGUMENT.UPDATE_ONLY)
- 340 9 .desc("Only update the local NVD data cache; no scan will be executed." ).build();
- 341
+ 340 9 final Option cve20Modified = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.CVE_MOD_20)
+ 341 9 .desc("URL for the modified CVE 2.0." )
+ 342 9 .build();
+ 343
- 342 9 final Option data = Option.builder(ARGUMENT.DATA_DIRECTORY_SHORT).argName("path" ).hasArg().longOpt(ARGUMENT.DATA_DIRECTORY)
- 343 9 .desc("The location of the H2 Database file. This option should generally not be set." )
- 344 9 .build();
- 345
+ 344 9 final Option updateOnly = Option.builder().longOpt(ARGUMENT.UPDATE_ONLY)
+ 345 9 .desc("Only update the local NVD data cache; no scan will be executed." ).build();
+ 346
- 346 9 final Option nexusUrl = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.NEXUS_URL)
- 347 9 .desc("The url to the Nexus Server's REST API Endpoint (http://domain/nexus/service/local). "
- 348 9 + "If not set the Nexus Analyzer will be disabled." ).build();
- 349
+ 347 9 final Option data = Option.builder(ARGUMENT.DATA_DIRECTORY_SHORT).argName("path" ).hasArg().longOpt(ARGUMENT.DATA_DIRECTORY)
+ 348 9 .desc("The location of the H2 Database file. This option should generally not be set." )
+ 349 9 .build();
+ 350
- 350 9 final Option nexusUsesProxy = Option.builder().argName("true/false" ).hasArg().longOpt(ARGUMENT.NEXUS_USES_PROXY)
- 351 9 .desc("Whether or not the configured proxy should be used when connecting to Nexus." )
- 352 9 .build();
- 353
+ 351 9 final Option nexusUrl = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.NEXUS_URL)
+ 352 9 .desc("The url to the Nexus Server's REST API Endpoint (http://domain/nexus/service/local). "
+ 353 9 + "If not set the Nexus Analyzer will be disabled." ).build();
+ 354
- 354 9 final Option additionalZipExtensions = Option.builder().argName("extensions" ).hasArg()
- 355 9 .longOpt(ARGUMENT.ADDITIONAL_ZIP_EXTENSIONS)
- 356 9 .desc("A comma separated list of additional extensions to be scanned as ZIP files "
- 357 9 + "(ZIP, EAR, WAR are already treated as zip files)" ).build();
+ 355 9 final Option nexusUsesProxy = Option.builder().argName("true/false" ).hasArg().longOpt(ARGUMENT.NEXUS_USES_PROXY)
+ 356 9 .desc("Whether or not the configured proxy should be used when connecting to Nexus." )
+ 357 9 .build();
358
- 359 9 final Option pathToMono = Option.builder().argName("path" ).hasArg().longOpt(ARGUMENT.PATH_TO_MONO)
- 360 9 .desc("The path to Mono for .NET Assembly analysis on non-windows systems." )
- 361 9 .build();
- 362
+ 359 9 final Option additionalZipExtensions = Option.builder().argName("extensions" ).hasArg()
+ 360 9 .longOpt(ARGUMENT.ADDITIONAL_ZIP_EXTENSIONS)
+ 361 9 .desc("A comma separated list of additional extensions to be scanned as ZIP files "
+ 362 9 + "(ZIP, EAR, WAR are already treated as zip files)" ).build();
+ 363
- 363 9 final Option pathToBundleAudit = Option.builder().argName("path" ).hasArg()
- 364 9 .longOpt(ARGUMENT.PATH_TO_BUNDLE_AUDIT)
- 365 9 .desc("The path to bundle-audit for Gem bundle analysis." ).build();
- 366
+ 364 9 final Option pathToMono = Option.builder().argName("path" ).hasArg().longOpt(ARGUMENT.PATH_TO_MONO)
+ 365 9 .desc("The path to Mono for .NET Assembly analysis on non-windows systems." )
+ 366 9 .build();
+ 367
- 367 9 final Option connectionTimeout = Option.builder(ARGUMENT.CONNECTION_TIMEOUT_SHORT).argName("timeout" ).hasArg()
- 368 9 .longOpt(ARGUMENT.CONNECTION_TIMEOUT).desc("The connection timeout (in milliseconds) to use when downloading resources." )
- 369 9 .build();
- 370
+ 368 9 final Option pathToBundleAudit = Option.builder().argName("path" ).hasArg()
+ 369 9 .longOpt(ARGUMENT.PATH_TO_BUNDLE_AUDIT)
+ 370 9 .desc("The path to bundle-audit for Gem bundle analysis." ).build();
+ 371
- 371 9 final Option proxyServer = Option.builder().argName("server" ).hasArg().longOpt(ARGUMENT.PROXY_SERVER)
- 372 9 .desc("The proxy server to use when downloading resources." ).build();
- 373
+ 372 9 final Option connectionTimeout = Option.builder(ARGUMENT.CONNECTION_TIMEOUT_SHORT).argName("timeout" ).hasArg()
+ 373 9 .longOpt(ARGUMENT.CONNECTION_TIMEOUT).desc("The connection timeout (in milliseconds) to use when downloading resources." )
+ 374 9 .build();
+ 375
- 374 9 final Option proxyPort = Option.builder().argName("port" ).hasArg().longOpt(ARGUMENT.PROXY_PORT)
- 375 9 .desc("The proxy port to use when downloading resources." ).build();
- 376
+ 376 9 final Option proxyServer = Option.builder().argName("server" ).hasArg().longOpt(ARGUMENT.PROXY_SERVER)
+ 377 9 .desc("The proxy server to use when downloading resources." ).build();
+ 378
- 377 9 final Option proxyUsername = Option.builder().argName("user" ).hasArg().longOpt(ARGUMENT.PROXY_USERNAME)
- 378 9 .desc("The proxy username to use when downloading resources." ).build();
- 379
+ 379 9 final Option proxyPort = Option.builder().argName("port" ).hasArg().longOpt(ARGUMENT.PROXY_PORT)
+ 380 9 .desc("The proxy port to use when downloading resources." ).build();
+ 381
- 380 9 final Option proxyPassword = Option.builder().argName("pass" ).hasArg().longOpt(ARGUMENT.PROXY_PASSWORD)
- 381 9 .desc("The proxy password to use when downloading resources." ).build();
- 382
+ 382 9 final Option proxyUsername = Option.builder().argName("user" ).hasArg().longOpt(ARGUMENT.PROXY_USERNAME)
+ 383 9 .desc("The proxy username to use when downloading resources." ).build();
+ 384
- 383 9 final Option connectionString = Option.builder().argName("connStr" ).hasArg().longOpt(ARGUMENT.CONNECTION_STRING)
- 384 9 .desc("The connection string to the database." ).build();
- 385
+ 385 9 final Option proxyPassword = Option.builder().argName("pass" ).hasArg().longOpt(ARGUMENT.PROXY_PASSWORD)
+ 386 9 .desc("The proxy password to use when downloading resources." ).build();
+ 387
- 386 9 final Option dbUser = Option.builder().argName("user" ).hasArg().longOpt(ARGUMENT.DB_NAME)
- 387 9 .desc("The username used to connect to the database." ).build();
- 388
+ 388 9 final Option connectionString = Option.builder().argName("connStr" ).hasArg().longOpt(ARGUMENT.CONNECTION_STRING)
+ 389 9 .desc("The connection string to the database." ).build();
+ 390
- 389 9 final Option dbPassword = Option.builder().argName("password" ).hasArg().longOpt(ARGUMENT.DB_PASSWORD)
- 390 9 .desc("The password for connecting to the database." ).build();
- 391
+ 391 9 final Option dbUser = Option.builder().argName("user" ).hasArg().longOpt(ARGUMENT.DB_NAME)
+ 392 9 .desc("The username used to connect to the database." ).build();
+ 393
- 392 9 final Option dbDriver = Option.builder().argName("driver" ).hasArg().longOpt(ARGUMENT.DB_DRIVER)
- 393 9 .desc("The database driver name." ).build();
- 394
+ 394 9 final Option dbPassword = Option.builder().argName("password" ).hasArg().longOpt(ARGUMENT.DB_PASSWORD)
+ 395 9 .desc("The password for connecting to the database." ).build();
+ 396
- 395 9 final Option dbDriverPath = Option.builder().argName("path" ).hasArg().longOpt(ARGUMENT.DB_DRIVER_PATH)
- 396 9 .desc("The path to the database driver; note, this does not need to be set unless the JAR is outside of the classpath." )
- 397 9 .build();
- 398
+ 397 9 final Option dbDriver = Option.builder().argName("driver" ).hasArg().longOpt(ARGUMENT.DB_DRIVER)
+ 398 9 .desc("The database driver name." ).build();
+ 399
- 399 9 final Option disableJarAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_JAR)
- 400 9 .desc("Disable the Jar Analyzer." ).build();
- 401
+ 400 9 final Option dbDriverPath = Option.builder().argName("path" ).hasArg().longOpt(ARGUMENT.DB_DRIVER_PATH)
+ 401 9 .desc("The path to the database driver; note, this does not need to be set unless the JAR is outside of the classpath." )
+ 402 9 .build();
+ 403
- 402 9 final Option disableArchiveAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_ARCHIVE)
- 403 9 .desc("Disable the Archive Analyzer." ).build();
- 404
+ 404 9 final Option disableJarAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_JAR)
+ 405 9 .desc("Disable the Jar Analyzer." ).build();
+ 406
- 405 9 final Option disableNuspecAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_NUSPEC)
- 406 9 .desc("Disable the Nuspec Analyzer." ).build();
- 407
+ 407 9 final Option disableArchiveAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_ARCHIVE)
+ 408 9 .desc("Disable the Archive Analyzer." ).build();
+ 409
- 408 9 final Option disableAssemblyAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_ASSEMBLY)
- 409 9 .desc("Disable the .NET Assembly Analyzer." ).build();
- 410
+ 410 9 final Option disableNuspecAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_NUSPEC)
+ 411 9 .desc("Disable the Nuspec Analyzer." ).build();
+ 412
- 411 9 final Option disablePythonDistributionAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_PY_DIST)
- 412 9 .desc("Disable the Python Distribution Analyzer." ).build();
- 413
+ 413 9 final Option disableAssemblyAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_ASSEMBLY)
+ 414 9 .desc("Disable the .NET Assembly Analyzer." ).build();
+ 415
- 414 9 final Option disablePythonPackageAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_PY_PKG)
- 415 9 .desc("Disable the Python Package Analyzer." ).build();
- 416
+ 416 9 final Option disablePythonDistributionAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_PY_DIST)
+ 417 9 .desc("Disable the Python Distribution Analyzer." ).build();
+ 418
- 417 9 final Option disableComposerAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_COMPOSER)
- 418 9 .desc("Disable the PHP Composer Analyzer." ).build();
- 419
+ 419 9 final Option disablePythonPackageAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_PY_PKG)
+ 420 9 .desc("Disable the Python Package Analyzer." ).build();
+ 421
- 420 9 final Option disableAutoconfAnalyzer = Option.builder()
- 421 9 .longOpt(ARGUMENT.DISABLE_AUTOCONF)
- 422 9 .desc("Disable the Autoconf Analyzer." ).build();
- 423
+ 422 9 final Option disableComposerAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_COMPOSER)
+ 423 9 .desc("Disable the PHP Composer Analyzer." ).build();
+ 424
- 424 9 final Option disableOpenSSLAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_OPENSSL)
- 425 9 .desc("Disable the OpenSSL Analyzer." ).build();
- 426 9 final Option disableCmakeAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_CMAKE)
- 427 9 .desc("Disable the Cmake Analyzer." ).build();
+ 425 9 final Option disableAutoconfAnalyzer = Option.builder()
+ 426 9 .longOpt(ARGUMENT.DISABLE_AUTOCONF)
+ 427 9 .desc("Disable the Autoconf Analyzer." ).build();
428
- 429 9 final Option disableCentralAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_CENTRAL)
- 430 9 .desc("Disable the Central Analyzer. If this analyzer is disabled it is likely you also want to disable "
- 431 9 + "the Nexus Analyzer." ).build();
- 432
+ 429 9 final Option disableOpenSSLAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_OPENSSL)
+ 430 9 .desc("Disable the OpenSSL Analyzer." ).build();
+ 431 9 final Option disableCmakeAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_CMAKE)
+ 432 9 .desc("Disable the Cmake Analyzer." ).build();
+ 433
- 433 9 final Option disableNexusAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_NEXUS)
- 434 9 .desc("Disable the Nexus Analyzer." ).build();
- 435
+ 434 9 final Option disableCentralAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_CENTRAL)
+ 435 9 .desc("Disable the Central Analyzer. If this analyzer is disabled it is likely you also want to disable "
+ 436 9 + "the Nexus Analyzer." ).build();
+ 437
- 436 9 final Option purge = Option.builder().longOpt(ARGUMENT.PURGE_NVD)
- 437 9 .desc("Purges the local NVD data cache" )
- 438 9 .build();
- 439
+ 438 9 final Option disableNexusAnalyzer = Option.builder().longOpt(ARGUMENT.DISABLE_NEXUS)
+ 439 9 .desc("Disable the Nexus Analyzer." ).build();
+ 440
- 440 9 options.addOption(updateOnly)
- 441 9 .addOption(cve12Base)
- 442 9 .addOption(cve20Base)
- 443 9 .addOption(cve12Modified)
- 444 9 .addOption(cve20Modified)
- 445 9 .addOption(proxyPort)
- 446 9 .addOption(proxyServer)
- 447 9 .addOption(proxyUsername)
- 448 9 .addOption(proxyPassword)
- 449 9 .addOption(connectionTimeout)
- 450 9 .addOption(connectionString)
- 451 9 .addOption(dbUser)
- 452 9 .addOption(data)
- 453 9 .addOption(dbPassword)
- 454 9 .addOption(dbDriver)
- 455 9 .addOption(dbDriverPath)
- 456 9 .addOption(disableJarAnalyzer)
- 457 9 .addOption(disableArchiveAnalyzer)
- 458 9 .addOption(disableAssemblyAnalyzer)
- 459 9 .addOption(pathToBundleAudit)
- 460 9 .addOption(disablePythonDistributionAnalyzer)
- 461 9 .addOption(disableCmakeAnalyzer)
- 462 9 .addOption(disablePythonPackageAnalyzer)
- 463 18 .addOption(Option.builder().longOpt(ARGUMENT.DISABLE_RUBYGEMS)
- 464 9 .desc("Disable the Ruby Gemspec Analyzer." ).build())
- 465 18 .addOption(Option.builder().longOpt(ARGUMENT.DISABLE_BUNDLE_AUDIT)
- 466 9 .desc("Disable the Ruby Bundler-Audit Analyzer." ).build())
- 467 9 .addOption(disableAutoconfAnalyzer)
- 468 9 .addOption(disableComposerAnalyzer)
- 469 9 .addOption(disableOpenSSLAnalyzer)
- 470 9 .addOption(disableNuspecAnalyzer)
- 471 9 .addOption(disableCentralAnalyzer)
- 472 9 .addOption(disableNexusAnalyzer)
- 473 18 .addOption(Option.builder().longOpt(ARGUMENT.DISABLE_NODE_JS)
- 474 9 .desc("Disable the Node.js Package Analyzer." ).build())
- 475 9 .addOption(nexusUrl)
- 476 9 .addOption(nexusUsesProxy)
- 477 9 .addOption(additionalZipExtensions)
- 478 9 .addOption(pathToMono)
- 479 9 .addOption(pathToBundleAudit)
- 480 9 .addOption(purge);
- 481 9 }
- 482
+ 441 9 final Option purge = Option.builder().longOpt(ARGUMENT.PURGE_NVD)
+ 442 9 .desc("Purges the local NVD data cache" )
+ 443 9 .build();
+ 444
- 483
-
- 484
-
- 485
-
- 486
-
+ 445 9 options.addOption(updateOnly)
+ 446 9 .addOption(cve12Base)
+ 447 9 .addOption(cve20Base)
+ 448 9 .addOption(cve12Modified)
+ 449 9 .addOption(cve20Modified)
+ 450 9 .addOption(proxyPort)
+ 451 9 .addOption(proxyServer)
+ 452 9 .addOption(proxyUsername)
+ 453 9 .addOption(proxyPassword)
+ 454 9 .addOption(connectionTimeout)
+ 455 9 .addOption(connectionString)
+ 456 9 .addOption(dbUser)
+ 457 9 .addOption(data)
+ 458 9 .addOption(dbPassword)
+ 459 9 .addOption(dbDriver)
+ 460 9 .addOption(dbDriverPath)
+ 461 9 .addOption(disableJarAnalyzer)
+ 462 9 .addOption(disableArchiveAnalyzer)
+ 463 9 .addOption(disableAssemblyAnalyzer)
+ 464 9 .addOption(pathToBundleAudit)
+ 465 9 .addOption(disablePythonDistributionAnalyzer)
+ 466 9 .addOption(disableCmakeAnalyzer)
+ 467 9 .addOption(disablePythonPackageAnalyzer)
+ 468 18 .addOption(Option.builder().longOpt(ARGUMENT.DISABLE_RUBYGEMS)
+ 469 9 .desc("Disable the Ruby Gemspec Analyzer." ).build())
+ 470 18 .addOption(Option.builder().longOpt(ARGUMENT.DISABLE_BUNDLE_AUDIT)
+ 471 9 .desc("Disable the Ruby Bundler-Audit Analyzer." ).build())
+ 472 9 .addOption(disableAutoconfAnalyzer)
+ 473 9 .addOption(disableComposerAnalyzer)
+ 474 9 .addOption(disableOpenSSLAnalyzer)
+ 475 9 .addOption(disableNuspecAnalyzer)
+ 476 9 .addOption(disableCentralAnalyzer)
+ 477 9 .addOption(disableNexusAnalyzer)
+ 478 18 .addOption(Option.builder().longOpt(ARGUMENT.DISABLE_NODE_JS)
+ 479 9 .desc("Disable the Node.js Package Analyzer." ).build())
+ 480 9 .addOption(nexusUrl)
+ 481 9 .addOption(nexusUsesProxy)
+ 482 9 .addOption(additionalZipExtensions)
+ 483 9 .addOption(pathToMono)
+ 484 9 .addOption(pathToBundleAudit)
+ 485 9 .addOption(purge);
+ 486 9 }
487
-
+
488
-
+
489
-
+
490
-
+
491
-
+
492
- @SuppressWarnings({"static-access" , "deprecation" })
+
493
- private void addDeprecatedOptions(final Options options) throws IllegalArgumentException {
+
494
+
+ 495
+
+ 496
+
+ 497
+ @SuppressWarnings({"static-access" , "deprecation" })
+ 498
+ private void addDeprecatedOptions(final Options options) throws IllegalArgumentException {
+ 499
- 495 9 final Option proxyServer = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.PROXY_URL)
- 496 9 .desc("The proxy url argument is deprecated, use proxyserver instead." )
- 497 9 .build();
- 498 9 final Option appName = Option.builder(ARGUMENT.APP_NAME_SHORT).argName("name" ).hasArg().longOpt(ARGUMENT.APP_NAME)
- 499 9 .desc("The name of the project being scanned." )
- 500 9 .build();
- 501
-
- 502 9 options.addOption(proxyServer);
- 503 9 options.addOption(appName);
- 504 9 }
- 505
-
+ 500 9 final Option proxyServer = Option.builder().argName("url" ).hasArg().longOpt(ARGUMENT.PROXY_URL)
+ 501 9 .desc("The proxy url argument is deprecated, use proxyserver instead." )
+ 502 9 .build();
+ 503 9 final Option appName = Option.builder(ARGUMENT.APP_NAME_SHORT).argName("name" ).hasArg().longOpt(ARGUMENT.APP_NAME)
+ 504 9 .desc("The name of the project being scanned." )
+ 505 9 .build();
506
-
- 507
-
- 508
-
- 509
-
+
+ 507 9 options.addOption(proxyServer);
+ 508 9 options.addOption(appName);
+ 509 9 }
510
-
+
511
- public boolean isGetVersion() {
- 512 7 return (line != null ) && line.hasOption(ARGUMENT.VERSION);
+
+ 512
+
513
- }
+
514
-
+
515
-
+
516
-
- 517
-
+ public boolean isGetVersion() {
+ 517 7 return (line != null ) && line.hasOption(ARGUMENT.VERSION);
518
-
+ }
519
-
+
520
- public boolean isGetHelp() {
- 521 7 return (line != null ) && line.hasOption(ARGUMENT.HELP);
+
+ 521
+
522
- }
+
523
-
+
524
-
+
525
-
- 526
-
+ public boolean isGetHelp() {
+ 526 7 return (line != null ) && line.hasOption(ARGUMENT.HELP);
527
-
+ }
528
-
+
529
- public boolean isRunScan() {
- 530 21 return (line != null ) && isValid && line.hasOption(ARGUMENT.SCAN);
+
+ 530
+
531
- }
+
532
-
+
533
-
+
534
-
- 535
-
+ public boolean isRunScan() {
+ 535 21 return (line != null ) && isValid && line.hasOption(ARGUMENT.SCAN);
536
-
+ }
537
-
+
538
-
+
539
- public int getSymLinkDepth() {
- 540 0 int value = 0;
+
+ 540
+
541
+
+ 542
+
+ 543
+
+ 544
+ public int getSymLinkDepth() {
+ 545 0 int value = 0;
+ 546
try {
- 542 0 value = Integer.parseInt(line.getOptionValue(ARGUMENT.SYM_LINK_DEPTH, "0" ));
- 543 0 if (value < 0) {
- 544 0 value = 0;
- 545
- }
- 546 0 } catch (NumberFormatException ex) {
- 547 0 LOGGER.debug("Symbolic link was not a number" );
- 548 0 }
- 549 0 return value;
+ 547 0 value = Integer.parseInt(line.getOptionValue(ARGUMENT.SYM_LINK_DEPTH, "0" ));
+ 548 0 if (value < 0) {
+ 549 0 value = 0;
550
- }
- 551
-
- 552
-
- 553
-
- 554
-
+ }
+ 551 0 } catch (NumberFormatException ex) {
+ 552 0 LOGGER.debug("Symbolic link was not a number" );
+ 553 0 }
+ 554 0 return value;
555
-
+ }
556
-
+
557
-
+
558
- public boolean isJarDisabled() {
- 559 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_JAR);
+
+ 559
+
560
- }
+
561
-
+
562
-
+
563
-
- 564
-
+ public boolean isJarDisabled() {
+ 564 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_JAR);
565
-
+ }
566
-
+
567
-
+
568
- public boolean isArchiveDisabled() {
- 569 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_ARCHIVE);
+
+ 569
+
570
- }
+
571
-
+
572
-
+
573
-
- 574
-
+ public boolean isArchiveDisabled() {
+ 574 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_ARCHIVE);
575
-
+ }
576
-
+
577
-
+
578
- public boolean isNuspecDisabled() {
- 579 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_NUSPEC);
+
+ 579
+
580
- }
+
581
-
+
582
-
+
583
-
- 584
-
+ public boolean isNuspecDisabled() {
+ 584 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_NUSPEC);
585
-
+ }
586
-
+
587
-
+
588
- public boolean isAssemblyDisabled() {
- 589 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_ASSEMBLY);
+
+ 589
+
590
- }
+
591
-
+
592
-
+
593
-
- 594
-
+ public boolean isAssemblyDisabled() {
+ 594 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_ASSEMBLY);
595
-
+ }
596
-
+
597
-
+
598
-
+
599
- public boolean isBundleAuditDisabled() {
- 600 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_BUNDLE_AUDIT);
+
+ 600
+
601
- }
+
602
-
+
603
-
+
604
-
- 605
-
+ public boolean isBundleAuditDisabled() {
+ 605 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_BUNDLE_AUDIT);
606
-
+ }
607
-
+
608
-
+
609
- public boolean isPythonDistributionDisabled() {
- 610 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_PY_DIST);
+
+ 610
+
611
- }
+
612
-
+
613
-
+
614
-
- 615
-
+ public boolean isPythonDistributionDisabled() {
+ 615 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_PY_DIST);
616
-
+ }
617
-
+
618
-
+
619
- public boolean isPythonPackageDisabled() {
- 620 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_PY_PKG);
+
+ 620
+
621
- }
+
622
-
+
623
-
+
624
-
- 625
-
+ public boolean isPythonPackageDisabled() {
+ 625 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_PY_PKG);
626
-
+ }
627
-
+
628
-
+
629
- public boolean isRubyGemspecDisabled() {
- 630 0 return (null != line) && line.hasOption(ARGUMENT.DISABLE_RUBYGEMS);
+
+ 630
+
631
- }
+
632
-
+
633
-
+
634
-
- 635
-
+ public boolean isRubyGemspecDisabled() {
+ 635 0 return (null != line) && line.hasOption(ARGUMENT.DISABLE_RUBYGEMS);
636
-
+ }
637
-
+
638
-
+
639
- public boolean isCmakeDisabled() {
- 640 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_CMAKE);
+
+ 640
+
641
- }
+
642
-
+
643
-
+
644
-
- 645
-
+ public boolean isCmakeDisabled() {
+ 645 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_CMAKE);
646
-
+ }
647
-
+
648
-
+
649
- public boolean isAutoconfDisabled() {
- 650 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_AUTOCONF);
+
+ 650
+
651
- }
+
652
-
+
653
-
+
654
-
- 655
-
+ public boolean isAutoconfDisabled() {
+ 655 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_AUTOCONF);
656
-
+ }
657
-
+
658
-
+
659
- public boolean isComposerDisabled() {
- 660 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_COMPOSER);
+
+ 660
+
661
- }
+
662
-
+
663
-
+
664
-
- 665
-
+ public boolean isComposerDisabled() {
+ 665 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_COMPOSER);
666
-
+ }
667
-
+
668
-
+
669
- public boolean isNexusDisabled() {
- 670 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_NEXUS);
+
+ 670
+
671
- }
+
672
-
+
673
-
+
674
-
- 675
-
+ public boolean isNexusDisabled() {
+ 675 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_NEXUS);
676
-
+ }
677
-
+
678
-
+
679
- public boolean isOpenSSLDisabled() {
- 680 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_OPENSSL);
+
+ 680
+
681
- }
+
682
-
+
683
-
+
684
-
- 685
-
+ public boolean isOpenSSLDisabled() {
+ 685 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_OPENSSL);
686
-
+ }
687
-
+
688
-
+
689
- public boolean isNodeJsDisabled() {
- 690 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_NODE_JS);
+
+ 690
+
691
- }
+
692
-
- 693
-
- 694
-
- 695
-
- 696
-
- 697
+ 693
+
+ 694
+ public boolean isNodeJsDisabled() {
+ 695 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_NODE_JS);
+ 696
+ }
+ 697
+
698
-
+
699
- public boolean isCentralDisabled() {
- 700 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_CENTRAL);
+
+ 700
+
701
- }
+
702
-
+
703
-
+
704
-
- 705
-
+ public boolean isCentralDisabled() {
+ 705 0 return (line != null ) && line.hasOption(ARGUMENT.DISABLE_CENTRAL);
706
-
+ }
707
-
+
708
-
+
709
- public String getNexusUrl() {
- 710 0 if (line == null || !line.hasOption(ARGUMENT.NEXUS_URL)) {
- 711 0 return null ;
+
+ 710
+
+ 711
+
712
- } else {
- 713 0 return line.getOptionValue(ARGUMENT.NEXUS_URL);
+
+ 713
+
714
- }
- 715
- }
- 716
-
+ public String getNexusUrl() {
+ 715 0 if (line == null || !line.hasOption(ARGUMENT.NEXUS_URL)) {
+ 716 0 return null ;
717
-
- 718
-
- 719
-
- 720
-
- 721
-
- 722
-
- 723
-
- 724
- public boolean isNexusUsesProxy() {
- 725
-
- 726
-
- 727 0 if (line == null || !line.hasOption(ARGUMENT.NEXUS_USES_PROXY)) {
- 728
- try {
- 729 0 return Settings.getBoolean(Settings.KEYS.ANALYZER_NEXUS_USES_PROXY);
- 730 0 } catch (InvalidSettingException ise) {
- 731 0 return true ;
- 732
- }
- 733
} else {
- 734 0 return Boolean.parseBoolean(line.getOptionValue(ARGUMENT.NEXUS_USES_PROXY));
- 735
+ 718 0 return line.getOptionValue(ARGUMENT.NEXUS_URL);
+ 719
}
- 736
+ 720
}
+ 721
+
+ 722
+
+ 723
+
+ 724
+
+ 725
+
+ 726
+
+ 727
+
+ 728
+
+ 729
+ public boolean isNexusUsesProxy() {
+ 730
+
+ 731
+
+ 732 0 if (line == null || !line.hasOption(ARGUMENT.NEXUS_USES_PROXY)) {
+ 733
+ try {
+ 734 0 return Settings.getBoolean(Settings.KEYS.ANALYZER_NEXUS_USES_PROXY);
+ 735 0 } catch (InvalidSettingException ise) {
+ 736 0 return true ;
737
-
- 738
-
- 739
-
- 740
-
- 741
- public void printHelp() {
- 742 2 final HelpFormatter formatter = new HelpFormatter();
- 743 2 final Options options = new Options();
- 744 2 addStandardOptions(options);
- 745 2 if (line != null && line.hasOption(ARGUMENT.ADVANCED_HELP)) {
- 746 0 addAdvancedOptions(options);
- 747
- }
- 748 4 final String helpMsg = String.format("%n%s"
- 749
- + " can be used to identify if there are any known CVE vulnerabilities in libraries utilized by an application. "
- 750
- + "%s will automatically update required data from the Internet, such as the CVE and CPE data files from nvd.nist.gov.%n%n" ,
- 751 2 Settings.getString("application.name" , "DependencyCheck" ),
- 752 2 Settings.getString("application.name" , "DependencyCheck" ));
- 753
-
- 754 2 formatter.printHelp(Settings.getString("application.name" , "DependencyCheck" ),
- 755
- helpMsg,
- 756
- options,
- 757
- "" ,
- 758
- true );
- 759 2 }
- 760
-
- 761
-
- 762
-
- 763
-
- 764
-
- 765
-
- 766
-
- 767
- public String[] getScanFiles() {
- 768 3 return line.getOptionValues(ARGUMENT.SCAN);
- 769
- }
- 770
-
- 771
-
- 772
-
- 773
-
- 774
-
- 775
-
- 776
-
- 777
- public String[] getExcludeList() {
- 778 0 return line.getOptionValues(ARGUMENT.EXCLUDE);
- 779
- }
- 780
-
- 781
-
- 782
-
- 783
-
- 784
-
- 785
-
- 786
-
- 787
- public String getReportDirectory() {
- 788 1 return line.getOptionValue(ARGUMENT.OUT, "." );
- 789
- }
- 790
-
- 791
-
- 792
-
- 793
-
- 794
-
- 795
-
- 796
-
- 797
- public String getPathToMono() {
- 798 1 return line.getOptionValue(ARGUMENT.PATH_TO_MONO);
- 799
- }
- 800
-
- 801
-
- 802
-
- 803
-
- 804
-
- 805
-
- 806
- public String getPathToBundleAudit() {
- 807 0 return line.getOptionValue(ARGUMENT.PATH_TO_BUNDLE_AUDIT);
- 808
- }
- 809
-
- 810
-
- 811
-
- 812
-
- 813
-
- 814
-
- 815
-
- 816
- public String getReportFormat() {
- 817 1 return line.getOptionValue(ARGUMENT.OUTPUT_FORMAT, "HTML" );
- 818
- }
- 819
-
- 820
-
- 821
-
- 822
-
- 823
-
- 824
-
- 825
- public String getProjectName() {
- 826 0 final String appName = line.getOptionValue(ARGUMENT.APP_NAME);
- 827 0 String name = line.getOptionValue(ARGUMENT.PROJECT);
- 828 0 if (name == null && appName != null ) {
- 829 0 name = appName;
- 830 0 LOGGER.warn("The '" + ARGUMENT.APP_NAME + "' argument should no longer be used; use '" + ARGUMENT.PROJECT + "' instead." );
- 831
- }
- 832 0 return name;
- 833
- }
- 834
-
- 835
-
- 836
-
- 837
-
- 838
-
- 839
-
- 840
- public String getBaseCve12Url() {
- 841 1 return line.getOptionValue(ARGUMENT.CVE_BASE_12);
- 842
- }
- 843
-
- 844
-
- 845
-
- 846
-
- 847
-
- 848
-
- 849
- public String getBaseCve20Url() {
- 850 1 return line.getOptionValue(ARGUMENT.CVE_BASE_20);
- 851
- }
- 852
-
- 853
-
- 854
-
- 855
-
- 856
-
- 857
-
- 858
- public String getModifiedCve12Url() {
- 859 1 return line.getOptionValue(ARGUMENT.CVE_MOD_12);
- 860
- }
- 861
-
- 862
-
- 863
-
- 864
-
- 865
-
- 866
-
- 867
- public String getModifiedCve20Url() {
- 868 1 return line.getOptionValue(ARGUMENT.CVE_MOD_20);
- 869
- }
- 870
-
- 871
-
- 872
-
- 873
-
- 874
-
- 875
-
- 876
- public String getConnectionTimeout() {
- 877 0 return line.getOptionValue(ARGUMENT.CONNECTION_TIMEOUT);
- 878
- }
- 879
-
- 880
-
- 881
-
- 882
-
- 883
-
- 884
-
- 885
- @SuppressWarnings("deprecation" )
- 886
- public String getProxyServer() {
- 887
-
- 888 0 String server = line.getOptionValue(ARGUMENT.PROXY_SERVER);
- 889 0 if (server == null ) {
- 890 0 server = line.getOptionValue(ARGUMENT.PROXY_URL);
- 891 0 if (server != null ) {
- 892 0 LOGGER.warn("An old command line argument 'proxyurl' was detected; use proxyserver instead" );
- 893
}
- 894
+ 738
+ } else {
+ 739 0 return Boolean.parseBoolean(line.getOptionValue(ARGUMENT.NEXUS_USES_PROXY));
+ 740
}
- 895 0 return server;
- 896
+ 741
}
- 897
+ 742
+ 743
+
+ 744
+
+ 745
+
+ 746
+ public void printHelp() {
+ 747 2 final HelpFormatter formatter = new HelpFormatter();
+ 748 2 final Options options = new Options();
+ 749 2 addStandardOptions(options);
+ 750 2 if (line != null && line.hasOption(ARGUMENT.ADVANCED_HELP)) {
+ 751 0 addAdvancedOptions(options);
+ 752
+ }
+ 753 4 final String helpMsg = String.format("%n%s"
+ 754
+ + " can be used to identify if there are any known CVE vulnerabilities in libraries utilized by an application. "
+ 755
+ + "%s will automatically update required data from the Internet, such as the CVE and CPE data files from nvd.nist.gov.%n%n" ,
+ 756 2 Settings.getString("application.name" , "DependencyCheck" ),
+ 757 2 Settings.getString("application.name" , "DependencyCheck" ));
+ 758
+
+ 759 2 formatter.printHelp(Settings.getString("application.name" , "DependencyCheck" ),
+ 760
+ helpMsg,
+ 761
+ options,
+ 762
+ "" ,
+ 763
+ true );
+ 764 2 }
+ 765
+
+ 766
+
+ 767
+
+ 768
+
+ 769
+
+ 770
+
+ 771
+
+ 772
+ public String[] getScanFiles() {
+ 773 3 return line.getOptionValues(ARGUMENT.SCAN);
+ 774
+ }
+ 775
+
+ 776
+
+ 777
+
+ 778
+
+ 779
+
+ 780
+
+ 781
+
+ 782
+ public String[] getExcludeList() {
+ 783 0 return line.getOptionValues(ARGUMENT.EXCLUDE);
+ 784
+ }
+ 785
+
+ 786
+
+ 787
+
+ 788
+
+ 789
+
+ 790
+
+ 791
+
+ 792
+ public String getReportDirectory() {
+ 793 1 return line.getOptionValue(ARGUMENT.OUT, "." );
+ 794
+ }
+ 795
+
+ 796
+
+ 797
+
+ 798
+
+ 799
+
+ 800
+
+ 801
+
+ 802
+ public String getPathToMono() {
+ 803 1 return line.getOptionValue(ARGUMENT.PATH_TO_MONO);
+ 804
+ }
+ 805
+
+ 806
+
+ 807
+
+ 808
+
+ 809
+
+ 810
+
+ 811
+ public String getPathToBundleAudit() {
+ 812 0 return line.getOptionValue(ARGUMENT.PATH_TO_BUNDLE_AUDIT);
+ 813
+ }
+ 814
+
+ 815
+
+ 816
+
+ 817
+
+ 818
+
+ 819
+
+ 820
+
+ 821
+ public String getReportFormat() {
+ 822 1 return line.getOptionValue(ARGUMENT.OUTPUT_FORMAT, "HTML" );
+ 823
+ }
+ 824
+
+ 825
+
+ 826
+
+ 827
+
+ 828
+
+ 829
+
+ 830
+ public String getProjectName() {
+ 831 0 final String appName = line.getOptionValue(ARGUMENT.APP_NAME);
+ 832 0 String name = line.getOptionValue(ARGUMENT.PROJECT);
+ 833 0 if (name == null && appName != null ) {
+ 834 0 name = appName;
+ 835 0 LOGGER.warn("The '" + ARGUMENT.APP_NAME + "' argument should no longer be used; use '" + ARGUMENT.PROJECT + "' instead." );
+ 836
+ }
+ 837 0 return name;
+ 838
+ }
+ 839
+
+ 840
+
+ 841
+
+ 842
+
+ 843
+
+ 844
+
+ 845
+ public String getBaseCve12Url() {
+ 846 1 return line.getOptionValue(ARGUMENT.CVE_BASE_12);
+ 847
+ }
+ 848
+
+ 849
+
+ 850
+
+ 851
+
+ 852
+
+ 853
+
+ 854
+ public String getBaseCve20Url() {
+ 855 1 return line.getOptionValue(ARGUMENT.CVE_BASE_20);
+ 856
+ }
+ 857
+
+ 858
+
+ 859
+
+ 860
+
+ 861
+
+ 862
+
+ 863
+ public String getModifiedCve12Url() {
+ 864 1 return line.getOptionValue(ARGUMENT.CVE_MOD_12);
+ 865
+ }
+ 866
+
+ 867
+
+ 868
+
+ 869
+
+ 870
+
+ 871
+
+ 872
+ public String getModifiedCve20Url() {
+ 873 1 return line.getOptionValue(ARGUMENT.CVE_MOD_20);
+ 874
+ }
+ 875
+
+ 876
+
+ 877
+
+ 878
+
+ 879
+
+ 880
+
+ 881
+ public String getConnectionTimeout() {
+ 882 0 return line.getOptionValue(ARGUMENT.CONNECTION_TIMEOUT);
+ 883
+ }
+ 884
+
+ 885
+
+ 886
+
+ 887
+
+ 888
+
+ 889
+
+ 890
+ @SuppressWarnings("deprecation" )
+ 891
+ public String getProxyServer() {
+ 892
+
+ 893 0 String server = line.getOptionValue(ARGUMENT.PROXY_SERVER);
+ 894 0 if (server == null ) {
+ 895 0 server = line.getOptionValue(ARGUMENT.PROXY_URL);
+ 896 0 if (server != null ) {
+ 897 0 LOGGER.warn("An old command line argument 'proxyurl' was detected; use proxyserver instead" );
898
-
+ }
899
-
- 900
-
- 901
-
- 902
-
- 903
- public String getProxyPort() {
- 904 0 return line.getOptionValue(ARGUMENT.PROXY_PORT);
- 905
- }
- 906
-
- 907
-
- 908
-
- 909
-
- 910
-
- 911
-
- 912
- public String getProxyUsername() {
- 913 0 return line.getOptionValue(ARGUMENT.PROXY_USERNAME);
- 914
- }
- 915
-
- 916
-
- 917
-
- 918
-
- 919
-
- 920
-
- 921
- public String getProxyPassword() {
- 922 0 return line.getOptionValue(ARGUMENT.PROXY_PASSWORD);
- 923
- }
- 924
-
- 925
-
- 926
-
- 927
-
- 928
-
- 929
-
- 930
- public String getDataDirectory() {
- 931 0 return line.getOptionValue(ARGUMENT.DATA_DIRECTORY);
- 932
- }
- 933
-
- 934
-
- 935
-
- 936
-
- 937
-
- 938
-
- 939
- public File getPropertiesFile() {
- 940 0 final String path = line.getOptionValue(ARGUMENT.PROP);
- 941 0 if (path != null ) {
- 942 0 return new File(path);
- 943
}
- 944 0 return null ;
- 945
+ 900 0 return server;
+ 901
}
- 946
+ 902
- 947
+ 903
+ 904
+
+ 905
+
+ 906
+
+ 907
+
+ 908
+ public String getProxyPort() {
+ 909 0 return line.getOptionValue(ARGUMENT.PROXY_PORT);
+ 910
+ }
+ 911
+
+ 912
+
+ 913
+
+ 914
+
+ 915
+
+ 916
+
+ 917
+ public String getProxyUsername() {
+ 918 0 return line.getOptionValue(ARGUMENT.PROXY_USERNAME);
+ 919
+ }
+ 920
+
+ 921
+
+ 922
+
+ 923
+
+ 924
+
+ 925
+
+ 926
+ public String getProxyPassword() {
+ 927 0 return line.getOptionValue(ARGUMENT.PROXY_PASSWORD);
+ 928
+ }
+ 929
+
+ 930
+
+ 931
+
+ 932
+
+ 933
+
+ 934
+
+ 935
+ public String getDataDirectory() {
+ 936 0 return line.getOptionValue(ARGUMENT.DATA_DIRECTORY);
+ 937
+ }
+ 938
+
+ 939
+
+ 940
+
+ 941
+
+ 942
+
+ 943
+
+ 944
+ public File getPropertiesFile() {
+ 945 0 final String path = line.getOptionValue(ARGUMENT.PROP);
+ 946 0 if (path != null ) {
+ 947 0 return new File(path);
948
-
- 949
-
+ }
+ 949 0 return null ;
950
-
+ }
951
-
+
952
- public String getVerboseLog() {
- 953 0 return line.getOptionValue(ARGUMENT.VERBOSE_LOG);
+
+ 953
+
954
- }
+
955
-
+
956
-
+
957
-
- 958
-
+ public String getVerboseLog() {
+ 958 0 return line.getOptionValue(ARGUMENT.VERBOSE_LOG);
959
-
- 960
-
- 961
- public String getSuppressionFile() {
- 962 0 return line.getOptionValue(ARGUMENT.SUPPRESSION_FILE);
- 963
}
- 964
+ 960
- 965
+ 961
- 966
-
- 967
-
- 968
-
- 969
-
- 970
-
- 971
- public void printVersionInfo() {
- 972 2 final String version = String.format("%s version %s" ,
- 973 1 Settings.getString(Settings.KEYS.APPLICATION_NAME, "dependency-check" ),
- 974 1 Settings.getString(Settings.KEYS.APPLICATION_VERSION, "Unknown" ));
- 975 1 System.out.println(version);
- 976 1 }
- 977
-
- 978
-
- 979
-
- 980
-
- 981
+ 962
+
+ 963
+ 964
+
+ 965
+
+ 966
+ public String getSuppressionFile() {
+ 967 0 return line.getOptionValue(ARGUMENT.SUPPRESSION_FILE);
+ 968
+ }
+ 969
+
+ 970
+
+ 971
+
+ 972
+
+ 973
+
+ 974
+
+ 975
+ public String getHintsFile() {
+ 976 0 return line.getOptionValue(ARGUMENT.HINTS_FILE);
+ 977
+ }
+ 978
+
+ 979
+
+ 980
+
+ 981
+
982
-
+
983
-
+
984
985
- public boolean isAutoUpdate() {
- 986 0 return line != null && !line.hasOption(ARGUMENT.DISABLE_AUTO_UPDATE);
- 987
- }
- 988
-
- 989
-
- 990
-
+ public void printVersionInfo() {
+ 986 2 final String version = String.format("%s version %s" ,
+ 987 1 Settings.getString(Settings.KEYS.APPLICATION_NAME, "dependency-check" ),
+ 988 1 Settings.getString(Settings.KEYS.APPLICATION_VERSION, "Unknown" ));
+ 989 1 System.out.println(version);
+ 990 1 }
991
-
+
992
-
+
993
-
+
994
-
+
995
- public boolean isUpdateOnly() {
- 996 7 return line != null && line.hasOption(ARGUMENT.UPDATE_ONLY);
+
+ 996
+
997
- }
+
998
-
+
999
-
- 1000
-
+ public boolean isAutoUpdate() {
+ 1000 0 return line != null && !line.hasOption(ARGUMENT.DISABLE_AUTO_UPDATE);
1001
-
+ }
1002
-
+
1003
-
+
1004
-
+
1005
- public boolean isPurge() {
- 1006 0 return line != null && line.hasOption(ARGUMENT.PURGE_NVD);
+
+ 1006
+
1007
- }
+
1008
-
+
1009
-
- 1010
-
+ public boolean isUpdateOnly() {
+ 1010 7 return line != null && line.hasOption(ARGUMENT.UPDATE_ONLY);
1011
-
+ }
1012
-
+
1013
-
+
1014
-
+
1015
- public String getDatabaseDriverName() {
- 1016 0 return line.getOptionValue(ARGUMENT.DB_DRIVER);
+
+ 1016
+
1017
- }
+
1018
-
+
1019
-
- 1020
-
+ public boolean isPurge() {
+ 1020 0 return line != null && line.hasOption(ARGUMENT.PURGE_NVD);
1021
-
+ }
1022
-
+
1023
-
+
1024
-
+
1025
- public String getDatabaseDriverPath() {
- 1026 0 return line.getOptionValue(ARGUMENT.DB_DRIVER_PATH);
+
+ 1026
+
1027
- }
+
1028
-
+
1029
-
- 1030
-
+ public String getDatabaseDriverName() {
+ 1030 0 return line.getOptionValue(ARGUMENT.DB_DRIVER);
1031
-
+ }
1032
-
+
1033
-
+
1034
-
+
1035
-
+
1036
- public String getConnectionString() {
- 1037 0 return line.getOptionValue(ARGUMENT.CONNECTION_STRING);
+
+ 1037
+
1038
- }
+
1039
-
- 1040
-
+ public String getDatabaseDriverPath() {
+ 1040 0 return line.getOptionValue(ARGUMENT.DB_DRIVER_PATH);
1041
-
+ }
1042
-
+
1043
-
+
1044
-
+
1045
-
+
1046
-
+
1047
- public String getDatabaseUser() {
- 1048 0 return line.getOptionValue(ARGUMENT.DB_NAME);
- 1049
- }
- 1050
-
- 1051
-
- 1052
-
- 1053
-
- 1054
-
- 1055
-
- 1056
+
+ 1048
- 1057
+ 1049
- 1058
- public String getDatabasePassword() {
- 1059 0 return line.getOptionValue(ARGUMENT.DB_PASSWORD);
- 1060
+ 1050
+ public String getConnectionString() {
+ 1051 0 return line.getOptionValue(ARGUMENT.CONNECTION_STRING);
+ 1052
}
- 1061
+ 1053
- 1062
+ 1054
- 1063
-
- 1064
+ 1055
+
+ 1056
+ 1057
+
+ 1058
+
+ 1059
+
+ 1060
+
+ 1061
+ public String getDatabaseUser() {
+ 1062 0 return line.getOptionValue(ARGUMENT.DB_NAME);
+ 1063
+ }
+ 1064
+
1065
-
+
1066
-
+
1067
-
+
1068
- public String getAdditionalZipExtensions() {
- 1069 0 return line.getOptionValue(ARGUMENT.ADDITIONAL_ZIP_EXTENSIONS);
+
+ 1069
+
1070
- }
+
1071
-
+
1072
-
- 1073
-
+ public String getDatabasePassword() {
+ 1073 0 return line.getOptionValue(ARGUMENT.DB_PASSWORD);
1074
-
+ }
1075
-
+
1076
-
+
1077
- public Integer getCveValidForHours() {
- 1078 0 final String v = line.getOptionValue(ARGUMENT.CVE_VALID_FOR_HOURS);
- 1079 0 if (v != null ) {
- 1080 0 return Integer.parseInt(v);
- 1081
- }
- 1082 0 return null ;
- 1083
- }
- 1084
-
- 1085
-
- 1086
-
- 1087
+
+ 1078
+
+ 1079
- 1088
-
- 1089
+ 1080
+
+ 1081
- 1090
- public boolean isExperimentalEnabled() {
- 1091 0 return line.hasOption(ARGUMENT.EXPERIMENTAL);
- 1092
+ 1082
+ public String getAdditionalZipExtensions() {
+ 1083 0 return line.getOptionValue(ARGUMENT.ADDITIONAL_ZIP_EXTENSIONS);
+ 1084
}
- 1093
+ 1085
- 1094
+ 1086
- 1095
-
- 1096
-
- 1097
+ 1087
+
+ 1088
+
+ 1089
+
+ 1090
- 1098 0 public static class ARGUMENT {
- 1099
+ 1091
+ public Integer getCveValidForHours() {
+ 1092 0 final String v = line.getOptionValue(ARGUMENT.CVE_VALID_FOR_HOURS);
+ 1093 0 if (v != null ) {
+ 1094 0 return Integer.parseInt(v);
+ 1095
+ }
+ 1096 0 return null ;
+ 1097
+ }
+ 1098
+ 1099
+
1100
-
+
1101
-
+
1102
-
+
1103
- public static final String SCAN = "scan" ;
+
1104
-
- 1105
-
+ public boolean isExperimentalEnabled() {
+ 1105 0 return line.hasOption(ARGUMENT.EXPERIMENTAL);
1106
-
+ }
1107
- public static final String SCAN_SHORT = "s" ;
+
1108
-
+
1109
-
+
1110
-
+
1111
-
- 1112
- public static final String DISABLE_AUTO_UPDATE = "noupdate" ;
+
+ 1112 0 public static class ARGUMENT {
1113
-
+
1114
-
+
1115
-
+
1116
1117
- public static final String DISABLE_AUTO_UPDATE_SHORT = "n" ;
+ public static final String SCAN = "scan" ;
1118
1119
-
+
1120
-
+
1121
-
+ public static final String SCAN_SHORT = "s" ;
1122
- public static final String UPDATE_ONLY = "updateonly" ;
+
1123
-
+
1124
-
+
1125
-
+
1126
-
+ public static final String DISABLE_AUTO_UPDATE = "noupdate" ;
1127
- public static final String PURGE_NVD = "purge" ;
+
1128
-
+
1129
-
+
1130
-
+
1131
-
+ public static final String DISABLE_AUTO_UPDATE_SHORT = "n" ;
1132
- public static final String OUT = "out" ;
+
1133
-
+
1134
-
+
1135
-
+
1136
-
+ public static final String UPDATE_ONLY = "updateonly" ;
1137
- public static final String OUT_SHORT = "o" ;
+
1138
-
+
1139
-
+
1140
-
+
1141
-
+ public static final String PURGE_NVD = "purge" ;
1142
- public static final String OUTPUT_FORMAT = "format" ;
+
1143
-
+
1144
-
- 1145
+ 1145
+
1146
-
+ public static final String OUT = "out" ;
1147
- public static final String OUTPUT_FORMAT_SHORT = "f" ;
+
1148
-
+
1149
-
+
1150
-
+
1151
-
+ public static final String OUT_SHORT = "o" ;
1152
- public static final String PROJECT = "project" ;
+
1153
-
+
1154
-
+
1155
-
+
1156
-
+ public static final String OUTPUT_FORMAT = "format" ;
1157
-
+
1158
-
+
1159
- @Deprecated
+
1160
- public static final String APP_NAME = "app" ;
+
1161
-
+ public static final String OUTPUT_FORMAT_SHORT = "f" ;
1162
-
+
1163
-
+
1164
-
+
1165
-
+
1166
-
+ public static final String PROJECT = "project" ;
1167
- @Deprecated
+
1168
- public static final String APP_NAME_SHORT = "a" ;
+
1169
-
+
1170
-
- 1171
-
- 1172
- public static final String HELP = "help" ;
- 1173
-
- 1174
-
- 1175
-
- 1176
- public static final String ADVANCED_HELP = "advancedHelp" ;
- 1177
-
- 1178
-
- 1179
-
- 1180
- public static final String HELP_SHORT = "h" ;
- 1181
-
- 1182
-
- 1183
-
- 1184
- public static final String VERSION_SHORT = "v" ;
- 1185
-
- 1186
-
- 1187
-
- 1188
- public static final String VERSION = "version" ;
- 1189
-
- 1190
-
- 1191
-
- 1192
- public static final String PROXY_PORT = "proxyport" ;
- 1193
-
- 1194
-
- 1195
-
- 1196
- public static final String PROXY_SERVER = "proxyserver" ;
- 1197
-
- 1198
-
- 1199
+ 1171
+
+ 1172
+
+ 1173
+ @Deprecated
+ 1174
+ public static final String APP_NAME = "app" ;
+ 1175
+
+ 1176
+
+ 1177
+
+ 1178
+
+ 1179
+
+ 1180
+
+ 1181
+ @Deprecated
+ 1182
+ public static final String APP_NAME_SHORT = "a" ;
+ 1183
+
+ 1184
+
+ 1185
+
+ 1186
+ public static final String HELP = "help" ;
+ 1187
+
+ 1188
+
+ 1189
+
+ 1190
+ public static final String ADVANCED_HELP = "advancedHelp" ;
+ 1191
+
+ 1192
+
+ 1193
+
+ 1194
+ public static final String HELP_SHORT = "h" ;
+ 1195
+
+ 1196
+
+ 1197
+
+ 1198
+ public static final String VERSION_SHORT = "v" ;
+ 1199
+
1200
-
+
1201
1202
- @Deprecated
+ public static final String VERSION = "version" ;
1203
- public static final String PROXY_URL = "proxyurl" ;
+
1204
-
+
1205
-
+
1206
-
+ public static final String PROXY_PORT = "proxyport" ;
1207
- public static final String PROXY_USERNAME = "proxyuser" ;
+
1208
-
+
1209
-
+
1210
-
+ public static final String PROXY_SERVER = "proxyserver" ;
1211
- public static final String PROXY_PASSWORD = "proxypass" ;
+
1212
-
+
1213
-
+
1214
-
+
1215
- public static final String CONNECTION_TIMEOUT_SHORT = "c" ;
+
1216
-
+ @Deprecated
1217
-
+ public static final String PROXY_URL = "proxyurl" ;
1218
-
+
1219
- public static final String CONNECTION_TIMEOUT = "connectiontimeout" ;
+
1220
-
- 1221
-
- 1222
-
- 1223
- 1224
- public static final String PROP_SHORT = "P" ;
- 1225
+ 1221
+ public static final String PROXY_USERNAME = "proxyuser" ;
+ 1222
+ 1223
+
+ 1224
+
+ 1225
+ public static final String PROXY_PASSWORD = "proxypass" ;
1226
-
+
1227
-
+
1228
1229
- public static final String PROP = "propertyfile" ;
+ public static final String CONNECTION_TIMEOUT_SHORT = "c" ;
1230
1231
-
+
1232
1233
- public static final String DATA_DIRECTORY = "data" ;
+ public static final String CONNECTION_TIMEOUT = "connectiontimeout" ;
1234
1235
-
+
1236
-
+
1237
- public static final String CVE_MOD_12 = "cveUrl12Modified" ;
+
1238
-
+ public static final String PROP_SHORT = "P" ;
1239
-
+
1240
-
+
1241
- public static final String CVE_MOD_20 = "cveUrl20Modified" ;
+
1242
-
+
1243
-
+ public static final String PROP = "propertyfile" ;
1244
-
+
1245
- public static final String CVE_BASE_12 = "cveUrl12Base" ;
- 1246
-
- 1247
-
- 1248
-
- 1249
- public static final String CVE_BASE_20 = "cveUrl20Base" ;
- 1250
-
- 1251
-
- 1252
-
- 1253
-
- 1254
- public static final String DATA_DIRECTORY_SHORT = "d" ;
- 1255
-
- 1256
- 1257
+ 1246
- 1258
- public static final String VERBOSE_LOG = "log" ;
- 1259
+ 1247
+ public static final String DATA_DIRECTORY = "data" ;
+ 1248
+ 1249
+
+ 1250
+
+ 1251
+ public static final String CVE_MOD_12 = "cveUrl12Modified" ;
+ 1252
+
+ 1253
+
+ 1254
+
+ 1255
+ public static final String CVE_MOD_20 = "cveUrl20Modified" ;
+ 1256
+
+ 1257
+
+ 1258
+
+ 1259
+ public static final String CVE_BASE_12 = "cveUrl12Base" ;
1260
-
+
1261
-
+
1262
1263
- public static final String VERBOSE_LOG_SHORT = "l" ;
+ public static final String CVE_BASE_20 = "cveUrl20Base" ;
1264
-
+
1265
-
+
1266
-
+
1267
-
+
1268
-
+ public static final String DATA_DIRECTORY_SHORT = "d" ;
1269
- public static final String SYM_LINK_DEPTH = "symLink" ;
+
1270
-
+
1271
-
+
1272
-
+ public static final String VERBOSE_LOG = "log" ;
1273
-
+
1274
- public static final String SUPPRESSION_FILE = "suppression" ;
+
1275
-
+
1276
-
- 1277
-
- 1278
+ 1277
+ public static final String VERBOSE_LOG_SHORT = "l" ;
+ 1278
+
1279
- public static final String CVE_VALID_FOR_HOURS = "cveValidForHours" ;
- 1280
+ 1280
+
1281
-
+
1282
1283
- public static final String DISABLE_JAR = "disableJar" ;
+ public static final String SYM_LINK_DEPTH = "symLink" ;
1284
1285
-
+
1286
-
+
1287
- public static final String DISABLE_ARCHIVE = "disableArchive" ;
+
1288
-
+ public static final String SUPPRESSION_FILE = "suppression" ;
1289
-
+
1290
-
+
1291
- public static final String DISABLE_PY_DIST = "disablePyDist" ;
+
1292
-
+
1293
-
+ public static final String HINTS_FILE = "hints" ;
1294
-
+
1295
- public static final String DISABLE_PY_PKG = "disablePyPkg" ;
+
1296
-
+
1297
-
+
1298
-
+ public static final String CVE_VALID_FOR_HOURS = "cveValidForHours" ;
1299
- public static final String DISABLE_COMPOSER = "disableComposer" ;
+
1300
-
+
1301
-
+
1302
-
+ public static final String DISABLE_JAR = "disableJar" ;
1303
- public static final String DISABLE_RUBYGEMS = "disableRubygems" ;
+
1304
-
+
1305
-
+
1306
-
+ public static final String DISABLE_ARCHIVE = "disableArchive" ;
1307
- public static final String DISABLE_AUTOCONF = "disableAutoconf" ;
+
1308
-
+
1309
-
+
1310
-
+ public static final String DISABLE_PY_DIST = "disablePyDist" ;
1311
- public static final String DISABLE_CMAKE = "disableCmake" ;
+
1312
-
+
1313
-
+
1314
-
+ public static final String DISABLE_PY_PKG = "disablePyPkg" ;
1315
- public static final String DISABLE_ASSEMBLY = "disableAssembly" ;
+
1316
-
+
1317
-
+
1318
-
+ public static final String DISABLE_COMPOSER = "disableComposer" ;
1319
- public static final String DISABLE_BUNDLE_AUDIT = "disableBundleAudit" ;
+
1320
-
+
1321
-
+
1322
-
+ public static final String DISABLE_RUBYGEMS = "disableRubygems" ;
1323
- public static final String DISABLE_NUSPEC = "disableNuspec" ;
+
1324
-
+
1325
-
+
1326
-
+ public static final String DISABLE_AUTOCONF = "disableAutoconf" ;
1327
- public static final String DISABLE_CENTRAL = "disableCentral" ;
+
1328
-
+
1329
-
+
1330
-
+ public static final String DISABLE_CMAKE = "disableCmake" ;
1331
- public static final String DISABLE_NEXUS = "disableNexus" ;
+
1332
-
+
1333
-
+
1334
-
+ public static final String DISABLE_ASSEMBLY = "disableAssembly" ;
1335
- public static final String DISABLE_OPENSSL = "disableOpenSSL" ;
+
1336
-
+
1337
-
+
1338
-
+ public static final String DISABLE_BUNDLE_AUDIT = "disableBundleAudit" ;
1339
- public static final String DISABLE_NODE_JS = "disableNodeJS" ;
+
1340
-
+
1341
-
+
1342
-
+ public static final String DISABLE_NUSPEC = "disableNuspec" ;
1343
- public static final String NEXUS_URL = "nexus" ;
+
1344
-
+
1345
-
+
1346
-
+ public static final String DISABLE_CENTRAL = "disableCentral" ;
1347
-
+
1348
- public static final String NEXUS_USES_PROXY = "nexusUsesProxy" ;
+
1349
-
+
1350
-
+ public static final String DISABLE_NEXUS = "disableNexus" ;
1351
-
+
1352
- public static final String CONNECTION_STRING = "connectionString" ;
+
1353
-
+
1354
-
+ public static final String DISABLE_OPENSSL = "disableOpenSSL" ;
1355
-
+
1356
- public static final String DB_NAME = "dbUser" ;
+
1357
-
+
1358
-
+ public static final String DISABLE_NODE_JS = "disableNodeJS" ;
1359
-
+
1360
- public static final String DB_PASSWORD = "dbPassword" ;
+
1361
-
+
1362
-
+ public static final String NEXUS_URL = "nexus" ;
1363
-
+
1364
- public static final String DB_DRIVER = "dbDriverName" ;
+
1365
-
+
1366
-
+
1367
-
+ public static final String NEXUS_USES_PROXY = "nexusUsesProxy" ;
1368
-
+
1369
- public static final String DB_DRIVER_PATH = "dbDriverPath" ;
+
1370
-
+
1371
-
+ public static final String CONNECTION_STRING = "connectionString" ;
1372
-
+
1373
-
+
1374
- public static final String PATH_TO_MONO = "mono" ;
+
1375
-
+ public static final String DB_NAME = "dbUser" ;
1376
-
+
1377
-
+
1378
- public static final String ADDITIONAL_ZIP_EXTENSIONS = "zipExtensions" ;
+
1379
-
+ public static final String DB_PASSWORD = "dbPassword" ;
1380
-
+
1381
-
+
1382
- public static final String EXCLUDE = "exclude" ;
+
1383
-
+ public static final String DB_DRIVER = "dbDriverName" ;
1384
-
- 1385
-
- 1386
-
- 1387
- public static final String PATH_TO_BUNDLE_AUDIT = "bundleAudit" ;
- 1388
- 1389
-
- 1390
+ 1385
+
+ 1386
+
+ 1387
+ 1388
+ public static final String DB_DRIVER_PATH = "dbDriverPath" ;
+ 1389
+
+ 1390
+
1391
- private static final String EXPERIMENTAL = "enableExperimental" ;
+
1392
- }
+
1393
+ public static final String PATH_TO_MONO = "mono" ;
+ 1394
+
+ 1395
+
+ 1396
+
+ 1397
+ public static final String ADDITIONAL_ZIP_EXTENSIONS = "zipExtensions" ;
+ 1398
+
+ 1399
+
+ 1400
+
+ 1401
+ public static final String EXCLUDE = "exclude" ;
+ 1402
+
+ 1403
+
+ 1404
+
+ 1405
+
+ 1406
+ public static final String PATH_TO_BUNDLE_AUDIT = "bundleAudit" ;
+ 1407
+
+ 1408
+
+ 1409
+
+ 1410
+ private static final String EXPERIMENTAL = "enableExperimental" ;
+ 1411
+ }
+ 1412
}