Audit Your Application Using the vb-audit Grunt Task
VB Studio provides an NPM package
(grunt-vb-audit) that includes the vb-audit Grunt task
that you can use to audit your visual applications.
The root folder of your visual application includes two resource files that Grunt uses when it audits applications: Gruntfile.js and package.json:
| File | Description |
|---|---|
Gruntfile.js |
Contains a basic Grunt script that you can modify to add custom audit tasks, and to configure built-in tasks. |
package.json |
Declares the dependency and specifies the URL reference to the grunt-vb-audit NPM package that provides the Grunt task to audit visual applications. VB Studio automatically updates the package version and URL whenever Oracle publishes a new version of the package.
|
As with the Grunt tasks that you use to build and deploy your visual application, you need to install Node.js and its package manager (npm) on your local system. You also need to save the sources for the visual application on your local system.
vb-audit:
- In the command-line interface, navigate to the folder on your local system containing the
package.jsonandGruntfile.jsfiles. - Enter
npm installto retrieve the node dependencies required to audit the application.The install command retrieves the
grunt-vb-auditNPM package defined inpackage.json. - Enter
grunt vb-auditin the command-line interface to audit your application. The following illustrative example shows how you execute this task.# Audit application sources ./node_modules/.bin/grunt vb-audit \ --url=<https://Visual-Builder-runtime-instance-url/ic/builder/> \ --username=<Visual-Builder-runtime-username> \ --password=<Visual-Builder-runtime-password> \ --id=<your visual app ID> \ --ver=<your visual app version>
You can omit the task parameters (URL,
username, and so on) if the visual application that you audit does
not include modules that require a server connection, such as business objects, for the
audit to complete. If you do not specify values for the task parameters when a server
connection is required, error messages appear in the command-line interface and the
corresponding modules fail the audit.
By default, vb-audit audits all files in your application
according to the following glob patterns:
[
'**/*',
// Ignore npm directories during audit
'!node/**',
'!**/node_modules/**',
]
You can override the files to audit with your own glob patterns. The exclusion patterns in the default glob pattern are appended to the glob patterns that you supply.
Configure Audit Options in Gruntfile.js
You can specify server connection properties and vb-audit
properties in your visual application's Gruntfile.js file.
The following example shows available options.
grunt.initConfig({
vb: {
url: '<VB-instance-url>',
id: <your visual app ID>,
ver: <your visual app version>,
username: <username>,
password: <password>, // This is not encrypted
},
'vb-audit': {
options: {
config: {
auditors: {
// Disable specific auditors
'lcm.VirtualRolesAuditor': { // Requires backend
enabled: false,
},
'components.InstalledComponentsAuditor': { // Requires backend
enabled: false,
},
'serviceConnectionAuditor': { // Requires backend
enabled: false,
},
'deploymentProfileAuditor': { // Requires backend
enabled: false,
},
},
},
files: [ // Globbing patterns to use for this application
'*',
'process/**',
'services/**',
'settings/**',
'webApps/**',
'!**/package-lock.json',
],
processResults: (results) => { // Supply an alternate results processor
grunt.log.writeln(`Processed ${results.auditedResourceCount} files`);
},
outputFile: 'auditoutput.txt', // Output file to receive the audit results (e.g. auditoutput.txt, auditoutput.csv)
},
},
});The entries in 'vb-audit': { options: { config: { are passed to the
audit system and override or augment the options that you set in your visual
application's settings/audit.json file if you configured options in the
latter file using VB Studio’s Audits feature.
For output, you can specify processResults or
outputFile. If you specify neither, vb-audit
writes the output to the command-line interface. Note that the example
Gruntfile.js shown above displays both options, as it is an
illustrative example of available options. Omit the option
(processResults or outputFile) that you do not
want to use, or omit both options if you want to write output to the command-line
interface.
The results parameter for processResults has the following format:
{
auditedResourceCount, <number of resources audited>
totalResourceCount, <number of resources checked (some resources may not have auditors)>
issues[{
ruleId, // String id of the rule
severity, // ['error' | 'warning' | 'info' | 'todo']
message, // String message
filePath, // resource's file path
location: {
line,
col,
endLine,
endCol,
length,
},
}]
}You can specify target-based options in Gruntfile.js that override or
augment your standard options. The following example audits the modules in the
webApps directory:
grunt.initConfig({
vb: {
...
},
'vb-audit': {
options: {
...
},
webApps: { // target to audit the modules in the webApps directory
files: [
'webApps/**'
],
},
},
});To audit the webApps target, run the vb-audit task and
specify the target:
./node_modules/.bin/grunt vb-audit:webApps
Note:
grunt.config.merge merges the target options, such as
webApps in our previous example, into the
vb-audit options. It merges array and object properties
recursively. If, for example, options defines a files array with 5
elements and you provide a target options with a files array that has 2 elements,
the first 2 elements in the options files array will be overwritten
and the remaining 3 elements remain unchanged.
A difference between the files option in the
Gruntfile.js file and the paths/exclude option
in your settings/audit.json file is that the
Gruntfile.js files option assembles the set of files that
vb-audit sends to the audit system, whereas the
audit.json patterns are ignored by the audit system. In
particular, if you supply a files option in your
Gruntfile.js, you need to have an exclusion pattern for
something like node_modules, as processing the thousands of files
under node_modules can be time consuming. This exclusion pattern is
included in the default configuration.
Override Configuration Options in Gruntfile.js
You can override the Gruntfile.js configuration options for
vb-audit by specifying properties on the command-line
interface.
The following example shows available options.
./node_modules/.bin/grunt vb-audit \
--audit.files='webApps/**' \
--audit.disabledauditors='lcm.VirtualRolesAuditor,components.InstalledComponentsAuditor' \
--audit.outputfile='auditoutput.txt'