apex-code-coverage-transformer 2.21.0 → 2.22.1
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 +15 -0
- package/README.md +45 -18
- 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/handlers/BaseHandler.js +4 -3
- package/lib/handlers/BaseHandler.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/globMatcher.d.ts +3 -0
- package/lib/utils/globMatcher.js +57 -0
- package/lib/utils/globMatcher.js.map +1 -0
- package/lib/utils/types.d.ts +4 -0
- package/messages/transformer.transform.md +4 -0
- package/oclif.manifest.json +10 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@
|
|
|
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.1](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.22.0...v2.22.1) (2026-06-15)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **deps:** replace minimatch with in-house glob matcher ([#312](https://github.com/mcarvin8/apex-code-coverage-transformer/issues/312)) ([c1ec8c8](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/c1ec8c81673f47bf22f2cbe68294ce75a59d0873))
|
|
14
|
+
|
|
15
|
+
## [2.22.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.21.0...v2.22.0) (2026-06-12)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* 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))
|
|
21
|
+
* 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))
|
|
22
|
+
|
|
8
23
|
## [2.21.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.20.0...v2.21.0) (2026-06-02)
|
|
9
24
|
|
|
10
25
|
|
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.
|
|
@@ -152,18 +154,34 @@ Use `-f` / `--format` to choose the output format. Multiple `-f` values produce
|
|
|
152
154
|
|
|
153
155
|
### Shared setup (GitHub Actions)
|
|
154
156
|
|
|
155
|
-
All GitHub Actions examples below assume these steps run first:
|
|
157
|
+
All GitHub Actions examples below assume these steps run first for deployments (update `sf project deploy start` command to `sf apex run test` to invoke tests directly in an org):
|
|
156
158
|
|
|
157
159
|
```yaml
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
-
|
|
166
|
-
|
|
160
|
+
jobs:
|
|
161
|
+
deploy:
|
|
162
|
+
runs-on: ubuntu-latest
|
|
163
|
+
steps:
|
|
164
|
+
- name: Checkout
|
|
165
|
+
uses: actions/checkout@v4
|
|
166
|
+
with:
|
|
167
|
+
fetch-depth: 0
|
|
168
|
+
|
|
169
|
+
- name: Set up Node.js
|
|
170
|
+
uses: actions/setup-node@v4
|
|
171
|
+
with:
|
|
172
|
+
node-version: '20'
|
|
173
|
+
|
|
174
|
+
- name: Install Salesforce CLI
|
|
175
|
+
run: npm install -g @salesforce/cli@latest
|
|
176
|
+
|
|
177
|
+
- name: Install Apex Code Coverage Transformer plugin
|
|
178
|
+
run: echo y | sf plugins install apex-code-coverage-transformer
|
|
179
|
+
|
|
180
|
+
- name: Authenticate to Salesforce
|
|
181
|
+
run: sf org login sfdx-url --sfdx-url-file ${{ secrets.SFDX_AUTH_URL }} --alias ci-org
|
|
182
|
+
|
|
183
|
+
- name: Deploy with Apex Tests
|
|
184
|
+
run: sf project deploy start --test-level RunLocalTests --coverage-formatters json --results-dir "coverage"
|
|
167
185
|
```
|
|
168
186
|
|
|
169
187
|
### Codecov
|
|
@@ -295,13 +313,16 @@ Create `.apexcodecovtransformer.config.json` in the project root to transform co
|
|
|
295
313
|
|
|
296
314
|
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
315
|
|
|
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.
|
|
316
|
+
| Key | Required | Description |
|
|
317
|
+
| -------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
318
|
+
| `deployCoverageJsonPath` | For deploy | Path to deploy coverage JSON. |
|
|
319
|
+
| `testCoverageJsonPath` | For test | Path to test coverage JSON. |
|
|
320
|
+
| `outputReportPath` | No | Output path (default: `coverage.[xml/info/json]` by format). |
|
|
321
|
+
| `format` | No | Format(s), comma-separated (default: `sonar`). |
|
|
322
|
+
| `ignorePackageDirectories` | No | Comma-separated package directories to ignore. |
|
|
323
|
+
| `minCoverage` | No | Minimum required line coverage percentage (0–100). Exits with an error if overall coverage is below this threshold. |
|
|
324
|
+
| `maxAnnotations` | No | Maximum `::warning` annotations emitted when `format` includes `github-actions` (default: `50`). |
|
|
325
|
+
| `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
326
|
|
|
306
327
|
## Troubleshooting
|
|
307
328
|
|
|
@@ -359,6 +380,12 @@ Remapping out-of-range covered line 512 to line 47 in force-app/main/default/cla
|
|
|
359
380
|
|
|
360
381
|
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
382
|
|
|
383
|
+
```bash
|
|
384
|
+
$ SF_LOG_LEVEL=debug DEBUG=sf:setCoveredLines sf acc-transformer transform -j "coverage/coverage/coverage.json" -r "coverage.xml" -f "sonar"
|
|
385
|
+
The coverage report has been written to: coverage.xml
|
|
386
|
+
[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)
|
|
387
|
+
```
|
|
388
|
+
|
|
362
389
|
## License
|
|
363
390
|
|
|
364
391
|
[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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"}
|
|
@@ -27,10 +27,11 @@ export class BaseHandler {
|
|
|
27
27
|
*/
|
|
28
28
|
// eslint-disable-next-line class-methods-use-this
|
|
29
29
|
extractLinesByStatus(lines, covered) {
|
|
30
|
-
|
|
30
|
+
const filtered = Object.entries(lines)
|
|
31
31
|
.filter(([, hits]) => (covered ? hits > 0 : hits === 0))
|
|
32
|
-
.map(([line]) => Number(line))
|
|
33
|
-
|
|
32
|
+
.map(([line]) => Number(line));
|
|
33
|
+
// Stryker disable next-line MethodExpression,ArithmeticOperator -- equivalent mutants: Object.entries already returns integer keys ascending; a+b never negative so insertion sort never swaps
|
|
34
|
+
return filtered.sort((a, b) => a - b);
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* Get covered and uncovered line numbers from a lines record.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseHandler.js","sourceRoot":"","sources":["../../src/handlers/BaseHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAkBb;;;GAGG;AACH,MAAM,OAAgB,WAAW;IAC/B;;;;;OAKG;IACH,kDAAkD;IACxC,iBAAiB,CAAC,KAA6B;QAMvD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAChF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5E,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;QACjD,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED;;;;;;OAMG;IACH,kDAAkD;IACxC,oBAAoB,CAAC,KAA6B,EAAE,OAAgB;QAC5E,
|
|
1
|
+
{"version":3,"file":"BaseHandler.js","sourceRoot":"","sources":["../../src/handlers/BaseHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAkBb;;;GAGG;AACH,MAAM,OAAgB,WAAW;IAC/B;;;;;OAKG;IACH,kDAAkD;IACxC,iBAAiB,CAAC,KAA6B;QAMvD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAChF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5E,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;QACjD,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED;;;;;;OAMG;IACH,kDAAkD;IACxC,oBAAoB,CAAC,KAA6B,EAAE,OAAgB;QAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;aACvD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,+LAA+L;QAC/L,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACO,sBAAsB,CAAC,KAA6B;QAI5D,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;YAC/C,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;SACnD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,kDAAkD;IACxC,UAAU,CAAyE,KAAU;QACrG,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;CAsBF"}
|
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 { matchesGlob } from '../utils/globMatcher.js';
|
|
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) => matchesGlob(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) => matchesGlob(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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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { basename } from 'node:path';
|
|
2
|
+
function parseCharClass(pattern, start) {
|
|
3
|
+
let j = start + 1;
|
|
4
|
+
let cls = '[';
|
|
5
|
+
// Stryker disable next-line ConditionalExpression,EqualityOperator -- equivalent mutant: undefined !== '!' so bounds check is undetectable via char comparison
|
|
6
|
+
if (j < pattern.length && pattern[j] === '!') {
|
|
7
|
+
cls += '^';
|
|
8
|
+
j++;
|
|
9
|
+
}
|
|
10
|
+
// Stryker disable next-line ConditionalExpression,EqualityOperator -- equivalent mutant: undefined !== ']' so bounds check is undetectable via char comparison
|
|
11
|
+
if (j < pattern.length && pattern[j] === ']') {
|
|
12
|
+
cls += '\\]';
|
|
13
|
+
j++;
|
|
14
|
+
}
|
|
15
|
+
// Stryker disable next-line EqualityOperator -- equivalent mutant: extra iteration appends undefined to cls but unmatched-[ path still returns \\[
|
|
16
|
+
while (j < pattern.length && pattern[j] !== ']') {
|
|
17
|
+
cls += pattern[j++];
|
|
18
|
+
}
|
|
19
|
+
if (j < pattern.length) {
|
|
20
|
+
return { fragment: cls + ']', advance: j + 1 - start };
|
|
21
|
+
}
|
|
22
|
+
// unmatched '[', treat as literal
|
|
23
|
+
return { fragment: '\\[', advance: 1 };
|
|
24
|
+
}
|
|
25
|
+
function parseDoubleStar(pattern, i) {
|
|
26
|
+
if (pattern[i + 2] === '/') {
|
|
27
|
+
return { fragment: '(.*\\/)?', advance: 3 };
|
|
28
|
+
}
|
|
29
|
+
return { fragment: '.*', advance: 2 };
|
|
30
|
+
}
|
|
31
|
+
function nextToken(pattern, i) {
|
|
32
|
+
const c = pattern[i];
|
|
33
|
+
if (c === '*' && pattern[i + 1] === '*')
|
|
34
|
+
return parseDoubleStar(pattern, i);
|
|
35
|
+
if (c === '*')
|
|
36
|
+
return { fragment: '[^/]*', advance: 1 };
|
|
37
|
+
if (c === '?')
|
|
38
|
+
return { fragment: '[^/]', advance: 1 };
|
|
39
|
+
if (c === '[')
|
|
40
|
+
return parseCharClass(pattern, i);
|
|
41
|
+
return { fragment: c.replace(/[.+^${}()|\\]/g, '\\$&'), advance: 1 };
|
|
42
|
+
}
|
|
43
|
+
function globToRegex(pattern) {
|
|
44
|
+
let re = '';
|
|
45
|
+
let i = 0;
|
|
46
|
+
while (i < pattern.length) {
|
|
47
|
+
const { fragment, advance } = nextToken(pattern, i);
|
|
48
|
+
re += fragment;
|
|
49
|
+
i += advance;
|
|
50
|
+
}
|
|
51
|
+
return new RegExp('^' + re + '$');
|
|
52
|
+
}
|
|
53
|
+
export function matchesGlob(filePath, pattern, options) {
|
|
54
|
+
const subject = options?.matchBase && !pattern.includes('/') ? basename(filePath) : filePath;
|
|
55
|
+
return globToRegex(pattern).test(subject);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=globMatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globMatcher.js","sourceRoot":"","sources":["../../src/utils/globMatcher.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.1"
|
|
125
134
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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.1",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@oclif/core": "4.8.3",
|
|
7
7
|
"@salesforce/core": "8.26.3",
|
|
@@ -100,6 +100,7 @@
|
|
|
100
100
|
"prepack": "wireit",
|
|
101
101
|
"prepare": "husky install",
|
|
102
102
|
"test": "wireit",
|
|
103
|
+
"test:compile": "wireit",
|
|
103
104
|
"test:mutation": "stryker run",
|
|
104
105
|
"test:mutation:incremental": "node scripts/incremental-mutation.mjs",
|
|
105
106
|
"test:nuts": "oclif manifest && vitest run --config ./vitest.nut.config.ts",
|