@terafina/tffa-sfdx-plugin 1.0.1 → 1.0.4
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/README.md +5 -2
- package/lib/commands/tffa/apexdoc.js +1 -1
- package/lib/commands/tffa/apexdoc.js.map +1 -1
- package/lib/commands/tffa/lint.d.ts +18 -0
- package/lib/commands/tffa/lint.js +57 -0
- package/lib/commands/tffa/lint.js.map +1 -0
- package/lib/commands/tffa/ping.js +1 -1
- package/lib/commands/tffa/ping.js.map +1 -1
- package/lib/{commands/tffa/scan.d.ts → scanner/apex-class-scan.d.ts} +2 -23
- package/lib/{commands/tffa/scan.js → scanner/apex-class-scan.js} +16 -129
- package/lib/scanner/apex-class-scan.js.map +1 -0
- package/lib/scanner/metadata-scan.d.ts +16 -0
- package/lib/scanner/metadata-scan.js +173 -0
- package/lib/scanner/metadata-scan.js.map +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +7 -7
- package/lib/commands/tffa/scan.js.map +0 -1
package/README.md
CHANGED
|
@@ -43,5 +43,8 @@ EXAMPLE
|
|
|
43
43
|
|
|
44
44
|
sfdx tffa:apexdoc
|
|
45
45
|
|
|
46
|
-
sfdx
|
|
47
|
-
sfdx tffa:
|
|
46
|
+
sfdx plugins:install @terafina/tffa-sfdx-plugin
|
|
47
|
+
sfdx tffa:apexdoc
|
|
48
|
+
sfdx tffa:lint
|
|
49
|
+
|
|
50
|
+
sfdx tffa:lint -s . -m 53 -f json >> out.json
|
|
@@ -16,7 +16,7 @@ const utils_1 = tslib_1.__importDefault(require("../../apexdoc/common/utils"));
|
|
|
16
16
|
const array_utils_1 = require("../../apexdoc/common/array-utils");
|
|
17
17
|
class ApexDoc extends command_1.SfdxCommand {
|
|
18
18
|
async run() {
|
|
19
|
-
|
|
19
|
+
await core_1.SfdxProject.resolve();
|
|
20
20
|
try {
|
|
21
21
|
settings_1.default.config = settings_1.default.getConfig(settings_1.Feature.ENGINE);
|
|
22
22
|
this.generateDocs(settings_1.default.config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexdoc.js","sourceRoot":"","sources":["../../../src/commands/tffa/apexdoc.ts"],"names":[],"mappings":";AAAA;;IAEI;;;AAEJ,iDAAyD;AACzD,4EAAsD;AACtD,2CAA0D;AAE1D,kFAAkE;AAClE,6FAA4D;AAC5D,+BAAgC;AAChC,2CAAyC;AACzC,2FAA0D;AAC1D,+EAA+C;AAC/C,kEAAwD;AAExD,MAAqB,OAAQ,SAAQ,qBAAW;IAcvC,KAAK,CAAC,GAAG;QACd,MAAM,
|
|
1
|
+
{"version":3,"file":"apexdoc.js","sourceRoot":"","sources":["../../../src/commands/tffa/apexdoc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) NCR Terafina
|
|
3
|
+
**/
|
|
4
|
+
import { flags, SfdxCommand } from '@salesforce/command';
|
|
5
|
+
export default class Lint extends SfdxCommand {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
protected static flagsConfig: {
|
|
9
|
+
sourcefolder: flags.Discriminated<flags.Option<string>>;
|
|
10
|
+
minapi: flags.Discriminated<flags.Number>;
|
|
11
|
+
json: flags.Discriminated<flags.Boolean<boolean>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<any>;
|
|
14
|
+
/**
|
|
15
|
+
* print output
|
|
16
|
+
*/
|
|
17
|
+
private printViolations;
|
|
18
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) NCR Terafina
|
|
4
|
+
**/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const command_1 = require("@salesforce/command");
|
|
8
|
+
const core_1 = require("@salesforce/core");
|
|
9
|
+
const apex_class_scan_1 = tslib_1.__importDefault(require("../../scanner/apex-class-scan"));
|
|
10
|
+
const metadata_scan_1 = tslib_1.__importDefault(require("../../scanner/metadata-scan"));
|
|
11
|
+
class Lint extends command_1.SfdxCommand {
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
async run() {
|
|
14
|
+
await core_1.SfdxProject.resolve(this.flags.sourcefolder);
|
|
15
|
+
let violations = [];
|
|
16
|
+
violations = await new apex_class_scan_1.default().scan(this.flags.sourcefolder);
|
|
17
|
+
const mViolations = await new metadata_scan_1.default().scan(this.flags.sourcefolder, this.flags.minapi);
|
|
18
|
+
violations.push(...mViolations);
|
|
19
|
+
this.printViolations(this.flags.json, violations);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* print output
|
|
23
|
+
*/
|
|
24
|
+
printViolations(option, violations) {
|
|
25
|
+
if (option) {
|
|
26
|
+
console.log(JSON.stringify(violations, null, 4));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
for (const o of violations) {
|
|
30
|
+
console.log('---------------------------------------------------------------------------------');
|
|
31
|
+
console.log(o.category + ' - ' + o.level);
|
|
32
|
+
console.log(o.label + ' - ' + o.message);
|
|
33
|
+
console.table(o.exceptions);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = Lint;
|
|
39
|
+
Lint.description = 'scan a package and provide recommendations based on package';
|
|
40
|
+
Lint.examples = [`Scan a package and provide list of code violations :\t$sfdx tffa:scan`];
|
|
41
|
+
Lint.flagsConfig = {
|
|
42
|
+
sourcefolder: command_1.flags.directory({
|
|
43
|
+
char: 's',
|
|
44
|
+
description: 'directory containing sfdx project',
|
|
45
|
+
default: '.'
|
|
46
|
+
}),
|
|
47
|
+
minapi: command_1.flags.integer({
|
|
48
|
+
char: 'm',
|
|
49
|
+
description: 'minimum api version to use during quality checks',
|
|
50
|
+
default: 53
|
|
51
|
+
}),
|
|
52
|
+
json: command_1.flags.boolean({
|
|
53
|
+
char: 'j',
|
|
54
|
+
description: 'generate json output'
|
|
55
|
+
})
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../src/commands/tffa/lint.ts"],"names":[],"mappings":";AAAA;;IAEI;;;AAEJ,iDAAyD;AACzD,2CAA+C;AAC/C,4FAA0D;AAC1D,wFAAuD;AAEvD,MAAqB,IAAK,SAAQ,qBAAW;IAsB3C,8DAA8D;IACvD,KAAK,CAAC,GAAG;QACd,MAAM,kBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,UAAU,GAAG,MAAM,IAAI,yBAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,MAAM,IAAI,uBAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9F,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAM,EAAE,UAAU;QACxC,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAClD;aAAM;YACL,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;gBAC1B,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;gBACjG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aAC7B;SACF;IACH,CAAC;;AA9CH,uBA+CC;AA9Ce,gBAAW,GAAG,6DAA6D,CAAC;AAE5E,aAAQ,GAAG,CAAC,uEAAuE,CAAC,CAAC;AAElF,gBAAW,GAAG;IAC7B,YAAY,EAAE,eAAK,CAAC,SAAS,CAAC;QAC5B,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,GAAG;KACb,CAAC;IACF,MAAM,EAAE,eAAK,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,IAAI,EAAE,eAAK,CAAC,OAAO,CAAC;QAClB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,sBAAsB;KACpC,CAAC;CACH,CAAC"}
|
|
@@ -12,9 +12,9 @@ core_1.Messages.importMessagesDirectory(__dirname);
|
|
|
12
12
|
const messages = core_1.Messages.loadMessages('@terafina/tffa-sfdx-plugin', 'ping');
|
|
13
13
|
class Ping extends command_1.SfdxCommand {
|
|
14
14
|
async run() {
|
|
15
|
+
await core_1.SfdxProject.resolve();
|
|
15
16
|
const outputString = 'pong';
|
|
16
17
|
this.ux.log(outputString);
|
|
17
|
-
// Return an object to be displayed with --json
|
|
18
18
|
return { outputString };
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ping.js","sourceRoot":"","sources":["../../../src/commands/tffa/ping.ts"],"names":[],"mappings":";;AAAA;;IAEI;AACJ,iDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"ping.js","sourceRoot":"","sources":["../../../src/commands/tffa/ping.ts"],"names":[],"mappings":";;AAAA;;IAEI;AACJ,iDAAkD;AAClD,2CAAyD;AAGzD,wDAAwD;AACxD,eAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAE5C,iGAAiG;AACjG,mFAAmF;AACnF,MAAM,QAAQ,GAAG,eAAQ,CAAC,YAAY,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAE7E,MAAqB,IAAK,SAAQ,qBAAW;IASpC,KAAK,CAAC,GAAG;QACd,MAAM,kBAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;;AAdH,uBAeC;AAde,gBAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAExD,aAAQ,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAEjC,SAAI,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAEvB,gBAAW,GAAG,EAAE,CAAC"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) NCR Terafina
|
|
3
3
|
**/
|
|
4
|
-
|
|
5
|
-
export default class Scan extends SfdxCommand {
|
|
6
|
-
static description: string;
|
|
7
|
-
static examples: string[];
|
|
4
|
+
export default class ApexClassScan {
|
|
8
5
|
minapi: number;
|
|
9
6
|
dir: string;
|
|
10
7
|
allowedListEnd: string[];
|
|
@@ -14,12 +11,7 @@ export default class Scan extends SfdxCommand {
|
|
|
14
11
|
allowedListStart: string[];
|
|
15
12
|
ignoreFiles: string[];
|
|
16
13
|
ignoreCZFiles: any[];
|
|
17
|
-
|
|
18
|
-
sourcefolder: flags.Discriminated<flags.Option<string>>;
|
|
19
|
-
mdoutfolder: flags.Discriminated<flags.Option<string>>;
|
|
20
|
-
format: flags.Discriminated<flags.Option<string>>;
|
|
21
|
-
};
|
|
22
|
-
run(): Promise<any>;
|
|
14
|
+
scan(sourceFolder: string): Promise<any[]>;
|
|
23
15
|
/**
|
|
24
16
|
* test file names as per conventions
|
|
25
17
|
*/
|
|
@@ -36,17 +28,4 @@ export default class Scan extends SfdxCommand {
|
|
|
36
28
|
* @param {*} ext
|
|
37
29
|
*/
|
|
38
30
|
private getFilesInDirectory;
|
|
39
|
-
/**
|
|
40
|
-
* scan json files
|
|
41
|
-
*/
|
|
42
|
-
private scanJSONFiles;
|
|
43
|
-
/**
|
|
44
|
-
* scan ISVTE plugin for quality rules
|
|
45
|
-
* @param {} convertedPath
|
|
46
|
-
*/
|
|
47
|
-
private scanISVTEQuality;
|
|
48
|
-
/**
|
|
49
|
-
* print output
|
|
50
|
-
*/
|
|
51
|
-
private printViolations;
|
|
52
31
|
}
|
|
@@ -4,15 +4,10 @@
|
|
|
4
4
|
**/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const tslib_1 = require("tslib");
|
|
7
|
-
const command_1 = require("@salesforce/command");
|
|
8
|
-
const path = tslib_1.__importStar(require("path"));
|
|
9
7
|
const fs_1 = require("fs");
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
const core_1 = require("@salesforce/core");
|
|
13
|
-
class Scan extends command_1.SfdxCommand {
|
|
8
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
9
|
+
class ApexClassScan {
|
|
14
10
|
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
11
|
this.minapi = 53.0;
|
|
17
12
|
this.dir = '';
|
|
18
13
|
this.allowedListEnd = [
|
|
@@ -121,25 +116,10 @@ class Scan extends command_1.SfdxCommand {
|
|
|
121
116
|
this.ignoreCZFiles = [];
|
|
122
117
|
}
|
|
123
118
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
124
|
-
async
|
|
125
|
-
|
|
126
|
-
// const project = await SfdxProject.resolve(this.flags.sourcefolder);
|
|
127
|
-
// const projectJSON = project.getSfdxProjectJson().getContents();
|
|
128
|
-
// const model = new Inventory();
|
|
129
|
-
// model.namespace = projectJSON.namespace;
|
|
130
|
-
// model.sourceApiVersion = projectJSON.sourceApiVersion;
|
|
131
|
-
// model.minapi = this.flags.minapi;
|
|
132
|
-
// model.path = projectJSON.packageDirectories[0].path;
|
|
133
|
-
// model.fullpath = this.flags.sourcefolder + path.sep + model.path;
|
|
134
|
-
// model.codepath = model.fullpath + path.sep + 'main/default/';
|
|
135
|
-
// model.testpath = model.fullpath + path.sep + 'test/default/';
|
|
136
|
-
// model.languagescan = this.flags.json;
|
|
137
|
-
// parse(model);
|
|
138
|
-
// console.log(model);
|
|
139
|
-
const project = await core_1.SfdxProject.resolve(this.flags.sourcefolder);
|
|
140
|
-
this.dir = this.flags.sourcefolder + path.sep + '/app/main/default/classes';
|
|
119
|
+
async scan(sourceFolder) {
|
|
120
|
+
this.dir = sourceFolder + '/app/main/default/classes';
|
|
141
121
|
this.classFiles = this.getFilesInDirectory(this.dir, '.cls');
|
|
142
|
-
Promise.all([
|
|
122
|
+
await Promise.all([
|
|
143
123
|
this.checkFileNameConvention(),
|
|
144
124
|
this.checkClassesForKeywords('System\\.debug', 'Use tffa.Logger instead'),
|
|
145
125
|
this.checkClassesForKeywords('\\.isCreateable', 'CRUD/FLS Checks are checked by tffa.AbstractRepository'),
|
|
@@ -156,15 +136,9 @@ class Scan extends command_1.SfdxCommand {
|
|
|
156
136
|
this.checkClassesForKeywords('Database\\.update', 'Any SOQL should be encapsulated into Repository classes extending tffa.AbstractRepository. Use doQuery method '),
|
|
157
137
|
this.checkClassesForKeywords('Database\\.insert', 'Any SOQL should be encapsulated into Repository classes extending tffa.AbstractRepository. Use doQuery method '),
|
|
158
138
|
this.checkClassesForKeywords('Database\\.upsert', 'Any SOQL should be encapsulated into Repository classes extending tffa.AbstractRepository. Use doQuery method '),
|
|
159
|
-
this.checkClassesForKeywords('Database\\.delete', 'Any SOQL should be encapsulated into Repository classes extending tffa.AbstractRepository. Use doQuery method ')
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
])
|
|
163
|
-
.then(() => this.printViolations(this.flags.format))
|
|
164
|
-
.catch(error => {
|
|
165
|
-
console.error(error.message);
|
|
166
|
-
});
|
|
167
|
-
return '';
|
|
139
|
+
this.checkClassesForKeywords('Database\\.delete', 'Any SOQL should be encapsulated into Repository classes extending tffa.AbstractRepository. Use doQuery method ')
|
|
140
|
+
]);
|
|
141
|
+
return this.violations;
|
|
168
142
|
}
|
|
169
143
|
/**
|
|
170
144
|
* test file names as per conventions
|
|
@@ -173,9 +147,9 @@ class Scan extends command_1.SfdxCommand {
|
|
|
173
147
|
return new Promise(resolve => {
|
|
174
148
|
const violatingFiles = [];
|
|
175
149
|
for (const file of this.classFiles) {
|
|
176
|
-
const filepath =
|
|
177
|
-
if (
|
|
178
|
-
const filename =
|
|
150
|
+
const filepath = path_1.default.join(this.dir, file);
|
|
151
|
+
if (path_1.default.extname(filepath) == '.cls') {
|
|
152
|
+
const filename = path_1.default.basename(filepath, '.cls');
|
|
179
153
|
if (!this.allowedListEnd.some(substring => filename.endsWith(substring)) &&
|
|
180
154
|
!this.allowedListStart.some(substring => filename.startsWith(substring))) {
|
|
181
155
|
violatingFiles.push(filename);
|
|
@@ -224,7 +198,7 @@ class Scan extends command_1.SfdxCommand {
|
|
|
224
198
|
}
|
|
225
199
|
}
|
|
226
200
|
if (found) {
|
|
227
|
-
const filename =
|
|
201
|
+
const filename = path_1.default.basename(file, '.cls');
|
|
228
202
|
if (this.ignoreFiles.indexOf(filename) < 0 && this.ignoreCZFiles.indexOf(filename) < 0) {
|
|
229
203
|
violatingFiles.push(filename);
|
|
230
204
|
}
|
|
@@ -255,7 +229,7 @@ class Scan extends command_1.SfdxCommand {
|
|
|
255
229
|
throw Error(`Specified directory: ${dir} does not exist`);
|
|
256
230
|
}
|
|
257
231
|
fs_1.readdirSync(dir).forEach(file => {
|
|
258
|
-
const filePath =
|
|
232
|
+
const filePath = path_1.default.join(dir, file);
|
|
259
233
|
const stat = fs_1.lstatSync(filePath);
|
|
260
234
|
// If we hit a directory, apply our function to that dir. If we hit a file, add it to the array of files.
|
|
261
235
|
if (stat.isDirectory()) {
|
|
@@ -263,100 +237,13 @@ class Scan extends command_1.SfdxCommand {
|
|
|
263
237
|
files = files.concat(nestedFiles);
|
|
264
238
|
}
|
|
265
239
|
else {
|
|
266
|
-
if (
|
|
240
|
+
if (path_1.default.extname(file) === ext) {
|
|
267
241
|
files.push(filePath);
|
|
268
242
|
}
|
|
269
243
|
}
|
|
270
244
|
});
|
|
271
245
|
return files;
|
|
272
246
|
}
|
|
273
|
-
/**
|
|
274
|
-
* scan json files
|
|
275
|
-
*/
|
|
276
|
-
async scanJSONFiles(path) {
|
|
277
|
-
const fileContent = fs_1.readFileSync(path + '/sfdx-project.json');
|
|
278
|
-
const obj = JSON.parse(fileContent.toString());
|
|
279
|
-
if (this.minapi > parseInt(obj['sourceApiVersion'])) {
|
|
280
|
-
// console.log(obj["sourceApiVersion"]);
|
|
281
|
-
const o = {
|
|
282
|
-
label: 'Project source api version not equal to ' + this.minapi,
|
|
283
|
-
message: 'Please update sourceApiVersion to ' + this.minapi + ' sfdx-project.json',
|
|
284
|
-
category: 'INTERNAL',
|
|
285
|
-
level: 'FATAL',
|
|
286
|
-
exceptions: [{ 0: 'sfdx-project.json' }]
|
|
287
|
-
};
|
|
288
|
-
this.violations.push(o);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* scan ISVTE plugin for quality rules
|
|
293
|
-
* @param {} convertedPath
|
|
294
|
-
*/
|
|
295
|
-
async scanISVTEQuality(convertedPath) {
|
|
296
|
-
try {
|
|
297
|
-
if (!convertedPath) {
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
const exec = util.promisify(child.exec);
|
|
301
|
-
const { stdout, stderr } = await exec(`SFDX_JSON_TO_STDOUT=true sfdx isvte:mdscan -s ZeroInventory,Enablement,Alerts,Warnings --minapi ${this.minapi} --json -d ${convertedPath}`);
|
|
302
|
-
if (stderr) {
|
|
303
|
-
console.log('stderr:', stderr);
|
|
304
|
-
}
|
|
305
|
-
if (stdout) {
|
|
306
|
-
const obj = JSON.parse(stdout);
|
|
307
|
-
if (obj.status == 0 && obj.result.CodeQualityNotes) {
|
|
308
|
-
for (const o of obj.result.CodeQualityNotes) {
|
|
309
|
-
if (!this.allowedISVTEViolations.some(substring => o.message.includes(substring) || o.label.includes(substring))) {
|
|
310
|
-
o.message = o.message.replace('the minimum specified. Use the --minapi flag to adjust the minimum API version.', this.minapi);
|
|
311
|
-
o.category = 'ISVTE';
|
|
312
|
-
o.level = 'FATAL';
|
|
313
|
-
if (o && o.exceptions && o.exceptions.length > 0) {
|
|
314
|
-
this.violations.push(o);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
catch (e) {
|
|
322
|
-
console.error(e); // should contain code (exit code) and signal (that caused the termination).
|
|
323
|
-
throw new Error(e);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* print output
|
|
328
|
-
*/
|
|
329
|
-
printViolations(option) {
|
|
330
|
-
if (option && option == 'json') {
|
|
331
|
-
console.log(JSON.stringify(this.violations, null, 4));
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
for (const o of this.violations) {
|
|
335
|
-
console.log('---------------------------------------------------------------------------------');
|
|
336
|
-
console.log(o.category + ' - ' + o.level);
|
|
337
|
-
console.log(o.label + ' - ' + o.message);
|
|
338
|
-
console.table(o.exceptions);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
247
|
}
|
|
343
|
-
exports.default =
|
|
344
|
-
|
|
345
|
-
Scan.examples = [`Scan a package and provide inventory of metadata items :\t$sfdx tffa:scan`];
|
|
346
|
-
Scan.flagsConfig = {
|
|
347
|
-
sourcefolder: command_1.flags.directory({
|
|
348
|
-
char: 's',
|
|
349
|
-
description: 'directory containing package metadata',
|
|
350
|
-
default: '.'
|
|
351
|
-
}),
|
|
352
|
-
mdoutfolder: command_1.flags.directory({
|
|
353
|
-
char: 'm',
|
|
354
|
-
description: 'directory containing mdapi src metadata',
|
|
355
|
-
default: '.'
|
|
356
|
-
}),
|
|
357
|
-
format: command_1.flags.string({
|
|
358
|
-
char: 'f',
|
|
359
|
-
description: 'generate json output'
|
|
360
|
-
})
|
|
361
|
-
};
|
|
362
|
-
//# sourceMappingURL=scan.js.map
|
|
248
|
+
exports.default = ApexClassScan;
|
|
249
|
+
//# sourceMappingURL=apex-class-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apex-class-scan.js","sourceRoot":"","sources":["../../src/scanner/apex-class-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export default class MetadataScan {
|
|
2
|
+
violations: unknown[];
|
|
3
|
+
scan(sourceFolder: string, minapi: number): Promise<unknown[]>;
|
|
4
|
+
/**
|
|
5
|
+
* scan json files
|
|
6
|
+
*/
|
|
7
|
+
private scanJSONFiles;
|
|
8
|
+
/**
|
|
9
|
+
* parse objects
|
|
10
|
+
* @param {*} objpath
|
|
11
|
+
* @param {*} clientname
|
|
12
|
+
*/
|
|
13
|
+
private scanObjects;
|
|
14
|
+
private scanAPIVersion;
|
|
15
|
+
private scanAPIVersionByType;
|
|
16
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Copyright (c) NCR Terafina
|
|
5
|
+
**/
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const xml2js = require("xml2js");
|
|
8
|
+
class MetadataScan {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.violations = [];
|
|
11
|
+
}
|
|
12
|
+
async scan(sourceFolder, minapi) {
|
|
13
|
+
await this.scanJSONFiles(sourceFolder, minapi);
|
|
14
|
+
await this.scanObjects(sourceFolder);
|
|
15
|
+
await this.scanAPIVersion(sourceFolder, minapi);
|
|
16
|
+
return this.violations;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* scan json files
|
|
20
|
+
*/
|
|
21
|
+
async scanJSONFiles(path, minapi) {
|
|
22
|
+
const fileContent = fs_1.readFileSync(path + '/sfdx-project.json');
|
|
23
|
+
const obj = JSON.parse(fileContent.toString());
|
|
24
|
+
if (minapi > parseInt(obj['sourceApiVersion'])) {
|
|
25
|
+
// console.log(obj["sourceApiVersion"]);
|
|
26
|
+
const o = {
|
|
27
|
+
label: 'Project source api version not equal to ' + minapi,
|
|
28
|
+
message: 'Please update sourceApiVersion to ' + minapi + ' sfdx-project.json',
|
|
29
|
+
category: 'API',
|
|
30
|
+
level: 'FATAL',
|
|
31
|
+
exceptions: [{ 0: 'sfdx-project.json' }]
|
|
32
|
+
};
|
|
33
|
+
this.violations.push(o);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* parse objects
|
|
38
|
+
* @param {*} objpath
|
|
39
|
+
* @param {*} clientname
|
|
40
|
+
*/
|
|
41
|
+
scanObjects(sourceFolder) {
|
|
42
|
+
const path = sourceFolder + '/app/main/default/objects';
|
|
43
|
+
let tables = [];
|
|
44
|
+
const tabViolations = [];
|
|
45
|
+
const fieldViolations = [];
|
|
46
|
+
try {
|
|
47
|
+
tables = fs_1.readdirSync(path);
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
for (const t of tables) {
|
|
53
|
+
const tabname = t;
|
|
54
|
+
const objFile = path + '/' + t + '/' + t + '.object-meta.xml';
|
|
55
|
+
const fieldPath = path + '/' + t + '/' + 'fields';
|
|
56
|
+
try {
|
|
57
|
+
fs_1.readdirSync(fieldPath);
|
|
58
|
+
}
|
|
59
|
+
catch (_a) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
if (!tabname.startsWith('tffa__')) {
|
|
64
|
+
if (!fs_1.existsSync(objFile)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const xml = fs_1.readFileSync(objFile);
|
|
68
|
+
let json;
|
|
69
|
+
xml2js.parseString(xml, { async: false, explicitArray: false }, (_err, result) => {
|
|
70
|
+
json = result;
|
|
71
|
+
if (!json.CustomObject.description) {
|
|
72
|
+
tabViolations.push(tabname);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
console.error(err);
|
|
79
|
+
}
|
|
80
|
+
const fields = fs_1.readdirSync(fieldPath);
|
|
81
|
+
for (const f of fields) {
|
|
82
|
+
const fieldFile = fieldPath + '/' + f;
|
|
83
|
+
if (f.startsWith('tffa__')) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const fieldname = f.split('.')[0];
|
|
87
|
+
const xml = fs_1.readFileSync(fieldFile);
|
|
88
|
+
try {
|
|
89
|
+
xml2js.parseString(xml, { async: false, explicitArray: false }, (_err, result) => {
|
|
90
|
+
if (_err) {
|
|
91
|
+
console.log(t + ':' + fieldname + ':' + _err);
|
|
92
|
+
}
|
|
93
|
+
else if (result) {
|
|
94
|
+
const json = result;
|
|
95
|
+
if (!json.CustomField.description) {
|
|
96
|
+
fieldViolations.push(tabname + '.' + fieldname);
|
|
97
|
+
}
|
|
98
|
+
// let violating = false;
|
|
99
|
+
// if (t.startsWith('tffa__') && !fieldname.startsWith('CZ')) {
|
|
100
|
+
// violating = true;
|
|
101
|
+
// }
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
console.log('table:' + t + ' field:' + f);
|
|
107
|
+
console.log(err);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (tabViolations.length > 0) {
|
|
112
|
+
const o = {
|
|
113
|
+
label: 'Custom Objects should have a description',
|
|
114
|
+
message: `It is a best practice that Custom Objects have a description.`,
|
|
115
|
+
exceptions: tabViolations,
|
|
116
|
+
category: 'INTERNAL',
|
|
117
|
+
level: 'FATAL'
|
|
118
|
+
};
|
|
119
|
+
this.violations.push(o);
|
|
120
|
+
}
|
|
121
|
+
if (fieldViolations.length > 0) {
|
|
122
|
+
const o = {
|
|
123
|
+
label: 'Custom Fields should have a description',
|
|
124
|
+
message: `It is a best practice that Custom Fields have a description.`,
|
|
125
|
+
exceptions: fieldViolations,
|
|
126
|
+
category: 'INTERNAL',
|
|
127
|
+
level: 'FATAL'
|
|
128
|
+
};
|
|
129
|
+
this.violations.push(o);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// label: 'Using old Metadata API Version',
|
|
133
|
+
// message: `You appear to be using a version of Metadata API less than the minimum specified. Use the --minapi flag to adjust the minimum API version.`,
|
|
134
|
+
async scanAPIVersion(sourceFolder, minapi) {
|
|
135
|
+
await this.scanAPIVersionByType('ApexClass', sourceFolder + '/app/main/default/classes', minapi);
|
|
136
|
+
await this.scanAPIVersionByType('ApexClass', sourceFolder + '/app/test/default/classes', minapi);
|
|
137
|
+
await this.scanAPIVersionByType('ApexTrigger', sourceFolder + '/app/main/default/triggers', minapi);
|
|
138
|
+
await this.scanAPIVersionByType('ApexPage', sourceFolder + '/app/main/default/pages', minapi);
|
|
139
|
+
}
|
|
140
|
+
scanAPIVersionByType(type, sourceFolder, minapi) {
|
|
141
|
+
const apiViolations = [];
|
|
142
|
+
const files = fs_1.readdirSync(sourceFolder);
|
|
143
|
+
for (const f of files) {
|
|
144
|
+
if (f.endsWith('-meta.xml')) {
|
|
145
|
+
const metaFile = sourceFolder + '/' + f;
|
|
146
|
+
const xml = fs_1.readFileSync(metaFile);
|
|
147
|
+
xml2js.parseString(xml, { async: false, explicitArray: false }, (_err, result) => {
|
|
148
|
+
if (_err) {
|
|
149
|
+
console.log(f + ':' + _err);
|
|
150
|
+
}
|
|
151
|
+
else if (result) {
|
|
152
|
+
const json = result;
|
|
153
|
+
if (minapi > parseInt(json[type].apiVersion)) {
|
|
154
|
+
apiViolations.push(f);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (apiViolations.length > 0) {
|
|
161
|
+
const o = {
|
|
162
|
+
label: 'Using old Metadata API Version',
|
|
163
|
+
message: `You appear to be using a version of Metadata API less than the minimum specified. Use the ` + minapi,
|
|
164
|
+
exceptions: apiViolations,
|
|
165
|
+
category: 'API',
|
|
166
|
+
level: 'FATAL'
|
|
167
|
+
};
|
|
168
|
+
this.violations.push(o);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.default = MetadataScan;
|
|
173
|
+
//# sourceMappingURL=metadata-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-scan.js","sourceRoot":"","sources":["../../src/scanner/metadata-scan.ts"],"names":[],"mappings":"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"}
|
package/oclif.manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"1.0.
|
|
1
|
+
{"version":"1.0.4","commands":{"tffa:apexdoc":{"id":"tffa:apexdoc","description":"Generate Apex API Documentation","usage":"<%= command.id %> [-d <directory>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["Generate Apex API Documentation :\t$sfdx tffa:apexdoc "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"d","description":"directory containing package metadata","default":"."}},"args":[]},"tffa:lint":{"id":"tffa:lint","description":"scan a package and provide recommendations based on package","usage":"<%= command.id %> [-s <directory>] [-m <integer>] [-j] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["Scan a package and provide list of code violations :\t$sfdx tffa:scan"],"flags":{"json":{"name":"json","type":"boolean","char":"j","description":"generate json output","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","default":"."},"minapi":{"name":"minapi","type":"option","char":"m","description":"minimum api version to use during quality checks","default":53}},"args":[]},"tffa:ping":{"id":"tffa:ping","description":"ping","usage":"<%= command.id %> [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["$ sfdx tffa:ping "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"}},"args":[{"name":"file"}]}}}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@terafina/tffa-sfdx-plugin",
|
|
3
3
|
"description": "sfdx plugin from Terafina containing tools for scanning and extending digital applications for the financial services industry.",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.4",
|
|
5
5
|
"author": "Terafina Inc",
|
|
6
6
|
"bugs": "https://github.com/terafinainc/tffa-sfdx-plugin/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
"fs-extra": "9.1.0",
|
|
17
17
|
"xml2js": "^0.4.19",
|
|
18
18
|
"cheerio": "1.0.0-rc.10",
|
|
19
|
-
"lodash.escape": "4.0.1"
|
|
19
|
+
"lodash.escape": "4.0.1",
|
|
20
|
+
"pretty": "^2.0.0",
|
|
21
|
+
"rimraf": "^2.6.3"
|
|
20
22
|
},
|
|
21
23
|
"devDependencies": {
|
|
22
24
|
"@commitlint/cli": "11.0.0",
|
|
@@ -41,13 +43,11 @@
|
|
|
41
43
|
"nyc": "^15.0.0",
|
|
42
44
|
"prettier": "2.2.1",
|
|
43
45
|
"prettier-plugin-apex": "1.7.0",
|
|
44
|
-
"pretty": "2.0.0",
|
|
45
46
|
"properties-parser": "0.3.1",
|
|
46
47
|
"properties-reader": "2.1.1",
|
|
47
48
|
"replace-in-file": "6.1.0",
|
|
48
49
|
"standard-version": "9.0.0",
|
|
49
50
|
"ts-node": "^8",
|
|
50
|
-
"tslint": "^5",
|
|
51
51
|
"typescript": "4.1",
|
|
52
52
|
"yargs": "16.2.0",
|
|
53
53
|
"@typescript-eslint/eslint-plugin": "5.20.0",
|
|
@@ -93,12 +93,12 @@
|
|
|
93
93
|
"scripts": {
|
|
94
94
|
"lint": "eslint --fix --ext .ts src ",
|
|
95
95
|
"postpack": "rm -f oclif.manifest.json",
|
|
96
|
-
"posttest": "tslint -p test -t stylish",
|
|
97
96
|
"prepack": "rm -rf lib && tsc -b && oclif-dev manifest && oclif-dev readme",
|
|
98
97
|
"test": "nyc --extension .ts mocha --forbid-only \"test/**/*.test.ts\"",
|
|
99
98
|
"version": "oclif-dev readme && git add README.md",
|
|
100
|
-
"publish": "git push --follow-tags origin develop && npm publish terafina-tffa-sfdx-plugin-$npm_package_version.tgz",
|
|
101
|
-
"publish_rc": "git push --follow-tags origin develop && npm publish --tag next terafina-tffa-sfdx-plugin-$npm_package_version.tgz",
|
|
99
|
+
"publish": "git push --follow-tags origin develop && npm run package && npm publish terafina-tffa-sfdx-plugin-$npm_package_version.tgz",
|
|
100
|
+
"publish_rc": "git push --follow-tags origin develop && npm run package && npm publish --tag next terafina-tffa-sfdx-plugin-$npm_package_version.tgz",
|
|
101
|
+
"package": "npm pack ",
|
|
102
102
|
"release": "standard-version --commit-all",
|
|
103
103
|
"release_rc": "npm run release -- --prerelease rc",
|
|
104
104
|
"release_patch": "npm run release -- --release-as patch",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/commands/tffa/scan.ts"],"names":[],"mappings":"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"}
|