apex-code-coverage-transformer 2.21.0 → 2.22.0
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/CHANGELOG.md +8 -0
- package/README.md +19 -8
- package/lib/commands/acc-transformer/transform.d.ts +1 -0
- package/lib/commands/acc-transformer/transform.js +7 -0
- package/lib/commands/acc-transformer/transform.js.map +1 -1
- package/lib/hooks/finally.js +31 -32
- package/lib/hooks/finally.js.map +1 -1
- package/lib/transformers/coverageTransformer.d.ts +1 -0
- package/lib/transformers/coverageTransformer.js +8 -0
- package/lib/transformers/coverageTransformer.js.map +1 -1
- package/lib/utils/types.d.ts +4 -0
- package/messages/transformer.transform.md +4 -0
- package/oclif.manifest.json +10 -1
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## [2.22.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.21.0...v2.22.0) (2026-06-12)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* add --exclude-pattern flag to filter files from coverage report ([#304](https://github.com/mcarvin8/apex-code-coverage-transformer/issues/304)) ([559c29e](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/559c29ea007752a49f51b0e2c1933d732991fb46))
|
|
14
|
+
* expose min-coverage and max-annotations in hook config ([#302](https://github.com/mcarvin8/apex-code-coverage-transformer/issues/302)) ([310de46](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/310de46343ca50ced5e39e250fc3014be0ed4c9c))
|
|
15
|
+
|
|
8
16
|
## [2.21.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.20.0...v2.21.0) (2026-06-02)
|
|
9
17
|
|
|
10
18
|
|
package/README.md
CHANGED
|
@@ -111,7 +111,7 @@ Works with [sfdx-hardis](https://github.com/hardisgroupcom/sfdx-hardis):
|
|
|
111
111
|
|
|
112
112
|
```
|
|
113
113
|
USAGE
|
|
114
|
-
$ sf acc-transformer transform -j <value> [-r <value>] [-f <value>] [-i <value>]
|
|
114
|
+
$ sf acc-transformer transform -j <value> [-r <value>] [-f <value>] [-i <value>] [-e <value>]
|
|
115
115
|
[--min-coverage <value>] [--max-annotations <value>] [--json]
|
|
116
116
|
|
|
117
117
|
FLAGS
|
|
@@ -120,6 +120,8 @@ FLAGS
|
|
|
120
120
|
-f, --format=<value> Output format (repeat for multiple). Default: sonar.
|
|
121
121
|
Multiple formats append to filename, e.g. coverage-sonar.xml.
|
|
122
122
|
-i, --ignore-package-directory=<value> Package directory to ignore (as in sfdx-project.json). Repeatable.
|
|
123
|
+
-e, --exclude-pattern=<value> Glob pattern for file paths to exclude from the report. Matched against
|
|
124
|
+
the relative path from the repo root. Repeatable.
|
|
123
125
|
--min-coverage=<value> Minimum required line coverage percentage (0–100). Exits with an error
|
|
124
126
|
if overall coverage is below this value. Reports are written first.
|
|
125
127
|
--max-annotations=<value> Maximum ::warning annotations emitted by --format github-actions.
|
|
@@ -295,13 +297,16 @@ Create `.apexcodecovtransformer.config.json` in the project root to transform co
|
|
|
295
297
|
|
|
296
298
|
Sample configs: [Salesforce CLI](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/defaults/salesforce-cli/.apexcodecovtransformer.config.json), [SFDX Hardis](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/defaults/sfdx-hardis/.apexcodecovtransformer.config.json).
|
|
297
299
|
|
|
298
|
-
| Key | Required | Description
|
|
299
|
-
| -------------------------- | ---------- |
|
|
300
|
-
| `deployCoverageJsonPath` | For deploy | Path to deploy coverage JSON.
|
|
301
|
-
| `testCoverageJsonPath` | For test | Path to test coverage JSON.
|
|
302
|
-
| `outputReportPath` | No | Output path (default: `coverage.[xml/info/json]` by format).
|
|
303
|
-
| `format` | No | Format(s), comma-separated (default: `sonar`).
|
|
304
|
-
| `ignorePackageDirectories` | No | Comma-separated package directories to ignore.
|
|
300
|
+
| Key | Required | Description |
|
|
301
|
+
| -------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
302
|
+
| `deployCoverageJsonPath` | For deploy | Path to deploy coverage JSON. |
|
|
303
|
+
| `testCoverageJsonPath` | For test | Path to test coverage JSON. |
|
|
304
|
+
| `outputReportPath` | No | Output path (default: `coverage.[xml/info/json]` by format). |
|
|
305
|
+
| `format` | No | Format(s), comma-separated (default: `sonar`). |
|
|
306
|
+
| `ignorePackageDirectories` | No | Comma-separated package directories to ignore. |
|
|
307
|
+
| `minCoverage` | No | Minimum required line coverage percentage (0–100). Exits with an error if overall coverage is below this threshold. |
|
|
308
|
+
| `maxAnnotations` | No | Maximum `::warning` annotations emitted when `format` includes `github-actions` (default: `50`). |
|
|
309
|
+
| `excludePatterns` | No | Comma-separated glob patterns for file paths to exclude (e.g. `**/*Test*,**/mock/**`). Matched against the relative path from the repo root. |
|
|
305
310
|
|
|
306
311
|
## Troubleshooting
|
|
307
312
|
|
|
@@ -359,6 +364,12 @@ Remapping out-of-range covered line 512 to line 47 in force-app/main/default/cla
|
|
|
359
364
|
|
|
360
365
|
Logs are written to `~/.sf/sf-YYYY-MM-DD.log` by default. To print them to the terminal as well, set `DEBUG=sf:setCoveredLines`.
|
|
361
366
|
|
|
367
|
+
```bash
|
|
368
|
+
$ SF_LOG_LEVEL=debug DEBUG=sf:setCoveredLines sf acc-transformer transform -j "coverage/coverage/coverage.json" -r "coverage.xml" -f "sonar"
|
|
369
|
+
The coverage report has been written to: coverage.xml
|
|
370
|
+
[16:10:20.826] DEBUG (sf:setCoveredLines): Remapping out-of-range covered line 190 to line 1 in force-app/main/default/triggers/AccountTrigger.trigger (file has 105 lines)
|
|
371
|
+
```
|
|
372
|
+
|
|
362
373
|
## License
|
|
363
374
|
|
|
364
375
|
[MIT](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/LICENSE.md)
|
|
@@ -11,6 +11,7 @@ export default class TransformerTransform extends SfCommand<TransformerTransform
|
|
|
11
11
|
'ignore-package-directory': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
'min-coverage': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
'max-annotations': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'exclude-pattern': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
15
|
};
|
|
15
16
|
run(): Promise<TransformerTransformResult>;
|
|
16
17
|
}
|
|
@@ -48,6 +48,12 @@ export default class TransformerTransform extends SfCommand {
|
|
|
48
48
|
min: 1,
|
|
49
49
|
default: DEFAULT_MAX_ANNOTATIONS,
|
|
50
50
|
}),
|
|
51
|
+
'exclude-pattern': Flags.string({
|
|
52
|
+
summary: messages.getMessage('flags.exclude-pattern.summary'),
|
|
53
|
+
char: 'e',
|
|
54
|
+
required: false,
|
|
55
|
+
multiple: true,
|
|
56
|
+
}),
|
|
51
57
|
};
|
|
52
58
|
async run() {
|
|
53
59
|
const { flags } = await this.parse(TransformerTransform);
|
|
@@ -55,6 +61,7 @@ export default class TransformerTransform extends SfCommand {
|
|
|
55
61
|
const result = await transformCoverageReport(flags['coverage-json'], flags['output-report'], flags['format'] ?? ['sonar'], flags['ignore-package-directory'] ?? [], {
|
|
56
62
|
minCoverage: flags['min-coverage'],
|
|
57
63
|
maxAnnotations: flags['max-annotations'],
|
|
64
|
+
excludePatterns: flags['exclude-pattern'],
|
|
58
65
|
});
|
|
59
66
|
warnings.push(...result.warnings);
|
|
60
67
|
this.log(`The coverage report has been written to: ${result.finalPaths.join(', ')}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/commands/acc-transformer/transform.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AAEjG,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,gCAAgC,EAAE,uBAAuB,CAAC,CAAC;AAElG,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,SAAqC;IAC9E,MAAM,CAAmB,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,CAAmB,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1E,MAAM,CAAmB,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAErE,MAAM,CAAmB,KAAK,GAAG;QACtC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,6BAA6B,CAAC;YAC3D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,6BAA6B,CAAC;YAC3D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,cAAc;SACxB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACpD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,aAAa;SACvB,CAAC;QACF,0BAA0B,EAAE,KAAK,CAAC,SAAS,CAAC;YAC1C,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,wCAAwC,CAAC;YACtE,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,0DAA0D;QAC1D,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;YAC5B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,4BAA4B,CAAC;YAC1D,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,GAAG;SACT,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,+BAA+B,CAAC;YAC7D,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,uBAAuB;SACjC,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,KAAK,CAAC,eAAe,CAAC,EACtB,KAAK,CAAC,eAAe,CAAC,EACtB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5B,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE,EACvC;YACE,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;YAClC,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/commands/acc-transformer/transform.ts"],"names":[],"mappings":"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"}
|
package/lib/hooks/finally.js
CHANGED
|
@@ -4,10 +4,37 @@ import { readFile } from 'node:fs/promises';
|
|
|
4
4
|
import { resolve } from 'node:path';
|
|
5
5
|
import TransformerTransform from '../commands/acc-transformer/transform.js';
|
|
6
6
|
import { getRepoRoot } from '../utils/getRepoRoot.js';
|
|
7
|
+
function buildCommandArgs(coverageJsonPath, outputReportPath, configFile) {
|
|
8
|
+
const args = ['--coverage-json', coverageJsonPath, '--output-report', outputReportPath];
|
|
9
|
+
const coverageFormat = configFile.format || 'sonar';
|
|
10
|
+
if (coverageFormat.trim() !== '') {
|
|
11
|
+
for (const format of coverageFormat.split(',')) {
|
|
12
|
+
args.push('--format', format.replace(/,/g, ''));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const ignorePackageDirs = configFile.ignorePackageDirectories || '';
|
|
16
|
+
if (ignorePackageDirs.trim() !== '') {
|
|
17
|
+
for (const dir of ignorePackageDirs.split(',')) {
|
|
18
|
+
args.push('--ignore-package-directory', dir.replace(/,/g, ''));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (configFile.minCoverage !== undefined) {
|
|
22
|
+
args.push('--min-coverage', String(configFile.minCoverage));
|
|
23
|
+
}
|
|
24
|
+
if (configFile.maxAnnotations !== undefined) {
|
|
25
|
+
args.push('--max-annotations', String(configFile.maxAnnotations));
|
|
26
|
+
}
|
|
27
|
+
const excludePatterns = configFile.excludePatterns ?? '';
|
|
28
|
+
if (excludePatterns.trim() !== '') {
|
|
29
|
+
for (const pattern of excludePatterns.split(',')) {
|
|
30
|
+
args.push('--exclude-pattern', pattern.trim());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return args;
|
|
34
|
+
}
|
|
7
35
|
export const hook = async function (options) {
|
|
8
36
|
const commandId = options?.Command?.id ?? '';
|
|
9
37
|
let commandType;
|
|
10
|
-
let coverageJson;
|
|
11
38
|
if ([
|
|
12
39
|
'project:deploy:validate',
|
|
13
40
|
'project:deploy:start',
|
|
@@ -23,11 +50,11 @@ export const hook = async function (options) {
|
|
|
23
50
|
else {
|
|
24
51
|
return;
|
|
25
52
|
}
|
|
26
|
-
let configFile;
|
|
27
53
|
const { repoRoot } = await getRepoRoot();
|
|
28
54
|
if (!repoRoot) {
|
|
29
55
|
return;
|
|
30
56
|
}
|
|
57
|
+
let configFile;
|
|
31
58
|
const configPath = resolve(repoRoot, '.apexcodecovtransformer.config.json');
|
|
32
59
|
try {
|
|
33
60
|
const jsonString = await readFile(configPath, 'utf-8');
|
|
@@ -37,43 +64,15 @@ export const hook = async function (options) {
|
|
|
37
64
|
return;
|
|
38
65
|
}
|
|
39
66
|
const outputReport = configFile.outputReportPath || 'coverage.xml';
|
|
40
|
-
const
|
|
41
|
-
const ignorePackageDirs = configFile.ignorePackageDirectories || '';
|
|
42
|
-
if (commandType === 'deploy') {
|
|
43
|
-
coverageJson = configFile.deployCoverageJsonPath || '.';
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
coverageJson = configFile.testCoverageJsonPath || '.';
|
|
47
|
-
}
|
|
67
|
+
const coverageJson = commandType === 'deploy' ? configFile.deployCoverageJsonPath || '.' : configFile.testCoverageJsonPath || '.';
|
|
48
68
|
if (coverageJson.trim() === '.') {
|
|
49
69
|
return;
|
|
50
70
|
}
|
|
51
71
|
const coverageJsonPath = resolve(coverageJson);
|
|
52
|
-
const outputReportPath = resolve(outputReport);
|
|
53
72
|
if (!existsSync(coverageJsonPath)) {
|
|
54
73
|
return;
|
|
55
74
|
}
|
|
56
|
-
const commandArgs =
|
|
57
|
-
commandArgs.push('--coverage-json');
|
|
58
|
-
commandArgs.push(coverageJsonPath);
|
|
59
|
-
commandArgs.push('--output-report');
|
|
60
|
-
commandArgs.push(outputReportPath);
|
|
61
|
-
if (coverageFormat.trim() !== '') {
|
|
62
|
-
const formatArray = coverageFormat.split(',');
|
|
63
|
-
for (const format of formatArray) {
|
|
64
|
-
const sanitizedFormat = format.replace(/,/g, '');
|
|
65
|
-
commandArgs.push('--format');
|
|
66
|
-
commandArgs.push(sanitizedFormat);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (ignorePackageDirs.trim() !== '') {
|
|
70
|
-
const ignorePackageDirArray = ignorePackageDirs.split(',');
|
|
71
|
-
for (const dirs of ignorePackageDirArray) {
|
|
72
|
-
const sanitizedDir = dirs.replace(/,/g, '');
|
|
73
|
-
commandArgs.push('--ignore-package-directory');
|
|
74
|
-
commandArgs.push(sanitizedDir);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
75
|
+
const commandArgs = buildCommandArgs(coverageJsonPath, resolve(outputReport), configFile);
|
|
77
76
|
await TransformerTransform.run(commandArgs);
|
|
78
77
|
};
|
|
79
78
|
//# sourceMappingURL=finally.js.map
|
package/lib/hooks/finally.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finally.js","sourceRoot":"","sources":["../../src/hooks/finally.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,
|
|
1
|
+
{"version":3,"file":"finally.js","sourceRoot":"","sources":["../../src/hooks/finally.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type TransformOptions = {
|
|
2
2
|
minCoverage?: number;
|
|
3
3
|
maxAnnotations?: number;
|
|
4
|
+
excludePatterns?: string[];
|
|
4
5
|
};
|
|
5
6
|
export declare function transformCoverageReport(jsonFilePath: string, outputReportPath: string, formats: string[], ignoreDirs: string[], options?: TransformOptions): Promise<{
|
|
6
7
|
finalPaths: string[];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-await-in-loop */
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
+
import { minimatch } from 'minimatch';
|
|
4
5
|
import { getCoverageHandler } from '../handlers/getHandler.js';
|
|
5
6
|
import { getPackageDirectories } from '../utils/getPackageDirectories.js';
|
|
6
7
|
import { findFilePath } from '../utils/findFilePath.js';
|
|
@@ -32,6 +33,7 @@ export async function transformCoverageReport(jsonFilePath, outputReportPath, fo
|
|
|
32
33
|
concurrencyLimit,
|
|
33
34
|
warnings,
|
|
34
35
|
filePathCache,
|
|
36
|
+
excludePatterns: options?.excludePatterns ?? [],
|
|
35
37
|
};
|
|
36
38
|
let processResult;
|
|
37
39
|
if (commandType === 'DeployCoverageData') {
|
|
@@ -102,6 +104,9 @@ async function processDeployCoverage(data, context) {
|
|
|
102
104
|
context.warnings.push(`The file name ${formattedName} was not found in any package directory.`);
|
|
103
105
|
return;
|
|
104
106
|
}
|
|
107
|
+
if (context.excludePatterns.some((pattern) => minimatch(path, pattern, { matchBase: true }))) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
105
110
|
const setCoveredResult = await setCoveredLines(path, context.repoRoot, fileInfo.s, context.handlers.has('html'));
|
|
106
111
|
const updatedLines = hasSourceContent(setCoveredResult) ? setCoveredResult.updatedLines : setCoveredResult;
|
|
107
112
|
const sourceContent = hasSourceContent(setCoveredResult) ? setCoveredResult.sourceContent : undefined;
|
|
@@ -127,6 +132,9 @@ async function processTestCoverage(data, context) {
|
|
|
127
132
|
context.warnings.push(`The file name ${formattedName} was not found in any package directory.`);
|
|
128
133
|
return;
|
|
129
134
|
}
|
|
135
|
+
if (context.excludePatterns.some((pattern) => minimatch(path, pattern, { matchBase: true }))) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
130
138
|
const counts = countLines(entry.lines);
|
|
131
139
|
totalLines += counts.totalLines;
|
|
132
140
|
coveredLines += counts.coveredLines;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverageTransformer.js","sourceRoot":"","sources":["../../src/transformers/coverageTransformer.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAA8B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"coverageTransformer.js","sourceRoot":"","sources":["../../src/transformers/coverageTransformer.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/types.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ export type CoverageProcessingContext = {
|
|
|
42
42
|
concurrencyLimit: number;
|
|
43
43
|
warnings: string[];
|
|
44
44
|
filePathCache: Map<string, string>;
|
|
45
|
+
excludePatterns: string[];
|
|
45
46
|
};
|
|
46
47
|
type SonarLine = {
|
|
47
48
|
'@lineNumber': number;
|
|
@@ -63,6 +64,9 @@ export type HookFile = {
|
|
|
63
64
|
outputReportPath: string;
|
|
64
65
|
format: string;
|
|
65
66
|
ignorePackageDirectories: string;
|
|
67
|
+
minCoverage?: number;
|
|
68
|
+
maxAnnotations?: number;
|
|
69
|
+
excludePatterns?: string;
|
|
66
70
|
};
|
|
67
71
|
export type CoberturaLine = {
|
|
68
72
|
'@number': number;
|
|
@@ -39,3 +39,7 @@ Minimum required line coverage percentage (0–100). The command exits with an e
|
|
|
39
39
|
# flags.max-annotations.summary
|
|
40
40
|
|
|
41
41
|
Maximum number of GitHub Actions ::warning annotations to emit when using --format github-actions. Defaults to 50. Annotations beyond this limit are summarised in a ::notice line.
|
|
42
|
+
|
|
43
|
+
# flags.exclude-pattern.summary
|
|
44
|
+
|
|
45
|
+
Glob pattern for file paths to exclude from the coverage report. Matched against the relative path from the repo root (e.g. force-app/main/default/classes/MyClass.cls). Repeat the flag for multiple patterns.
|
package/oclif.manifest.json
CHANGED
|
@@ -96,6 +96,15 @@
|
|
|
96
96
|
"hasDynamicHelp": false,
|
|
97
97
|
"multiple": false,
|
|
98
98
|
"type": "option"
|
|
99
|
+
},
|
|
100
|
+
"exclude-pattern": {
|
|
101
|
+
"char": "e",
|
|
102
|
+
"name": "exclude-pattern",
|
|
103
|
+
"required": false,
|
|
104
|
+
"summary": "Glob pattern for file paths to exclude from the coverage report. Matched against the relative path from the repo root (e.g. force-app/main/default/classes/MyClass.cls). Repeat the flag for multiple patterns.",
|
|
105
|
+
"hasDynamicHelp": false,
|
|
106
|
+
"multiple": true,
|
|
107
|
+
"type": "option"
|
|
99
108
|
}
|
|
100
109
|
},
|
|
101
110
|
"hasDynamicHelp": false,
|
|
@@ -121,5 +130,5 @@
|
|
|
121
130
|
]
|
|
122
131
|
}
|
|
123
132
|
},
|
|
124
|
-
"version": "2.
|
|
133
|
+
"version": "2.22.0"
|
|
125
134
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apex-code-coverage-transformer",
|
|
3
3
|
"description": "Transform Salesforce Apex code coverage JSONs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.22.0",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@oclif/core": "4.8.3",
|
|
7
7
|
"@salesforce/core": "8.26.3",
|
|
8
8
|
"@salesforce/sf-plugins-core": "12.2.6",
|
|
9
|
-
"fast-xml-builder": "1.2.0"
|
|
9
|
+
"fast-xml-builder": "1.2.0",
|
|
10
|
+
"minimatch": "10.2.5"
|
|
10
11
|
},
|
|
11
12
|
"devDependencies": {
|
|
12
13
|
"@commitlint/cli": "19.8.1",
|
|
@@ -100,6 +101,7 @@
|
|
|
100
101
|
"prepack": "wireit",
|
|
101
102
|
"prepare": "husky install",
|
|
102
103
|
"test": "wireit",
|
|
104
|
+
"test:compile": "wireit",
|
|
103
105
|
"test:mutation": "stryker run",
|
|
104
106
|
"test:mutation:incremental": "node scripts/incremental-mutation.mjs",
|
|
105
107
|
"test:nuts": "oclif manifest && vitest run --config ./vitest.nut.config.ts",
|