@contrast/contrast 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audit/report/commonReportingFunctions.js +3 -4
- package/dist/audit/report/models/reportListModel.js +2 -1
- package/dist/audit/report/reportingFeature.js +1 -1
- package/dist/audit/report/utils/reportUtils.js +30 -11
- package/dist/cliConstants.js +13 -6
- package/dist/commands/audit/auditConfig.js +1 -2
- package/dist/commands/audit/help.js +2 -1
- package/dist/commands/audit/processAudit.js +1 -1
- package/dist/commands/fingerprint/fingerprintConfig.js +12 -0
- package/dist/commands/fingerprint/processFingerprint.js +14 -0
- package/dist/commands/learn/learn.js +9 -0
- package/dist/commands/learn/processLearn.js +10 -0
- package/dist/common/commonHelp.js +8 -1
- package/dist/constants/constants.js +1 -1
- package/dist/constants/locales.js +14 -3
- package/dist/index.js +8 -0
- package/dist/lambda/help.js +2 -1
- package/dist/scaAnalysis/common/auditReport.js +16 -60
- package/dist/scaAnalysis/common/commonReportingFunctionsSca.js +154 -0
- package/dist/scaAnalysis/common/models/ScaReportModel.js +45 -0
- package/dist/scaAnalysis/common/scaServicesUpload.js +4 -3
- package/dist/scaAnalysis/common/utils/reportUtilsSca.js +76 -0
- package/dist/scaAnalysis/java/analysis.js +1 -28
- package/dist/scaAnalysis/java/index.js +1 -13
- package/dist/scaAnalysis/scaAnalysis.js +155 -0
- package/dist/scan/autoDetection.js +2 -2
- package/dist/scan/fileUtils.js +2 -2
- package/dist/scan/formatScanOutput.js +19 -13
- package/dist/scan/help.js +2 -1
- package/dist/utils/paramsUtil/configStoreParams.js +1 -12
- package/dist/utils/paramsUtil/paramHandler.js +1 -7
- package/package.json +5 -1
- package/src/audit/report/commonReportingFunctions.js +7 -5
- package/src/audit/report/models/reportListModel.ts +12 -2
- package/src/audit/report/reportingFeature.ts +1 -1
- package/src/audit/report/utils/reportUtils.ts +4 -4
- package/src/cliConstants.js +15 -6
- package/src/commands/audit/auditConfig.js +1 -2
- package/src/commands/audit/help.js +2 -1
- package/src/commands/audit/processAudit.js +1 -1
- package/src/commands/fingerprint/fingerprintConfig.js +19 -0
- package/src/commands/fingerprint/processFingerprint.js +21 -0
- package/src/commands/learn/learn.js +10 -0
- package/src/commands/learn/processLearn.js +13 -0
- package/src/common/commonHelp.js +11 -1
- package/src/constants/constants.js +1 -1
- package/src/constants/locales.js +22 -3
- package/src/index.ts +11 -0
- package/src/lambda/help.ts +2 -1
- package/src/scaAnalysis/common/auditReport.js +25 -80
- package/src/scaAnalysis/common/commonReportingFunctionsSca.js +276 -0
- package/src/scaAnalysis/common/models/ScaReportModel.ts +81 -0
- package/src/scaAnalysis/common/scaServicesUpload.js +5 -3
- package/src/scaAnalysis/common/utils/reportUtilsSca.ts +123 -0
- package/src/scaAnalysis/java/analysis.js +1 -28
- package/src/scaAnalysis/java/index.js +1 -18
- package/src/scaAnalysis/scaAnalysis.js +206 -0
- package/src/scan/autoDetection.js +2 -2
- package/src/scan/fileUtils.js +2 -2
- package/src/scan/formatScanOutput.ts +28 -17
- package/src/scan/help.js +2 -1
- package/src/utils/getConfig.ts +0 -1
- package/src/utils/paramsUtil/configStoreParams.js +1 -14
- package/src/utils/paramsUtil/paramHandler.js +1 -9
- package/dist/commands/scan/sca/scaAnalysis.js +0 -155
- package/src/commands/scan/sca/scaAnalysis.js +0 -206
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
const {
|
|
2
|
-
supportedLanguages: { JAVA, GO, PYTHON, RUBY, JAVASCRIPT, NODE, PHP, DOTNET }
|
|
3
|
-
} = require('../../../constants/constants')
|
|
4
|
-
const {
|
|
5
|
-
pollForSnapshotCompletion
|
|
6
|
-
} = require('../../../audit/languageAnalysisEngine/sendSnapshot')
|
|
7
|
-
const {
|
|
8
|
-
returnOra,
|
|
9
|
-
startSpinner,
|
|
10
|
-
succeedSpinner
|
|
11
|
-
} = require('../../../utils/oraWrapper')
|
|
12
|
-
const {
|
|
13
|
-
vulnerabilityReportV2
|
|
14
|
-
} = require('../../../audit/report/reportingFeature')
|
|
15
|
-
const autoDetection = require('../../../scan/autoDetection')
|
|
16
|
-
const treeUpload = require('../../../scaAnalysis/common/treeUpload')
|
|
17
|
-
const auditController = require('../../audit/auditController')
|
|
18
|
-
const rootFile = require('../../../audit/languageAnalysisEngine/getProjectRootFilenames')
|
|
19
|
-
const path = require('path')
|
|
20
|
-
const i18n = require('i18n')
|
|
21
|
-
const auditSave = require('../../../audit/save')
|
|
22
|
-
const { auditUsageGuide } = require('../../audit/help')
|
|
23
|
-
const repoMode = require('../../../scaAnalysis/repoMode/index')
|
|
24
|
-
const { dotNetAnalysis } = require('../../../scaAnalysis/dotnet')
|
|
25
|
-
const { goAnalysis } = require('../../../scaAnalysis/go/goAnalysis')
|
|
26
|
-
const { phpAnalysis } = require('../../../scaAnalysis/php/index')
|
|
27
|
-
const { rubyAnalysis } = require('../../../scaAnalysis/ruby')
|
|
28
|
-
const { pythonAnalysis } = require('../../../scaAnalysis/python')
|
|
29
|
-
const javaAnalysis = require('../../../scaAnalysis/java')
|
|
30
|
-
const jsAnalysis = require('../../../scaAnalysis/javascript')
|
|
31
|
-
const auditReport = require('../../../scaAnalysis/common/auditReport')
|
|
32
|
-
const scaUpload = require('../../../scaAnalysis/common/scaServicesUpload')
|
|
33
|
-
const settingsHelper = require('../../../utils/settingsHelper')
|
|
34
|
-
const chalk = require('chalk')
|
|
35
|
-
const saveResults = require('../../../scan/saveResults')
|
|
36
|
-
|
|
37
|
-
const processSca = async config => {
|
|
38
|
-
//checks to see whether to use old TS / new SCA path
|
|
39
|
-
config = await settingsHelper.getSettings(config)
|
|
40
|
-
|
|
41
|
-
const startTime = performance.now()
|
|
42
|
-
let filesFound
|
|
43
|
-
|
|
44
|
-
if (config.help) {
|
|
45
|
-
console.log(auditUsageGuide)
|
|
46
|
-
process.exit(0)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const projectStats = await rootFile.getProjectStats(config.file)
|
|
50
|
-
let pathWithFile = projectStats.isFile()
|
|
51
|
-
|
|
52
|
-
config.fileName = config.file
|
|
53
|
-
config.file = pathWithFile
|
|
54
|
-
? rootFile.getDirectoryFromPathGiven(config.file).concat('/')
|
|
55
|
-
: config.file
|
|
56
|
-
|
|
57
|
-
if (config.fingerprint && config.experimental) {
|
|
58
|
-
let fingerprint = await autoDetection.autoDetectFingerprintInfo(config.file)
|
|
59
|
-
let idArray = fingerprint.map(x => x.id)
|
|
60
|
-
await saveResults.writeResultsToFile(fingerprint, 'fingerPrintInfo.json')
|
|
61
|
-
console.log(idArray)
|
|
62
|
-
} else {
|
|
63
|
-
filesFound = await autoDetection.autoDetectAuditFilesAndLanguages(
|
|
64
|
-
config.file
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
autoDetection.dealWithMultiJava(filesFound)
|
|
68
|
-
|
|
69
|
-
if (filesFound.length > 1 && pathWithFile) {
|
|
70
|
-
filesFound = filesFound.filter(i =>
|
|
71
|
-
Object.values(i)[0].includes(path.basename(config.fileName))
|
|
72
|
-
)
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// files found looks like [ { javascript: [ Array ] } ]
|
|
76
|
-
//check we have the language and call the right analyser
|
|
77
|
-
let messageToSend = undefined
|
|
78
|
-
if (filesFound.length === 1) {
|
|
79
|
-
switch (Object.keys(filesFound[0])[0]) {
|
|
80
|
-
case JAVA:
|
|
81
|
-
config.language = JAVA
|
|
82
|
-
|
|
83
|
-
if (config.mode === 'repo') {
|
|
84
|
-
try {
|
|
85
|
-
return repoMode.buildRepo(config, filesFound[0])
|
|
86
|
-
} catch (e) {
|
|
87
|
-
throw new Error(
|
|
88
|
-
'Unable to build in repository mode. Check your project file'
|
|
89
|
-
)
|
|
90
|
-
}
|
|
91
|
-
} else {
|
|
92
|
-
messageToSend = await javaAnalysis.javaAnalysis(
|
|
93
|
-
config,
|
|
94
|
-
filesFound[0]
|
|
95
|
-
)
|
|
96
|
-
}
|
|
97
|
-
break
|
|
98
|
-
case JAVASCRIPT:
|
|
99
|
-
messageToSend = await jsAnalysis.jsAnalysis(config, filesFound[0])
|
|
100
|
-
config.language = NODE
|
|
101
|
-
break
|
|
102
|
-
case PYTHON:
|
|
103
|
-
messageToSend = pythonAnalysis(config, filesFound[0])
|
|
104
|
-
config.language = PYTHON
|
|
105
|
-
break
|
|
106
|
-
case RUBY:
|
|
107
|
-
messageToSend = rubyAnalysis(config, filesFound[0])
|
|
108
|
-
config.language = RUBY
|
|
109
|
-
break
|
|
110
|
-
case PHP:
|
|
111
|
-
messageToSend = phpAnalysis(config, filesFound[0])
|
|
112
|
-
config.language = PHP
|
|
113
|
-
break
|
|
114
|
-
case GO:
|
|
115
|
-
messageToSend = goAnalysis(config, filesFound[0])
|
|
116
|
-
config.language = GO
|
|
117
|
-
break
|
|
118
|
-
case DOTNET:
|
|
119
|
-
messageToSend = dotNetAnalysis(config, filesFound[0])
|
|
120
|
-
config.language = DOTNET
|
|
121
|
-
break
|
|
122
|
-
default:
|
|
123
|
-
//something is wrong
|
|
124
|
-
console.log('No supported language detected in project path')
|
|
125
|
-
return
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (!config.applicationId) {
|
|
129
|
-
config.applicationId = await auditController.dealWithNoAppId(config)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
if (config.experimental) {
|
|
133
|
-
console.log('') //empty log for space before spinner
|
|
134
|
-
const reportSpinner = returnOra(i18n.__('auditSCAAnalysisBegins'))
|
|
135
|
-
startSpinner(reportSpinner)
|
|
136
|
-
const [reports, reportId] = await scaUpload.scaTreeUpload(
|
|
137
|
-
messageToSend,
|
|
138
|
-
config
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
auditReport.processAuditReport(config, reports[0])
|
|
142
|
-
succeedSpinner(reportSpinner, i18n.__('auditSCAAnalysisComplete'))
|
|
143
|
-
|
|
144
|
-
if (config.save !== undefined) {
|
|
145
|
-
await auditSave.auditSave(config, reportId)
|
|
146
|
-
} else {
|
|
147
|
-
console.log('Use contrast audit --save to generate an SBOM')
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const endTime = performance.now() - startTime
|
|
151
|
-
const scanDurationMs = endTime - startTime
|
|
152
|
-
console.log(
|
|
153
|
-
`----- completed in ${(scanDurationMs / 1000).toFixed(2)}s -----`
|
|
154
|
-
)
|
|
155
|
-
} else {
|
|
156
|
-
console.log('') //empty log for space before spinner
|
|
157
|
-
//send message to TS
|
|
158
|
-
const reportSpinner = returnOra(i18n.__('auditSCAAnalysisBegins'))
|
|
159
|
-
startSpinner(reportSpinner)
|
|
160
|
-
const snapshotResponse = await treeUpload.commonSendSnapShot(
|
|
161
|
-
messageToSend,
|
|
162
|
-
config
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
// poll for completion
|
|
166
|
-
await pollForSnapshotCompletion(
|
|
167
|
-
config,
|
|
168
|
-
snapshotResponse.id,
|
|
169
|
-
reportSpinner
|
|
170
|
-
)
|
|
171
|
-
succeedSpinner(reportSpinner, i18n.__('auditSCAAnalysisComplete'))
|
|
172
|
-
|
|
173
|
-
await vulnerabilityReportV2(config, snapshotResponse.id)
|
|
174
|
-
if (config.save !== undefined) {
|
|
175
|
-
await auditSave.auditSave(config)
|
|
176
|
-
} else {
|
|
177
|
-
console.log('\nUse contrast audit --save to generate an SBOM')
|
|
178
|
-
}
|
|
179
|
-
const endTime = performance.now() - startTime
|
|
180
|
-
const scanDurationMs = endTime - startTime
|
|
181
|
-
|
|
182
|
-
console.log(
|
|
183
|
-
`----- completed in ${(scanDurationMs / 1000).toFixed(2)}s -----`
|
|
184
|
-
)
|
|
185
|
-
}
|
|
186
|
-
} else {
|
|
187
|
-
if (filesFound.length === 0) {
|
|
188
|
-
console.log(i18n.__('languageAnalysisNoLanguage'))
|
|
189
|
-
console.log(i18n.__('languageAnalysisNoLanguageHelpLine'))
|
|
190
|
-
throw new Error()
|
|
191
|
-
} else {
|
|
192
|
-
console.log(chalk.bold(`\nMultiple language files detected \n`))
|
|
193
|
-
filesFound.forEach(file => {
|
|
194
|
-
console.log(`${Object.keys(file)[0]} : `, Object.values(file)[0])
|
|
195
|
-
})
|
|
196
|
-
throw new Error(
|
|
197
|
-
`Please use --file to audit one language only. \nExample: contrast audit --file package-lock.json`
|
|
198
|
-
)
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
module.exports = {
|
|
205
|
-
processSca
|
|
206
|
-
}
|