apex-code-coverage-transformer 3.0.3 → 3.1.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 CHANGED
@@ -5,6 +5,20 @@
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
+ ## [3.1.1](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v3.1.0...v3.1.1) (2026-08-21)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **ci:** fix release tag order + catch up stale README ([#378](https://github.com/mcarvin8/apex-code-coverage-transformer/issues/378)) ([a48b4e1](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/a48b4e1462e7343d3b5a50dfda0cc4ab8ddac9a1))
14
+
15
+ ## [3.1.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v3.0.3...v3.1.0) (2026-08-21)
16
+
17
+
18
+ ### Features
19
+
20
+ * **action:** add native GitHub Action wrapper ([#376](https://github.com/mcarvin8/apex-code-coverage-transformer/issues/376)) ([83810f9](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/83810f92f29b5592c83ea3feaa63bf7c07f218dc))
21
+
8
22
  ## [3.0.3](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v3.0.2...v3.0.3) (2026-08-19)
9
23
 
10
24
 
package/README.md CHANGED
@@ -110,35 +110,75 @@ Works with [sfdx-hardis](https://github.com/hardisgroupcom/sfdx-hardis):
110
110
 
111
111
  ## Command Reference
112
112
 
113
- ### sf acc-transformer transform
113
+ <!-- commands -->
114
+ * [`sf acc-transformer transform`](#sf-acc-transformer-transform)
115
+
116
+ ## `sf acc-transformer transform`
117
+
118
+ Transform Salesforce Apex code coverage JSONs created during deployments and test runs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
114
119
 
115
120
  ```
116
121
  USAGE
117
- $ sf acc-transformer transform -j <value>... [-r <value>] [-f <value>] [-i <value>] [-e <value>]
118
- [--min-coverage <value>] [--max-annotations <value>] [--json]
122
+ $ sf acc-transformer transform -j <value>... -r <value> [--json] [--flags-dir <value>] [-f
123
+ clover|cobertura|github-actions|html|jacoco|json|json-summary|lcovonly|markdown|opencover|simplecov|sonar...] [-i
124
+ <value>...] [--min-coverage <value>] [--max-annotations <value>] [-e <value>...]
119
125
 
120
126
  FLAGS
121
- -j, --coverage-json=<value>... Path to a code coverage JSON from deploy or test. Repeat to merge
122
- multiple files. When the same Apex file appears in more than one
123
- input, covered lines are unioned across all inputs — if a line is
124
- covered in any input it is counted as covered in the final report,
125
- even if it is uncovered in others. All files must be the same type
126
- (deploy or test).
127
- -r, --output-report=<value> Output path (e.g. coverage.xml). Default: coverage.[xml|info] by format.
128
- -f, --format=<value> Output format (repeat for multiple). Default: sonar.
129
- Multiple formats append to filename, e.g. coverage-sonar.xml.
130
- -i, --ignore-package-directory=<value> Package directory to ignore (as in sfdx-project.json). Repeatable.
131
- -e, --exclude-pattern=<value> Glob pattern for file paths to exclude from the report. Matched against
132
- the relative path from the repo root. Repeatable.
133
- --min-coverage=<value> Minimum required line coverage percentage (0–100). Exits with an error
134
- if overall coverage is below this value. Reports are written first.
135
- --max-annotations=<value> Maximum ::warning annotations emitted by --format github-actions.
136
- Default: 50. Overflow is summarised in a ::notice line.
127
+ -e, --exclude-pattern=<value>... Glob pattern for file paths to exclude from the coverage report. Matched
128
+ against the relative path from the repo root (e.g.
129
+ force-app/main/default/classes/MyClass.cls). Repeat the flag for multiple
130
+ patterns.
131
+ -f, --format=<option>... Output format for the coverage report.
132
+ <options: clover|cobertura|github-actions|html|jacoco|json|json-summary|lco
133
+ vonly|markdown|opencover|simplecov|sonar>
134
+ -i, --ignore-package-directory=<value>... Ignore a package directory when looking for matching files in the coverage
135
+ report.
136
+ -j, --coverage-json=<value>... (required) Path to a code coverage JSON file created by the Salesforce CLI
137
+ deploy or test command. Repeat the flag to merge multiple files. When the
138
+ same Apex file appears in multiple inputs, covered lines are unioned across
139
+ all inputs — if a line is covered in any input it is counted as covered in
140
+ the final report, even if it is uncovered in others.
141
+ -r, --output-report=<value> (required) [default: coverage.xml] Path to the code coverage file that will
142
+ be created by this plugin.
143
+ --max-annotations=<value> [default: 50] Maximum number of GitHub Actions ::warning annotations to
144
+ emit when using --format github-actions. Defaults to 50. Annotations beyond
145
+ this limit are summarised in a ::notice line.
146
+ --min-coverage=<value> Minimum required line coverage percentage (0–100). The command exits with
147
+ an error if overall coverage is below this threshold. Reports are still
148
+ written before the check.
137
149
 
138
150
  GLOBAL FLAGS
139
- --json Output as JSON.
151
+ --flags-dir=<value> Import flag values from a directory.
152
+ --json Format output as json.
153
+
154
+ DESCRIPTION
155
+ Transform Salesforce Apex code coverage JSONs created during deployments and test runs into other formats accepted by
156
+ SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
157
+
158
+ Transform Salesforce Apex code coverage JSONs created during deployments and test runs into other formats accepted by
159
+ SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
160
+
161
+ EXAMPLES
162
+ `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "sonar"`
163
+
164
+ `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "cobertura"`
165
+
166
+ `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "clover"`
167
+
168
+ `sf acc-transformer transform -j "coverage.json" -r "coverage.info" -f "lcovonly"`
169
+
170
+ `sf acc-transformer transform -j "coverage.json" -r "coverage.md" -f "markdown"`
171
+
172
+ `sf acc-transformer transform -j "coverage.json" -r "coverage.txt" -f "github-actions"`
173
+
174
+ `sf acc-transformer transform -j "coverage.json" -i "force-app"`
175
+
176
+ `sf acc-transformer transform -j "coverage1.json" -j "coverage2.json" -r "coverage.xml" -f "sonar"`
140
177
  ```
141
178
 
179
+ _See code: [src/commands/acc-transformer/transform.ts](https://github.com/mcarvin8/apex-code-coverage-transformer/blob/v3.1.1/src/commands/acc-transformer/transform.ts)_
180
+ <!-- commandsstop -->
181
+
142
182
  ## Coverage Report Formats
143
183
 
144
184
  Use `-f` / `--format` to choose the output format. Multiple `-f` values produce multiple files with the format in the name (e.g. `coverage-sonar.xml`, `coverage-cobertura.xml`).
@@ -240,6 +280,38 @@ sonar-scanner \
240
280
 
241
281
  ### GitHub Actions
242
282
 
283
+ #### Native Action (skip the sf CLI install)
284
+
285
+ For GitHub Actions specifically, the transform step can run as a native Action instead of `sf acc-transformer transform` - no need to install `@salesforce/cli` or this plugin just to convert a coverage file:
286
+
287
+ ```yaml
288
+ - name: Transform Coverage
289
+ uses: mcarvin8/apex-code-coverage-transformer@v3
290
+ with:
291
+ coverage-json: coverage/test-result-codecoverage.json
292
+ output-report: coverage.xml
293
+ format: sonar
294
+ ```
295
+
296
+ Repeatable inputs (`coverage-json`, `format`, `ignore-package-directory`, `exclude-pattern`) accept one value per line. The action exposes `report-paths`, `coverage-percentage`, and `warnings` as step outputs:
297
+
298
+ ```yaml
299
+ - name: Transform Coverage
300
+ id: transform
301
+ uses: mcarvin8/apex-code-coverage-transformer@v3
302
+ with:
303
+ coverage-json: coverage/test-result-codecoverage.json
304
+ format: |
305
+ sonar
306
+ markdown
307
+ min-coverage: 80
308
+
309
+ - name: Use the coverage percentage
310
+ run: echo "Coverage was ${{ steps.transform.outputs.coverage-percentage }}%"
311
+ ```
312
+
313
+ `sf acc-transformer transform` remains available for every other CI provider (GitLab, Azure DevOps, Bitbucket) and for local/hook use - see [Automatic Transformation (Hook)](#automatic-transformation-hook) below.
314
+
243
315
  #### Markdown PR comments (built-in)
244
316
 
245
317
  Skip third-party summary actions by using the built-in `markdown` format:
@@ -71,6 +71,9 @@ export default class TransformerTransform extends SfCommand {
71
71
  this.warn(warning);
72
72
  });
73
73
  }
74
+ if (!result.success) {
75
+ this.error(`Coverage of ${(result.lineRate * 100).toFixed(2)}% is below the required minimum of ${flags['min-coverage']}%.`);
76
+ }
74
77
  return { path: result.finalPaths };
75
78
  }
76
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/commands/acc-transformer/transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/commands/acc-transformer/transform.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,5 @@ export declare function transformCoverageReport(jsonFilePaths: string[], outputR
4
4
  finalPaths: string[];
5
5
  warnings: string[];
6
6
  lineRate: number;
7
+ success: boolean;
7
8
  }>;
@@ -15,7 +15,7 @@ export async function transformCoverageReport(jsonFilePaths, outputReportPath, f
15
15
  const jsonDataItems = await Promise.all(jsonFilePaths.map((p) => tryReadJson(p, warnings)));
16
16
  const validData = jsonDataItems.filter((d) => d !== null);
17
17
  if (validData.length === 0)
18
- return { finalPaths: [outputReportPath], warnings, lineRate: 0 };
18
+ return { finalPaths: [outputReportPath], warnings, lineRate: 0, success: true };
19
19
  const parsedItems = validData.map((d) => JSON.parse(d));
20
20
  const types = parsedItems.map(checkCoverageDataType);
21
21
  if (types.some((t) => t === 'Unknown')) {
@@ -54,9 +54,7 @@ export async function transformCoverageReport(jsonFilePaths, outputReportPath, f
54
54
  const finalPath = await generateAndWriteReport(outputReportPath, coverageObj, format, formatAmount, renderOptions);
55
55
  finalPaths.push(finalPath);
56
56
  }
57
- if (options?.minCoverage !== undefined && lineRate * 100 < options.minCoverage) {
58
- throw new Error(`Coverage of ${(lineRate * 100).toFixed(2)}% is below the required minimum of ${options.minCoverage}%.`);
59
- }
60
- return { finalPaths, warnings, lineRate };
57
+ const success = options?.minCoverage === undefined || lineRate * 100 >= options.minCoverage;
58
+ return { finalPaths, warnings, lineRate, success };
61
59
  }
62
60
  //# sourceMappingURL=coverageTransformer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coverageTransformer.js","sourceRoot":"","sources":["../../src/transformers/coverageTransformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverageTransformer.js","sourceRoot":"","sources":["../../src/transformers/coverageTransformer.ts"],"names":[],"mappings":"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"}
@@ -131,5 +131,5 @@
131
131
  ]
132
132
  }
133
133
  },
134
- "version": "3.0.3"
134
+ "version": "3.1.1"
135
135
  }
package/package.json CHANGED
@@ -1,22 +1,24 @@
1
1
  {
2
2
  "name": "apex-code-coverage-transformer",
3
3
  "description": "Transform Salesforce Apex code coverage JSON for SonarQube, SonarCloud, GitHub, GitLab, Azure, and Bitbucket",
4
- "version": "3.0.3",
4
+ "version": "3.1.1",
5
5
  "dependencies": {
6
6
  "@oclif/core": "4.13.3",
7
7
  "@salesforce/core": "9.1.2",
8
8
  "@salesforce/sf-plugins-core": "13.0.0"
9
9
  },
10
10
  "devDependencies": {
11
+ "@actions/core": "3.0.1",
11
12
  "@biomejs/biome": "2.5.9",
12
13
  "@commitlint/cli": "21.2.2",
13
14
  "@commitlint/config-conventional": "21.2.2",
14
15
  "@salesforce/cli-plugins-testkit": "5.3.66",
15
16
  "@salesforce/dev-config": "4.3.3",
16
- "@stryker-mutator/core": "9.6.1",
17
- "@stryker-mutator/vitest-runner": "9.6.1",
17
+ "@stryker-mutator/core": "10.0.0",
18
+ "@stryker-mutator/vitest-runner": "10.0.0",
18
19
  "@types/node": "26.2.0",
19
20
  "@vitest/coverage-v8": "4.1.10",
21
+ "esbuild": "0.28.1",
20
22
  "husky": "9.1.7",
21
23
  "knip": "6.32.2",
22
24
  "lint-staged": "17.3.0",
@@ -33,6 +35,7 @@
33
35
  },
34
36
  "files": [
35
37
  "/lib",
38
+ "!/lib/action",
36
39
  "/messages",
37
40
  "/oclif.manifest.json",
38
41
  "/oclif.lock",
@@ -84,6 +87,7 @@
84
87
  },
85
88
  "scripts": {
86
89
  "build": "wireit",
90
+ "build:action": "wireit",
87
91
  "clean": "wireit",
88
92
  "clean:build": "wireit",
89
93
  "clean:package-manager": "wireit",
@@ -95,9 +99,10 @@
95
99
  "postpack": "shx rm -f oclif.manifest.json oclif.lock",
96
100
  "prepack": "wireit",
97
101
  "prepare": "husky",
102
+ "readme": "wireit",
98
103
  "test": "wireit",
99
- "test:mutation": "stryker run",
100
- "test:mutation:incremental": "node scripts/incremental-mutation.mjs",
104
+ "test:mutation": "wireit",
105
+ "test:mutation:incremental": "wireit",
101
106
  "test:nuts": "wireit",
102
107
  "test:only": "wireit"
103
108
  },
@@ -138,9 +143,24 @@
138
143
  "build": {
139
144
  "dependencies": [
140
145
  "compile",
141
- "lint"
146
+ "lint",
147
+ "build:action"
142
148
  ]
143
149
  },
150
+ "build:action": {
151
+ "command": "esbuild src/action/index.ts --bundle --minify --platform=node --format=cjs --target=node22 --outfile=dist/action/index.cjs",
152
+ "files": [
153
+ "src/action/**/*.ts",
154
+ "src/transformers/**/*.ts",
155
+ "src/utils/**/*.ts",
156
+ "src/handlers/**/*.ts",
157
+ "tsconfig.json"
158
+ ],
159
+ "output": [
160
+ "dist/action/**"
161
+ ],
162
+ "clean": false
163
+ },
144
164
  "compile": {
145
165
  "command": "tsc -p . --pretty --incremental",
146
166
  "files": [
@@ -210,6 +230,21 @@
210
230
  ],
211
231
  "clean": false
212
232
  },
233
+ "readme": {
234
+ "command": "oclif readme",
235
+ "files": [
236
+ "src/commands/acc-transformer/transform.ts",
237
+ "messages/transformer.transform.md",
238
+ "README.md"
239
+ ],
240
+ "dependencies": [
241
+ "build"
242
+ ],
243
+ "output": [
244
+ "README.md"
245
+ ],
246
+ "clean": false
247
+ },
213
248
  "test:compile": {
214
249
  "command": "tsc -p \"./test\" --pretty",
215
250
  "files": [
@@ -225,6 +260,39 @@
225
260
  "lint"
226
261
  ]
227
262
  },
263
+ "test:mutation": {
264
+ "command": "stryker run",
265
+ "files": [
266
+ "src/**/*.ts",
267
+ "test/**/*.ts",
268
+ "**/tsconfig.json",
269
+ "stryker.config.json",
270
+ "vitest.config.ts"
271
+ ],
272
+ "output": [
273
+ "reports/mutation/**"
274
+ ],
275
+ "dependencies": [
276
+ "lint"
277
+ ]
278
+ },
279
+ "test:mutation:incremental": {
280
+ "command": "node scripts/incremental-mutation.mjs",
281
+ "files": [
282
+ "src/**/*.ts",
283
+ "test/**/*.ts",
284
+ "**/tsconfig.json",
285
+ "stryker.config.json",
286
+ "vitest.config.ts",
287
+ "scripts/incremental-mutation.mjs"
288
+ ],
289
+ "output": [
290
+ "reports/mutation/**"
291
+ ],
292
+ "dependencies": [
293
+ "lint"
294
+ ]
295
+ },
228
296
  "test:nuts": {
229
297
  "command": "vitest run --config ./vitest.nut.config.ts && shx rm -f oclif.manifest.json oclif.lock *.tsbuildinfo",
230
298
  "files": [