@sfdxy/mule-lint 1.19.0 → 1.20.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/README.md +65 -56
- package/dist/package.json +1 -1
- package/dist/src/engine/LintEngine.d.ts +10 -0
- package/dist/src/engine/LintEngine.d.ts.map +1 -1
- package/dist/src/engine/LintEngine.js +68 -4
- package/dist/src/engine/LintEngine.js.map +1 -1
- package/dist/src/rules/dataweave/DataWeaveRules.d.ts +6 -0
- package/dist/src/rules/dataweave/DataWeaveRules.d.ts.map +1 -1
- package/dist/src/rules/dataweave/DataWeaveRules.js +16 -0
- package/dist/src/rules/dataweave/DataWeaveRules.js.map +1 -1
- package/dist/src/rules/error-handling/CorrelationIdRule.d.ts +22 -1
- package/dist/src/rules/error-handling/CorrelationIdRule.d.ts.map +1 -1
- package/dist/src/rules/error-handling/CorrelationIdRule.js +107 -6
- package/dist/src/rules/error-handling/CorrelationIdRule.js.map +1 -1
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts +14 -2
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts.map +1 -1
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js +40 -18
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js.map +1 -1
- package/dist/src/rules/error-handling/HttpStatusRule.d.ts +5 -0
- package/dist/src/rules/error-handling/HttpStatusRule.d.ts.map +1 -1
- package/dist/src/rules/error-handling/HttpStatusRule.js +15 -0
- package/dist/src/rules/error-handling/HttpStatusRule.js.map +1 -1
- package/dist/src/rules/http/HttpContentTypeRule.d.ts +28 -1
- package/dist/src/rules/http/HttpContentTypeRule.d.ts.map +1 -1
- package/dist/src/rules/http/HttpContentTypeRule.js +68 -7
- package/dist/src/rules/http/HttpContentTypeRule.js.map +1 -1
- package/dist/src/rules/operations/UnusedFlowRule.d.ts +6 -1
- package/dist/src/rules/operations/UnusedFlowRule.d.ts.map +1 -1
- package/dist/src/rules/operations/UnusedFlowRule.js +23 -9
- package/dist/src/rules/operations/UnusedFlowRule.js.map +1 -1
- package/dist/src/rules/performance/ConnectionPoolingRule.d.ts +5 -0
- package/dist/src/rules/performance/ConnectionPoolingRule.d.ts.map +1 -1
- package/dist/src/rules/performance/ConnectionPoolingRule.js +18 -5
- package/dist/src/rules/performance/ConnectionPoolingRule.js.map +1 -1
- package/dist/src/rules/performance/ReconnectionStrategyRule.d.ts +7 -0
- package/dist/src/rules/performance/ReconnectionStrategyRule.d.ts.map +1 -1
- package/dist/src/rules/performance/ReconnectionStrategyRule.js +15 -2
- package/dist/src/rules/performance/ReconnectionStrategyRule.js.map +1 -1
- package/dist/src/rules/structure/StructureRules.d.ts +8 -1
- package/dist/src/rules/structure/StructureRules.d.ts.map +1 -1
- package/dist/src/rules/structure/StructureRules.js +11 -7
- package/dist/src/rules/structure/StructureRules.js.map +1 -1
- package/dist/src/types/Rule.d.ts +22 -0
- package/dist/src/types/Rule.d.ts.map +1 -1
- package/docs/best-practices/rules-catalog.md +107 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/logo.svg" alt="Mule-Lint" width="600" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/@sfdxy/mule-lint"><img src="https://img.shields.io/npm/v/@sfdxy/mule-lint?style=flat-square&color=34d399" alt="npm version" /></a>
|
|
7
|
+
<a href="https://github.com/Avinava/mule-lint/actions"><img src="https://img.shields.io/github/actions/workflow/status/Avinava/mule-lint/ci.yml?style=flat-square&color=38bdf8" alt="CI" /></a>
|
|
8
|
+
<a href="https://github.com/Avinava/mule-lint/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/@sfdxy/mule-lint?style=flat-square&color=818cf8" alt="License" /></a>
|
|
9
|
+
<a href="https://www.npmjs.com/package/@sfdxy/mule-lint"><img src="https://img.shields.io/npm/dm/@sfdxy/mule-lint?style=flat-square&color=fbbf24" alt="Downloads" /></a>
|
|
10
|
+
</p>
|
|
2
11
|
|
|
3
12
|
<p align="center">
|
|
4
13
|
<strong>Enterprise-grade static analysis tool for MuleSoft applications</strong>
|
|
@@ -273,55 +282,55 @@ npx @sfdxy/mule-lint src/main/mule -f sarif -o results.sarif
|
|
|
273
282
|
|
|
274
283
|
### Core Rules (MVP)
|
|
275
284
|
|
|
276
|
-
| ID | Name | Severity | Category | Description
|
|
277
|
-
| -------- | --------------------- | -------- | -------------- |
|
|
278
|
-
| MULE-001 | Global Error Handler |
|
|
279
|
-
| MULE-002 | Flow Naming | Warning | Naming | Flows end with `-flow`, sub-flows with `-subflow`
|
|
280
|
-
| MULE-003 | Missing Error Handler | Error | Error Handling | Flows should have error handlers
|
|
281
|
-
| MULE-004 | Hardcoded URLs | Error | Security | Use property placeholders for URLs
|
|
282
|
-
| MULE-005 | HTTP Status Check | Warning | Error Handling | Error handlers should set httpStatus
|
|
283
|
-
| MULE-006 | Logger Category | Warning | Logging | Loggers should have category attribute
|
|
284
|
-
| MULE-007 | Correlation ID | Warning | Error Handling | Error handlers should reference correlationId
|
|
285
|
-
| MULE-008 | Choice Anti-Pattern | Warning | Standards | Avoid raise-error in otherwise
|
|
286
|
-
| MULE-009 | Generic Error Type | Warning | Error Handling | Avoid catching type="ANY"
|
|
287
|
-
| MULE-010 | DWL Standards | Info | Standards | Standard DataWeave files should exist
|
|
285
|
+
| ID | Name | Severity | Category | Description |
|
|
286
|
+
| -------- | --------------------- | -------- | -------------- | -------------------------------------------------------------------- |
|
|
287
|
+
| MULE-001 | Global Error Handler | Warning | Error Handling | Any flow file should have a global error handler |
|
|
288
|
+
| MULE-002 | Flow Naming | Warning | Naming | Flows end with `-flow`, sub-flows with `-subflow` |
|
|
289
|
+
| MULE-003 | Missing Error Handler | Error | Error Handling | Flows should have error handlers |
|
|
290
|
+
| MULE-004 | Hardcoded URLs | Error | Security | Use property placeholders for URLs |
|
|
291
|
+
| MULE-005 | HTTP Status Check | Warning | Error Handling | Error handlers should set httpStatus (skipped for non-HTTP projects) |
|
|
292
|
+
| MULE-006 | Logger Category | Warning | Logging | Loggers should have category attribute |
|
|
293
|
+
| MULE-007 | Correlation ID | Warning | Error Handling | Error handlers should reference correlationId (checks DWL files too) |
|
|
294
|
+
| MULE-008 | Choice Anti-Pattern | Warning | Standards | Avoid raise-error in otherwise |
|
|
295
|
+
| MULE-009 | Generic Error Type | Warning | Error Handling | Avoid catching type="ANY" |
|
|
296
|
+
| MULE-010 | DWL Standards | Info | Standards | Standard DataWeave files should exist |
|
|
288
297
|
|
|
289
298
|
### Extended Rules
|
|
290
299
|
|
|
291
|
-
| ID | Name | Severity | Category | Description
|
|
292
|
-
| -------- | --------------------- | -------- | ------------- |
|
|
293
|
-
| MULE-101 | Flow Casing | Warning | Naming | kebab-case for flows
|
|
294
|
-
| MULE-102 | Variable Naming | Warning | Naming | camelCase for variables
|
|
295
|
-
| MULE-201 | Hardcoded Credentials | Error | Security | Use `${secure::}`
|
|
296
|
-
| MULE-202 | Insecure TLS | Error | Security | No insecure="true"
|
|
297
|
-
| MULE-301 | Logger Payload | Warning | Logging | Don't log entire payload
|
|
298
|
-
| MULE-303 | Logger in Retry | Warning | Logging | Avoid loggers in until-successful
|
|
299
|
-
| MULE-401 | HTTP User-Agent | Warning | HTTP | Include User-Agent
|
|
300
|
-
| MULE-402 | HTTP Content-Type | Warning | HTTP | POST/PUT needs Content-Type
|
|
301
|
-
| MULE-403 | HTTP Timeout | Warning | HTTP | Set responseTimeout
|
|
302
|
-
| MULE-501 | Scatter-Gather | Info | Performance | Limit parallel routes
|
|
303
|
-
| MULE-502 | Async Error | Warning | Performance | Async needs error handling
|
|
304
|
-
| MULE-503 | Large Choice | Warning | Performance | Max 7 when clauses
|
|
305
|
-
| MULE-601 | Flow Description | Info | Documentation | Add doc:description
|
|
306
|
-
| MULE-604 | Missing doc:name | Warning | Documentation | Key components need doc:name
|
|
307
|
-
| MULE-701 | Deprecated | Warning | Standards | Detect deprecated elements
|
|
308
|
-
| MULE-801 | Flow Complexity | Warning | Complexity | Cyclomatic complexity threshold
|
|
309
|
-
| MULE-802 | Project Structure | Warning | Structure | Validate folder structure
|
|
310
|
-
| MULE-803 | Global Config | Warning | Structure | global.xml should exist
|
|
311
|
-
| MULE-804 | Monolithic XML | Warning | Structure | Split large XML files
|
|
300
|
+
| ID | Name | Severity | Category | Description |
|
|
301
|
+
| -------- | --------------------- | -------- | ------------- | --------------------------------------------------------- |
|
|
302
|
+
| MULE-101 | Flow Casing | Warning | Naming | kebab-case for flows |
|
|
303
|
+
| MULE-102 | Variable Naming | Warning | Naming | camelCase for variables |
|
|
304
|
+
| MULE-201 | Hardcoded Credentials | Error | Security | Use `${secure::}` |
|
|
305
|
+
| MULE-202 | Insecure TLS | Error | Security | No insecure="true" |
|
|
306
|
+
| MULE-301 | Logger Payload | Warning | Logging | Don't log entire payload |
|
|
307
|
+
| MULE-303 | Logger in Retry | Warning | Logging | Avoid loggers in until-successful |
|
|
308
|
+
| MULE-401 | HTTP User-Agent | Warning | HTTP | Include User-Agent |
|
|
309
|
+
| MULE-402 | HTTP Content-Type | Warning | HTTP | POST/PUT needs Content-Type (static, CDATA, or inline DW) |
|
|
310
|
+
| MULE-403 | HTTP Timeout | Warning | HTTP | Set responseTimeout |
|
|
311
|
+
| MULE-501 | Scatter-Gather | Info | Performance | Limit parallel routes |
|
|
312
|
+
| MULE-502 | Async Error | Warning | Performance | Async needs error handling |
|
|
313
|
+
| MULE-503 | Large Choice | Warning | Performance | Max 7 when clauses |
|
|
314
|
+
| MULE-601 | Flow Description | Info | Documentation | Add doc:description |
|
|
315
|
+
| MULE-604 | Missing doc:name | Warning | Documentation | Key components need doc:name |
|
|
316
|
+
| MULE-701 | Deprecated | Warning | Standards | Detect deprecated elements |
|
|
317
|
+
| MULE-801 | Flow Complexity | Warning | Complexity | Cyclomatic complexity threshold |
|
|
318
|
+
| MULE-802 | Project Structure | Warning | Structure | Validate folder structure |
|
|
319
|
+
| MULE-803 | Global Config | Warning | Structure | global.xml should exist |
|
|
320
|
+
| MULE-804 | Monolithic XML | Warning | Structure | Split large XML files |
|
|
312
321
|
|
|
313
322
|
### DataWeave & API-Led Rules
|
|
314
323
|
|
|
315
|
-
| ID | Name | Severity | Category | Description
|
|
316
|
-
| ------- | ----------------- | -------- | --------- |
|
|
317
|
-
| DW-001 | External DWL | Warning | DataWeave | Externalize complex transforms
|
|
318
|
-
| DW-002 | DWL Naming | Info | DataWeave | kebab-case for .dwl files
|
|
319
|
-
| DW-003 | DWL Modules | Info | DataWeave | Use common modules
|
|
320
|
-
| DW-004 | Java 17 DW Errors | Error | DataWeave | Java 17 compatible error handling
|
|
321
|
-
| API-001 | Experience Layer | Info | API-Led | Experience API patterns
|
|
322
|
-
| API-002 | Process Layer | Info | API-Led | Process layer orchestration
|
|
323
|
-
| API-003 | System Layer | Info | API-Led | System layer connections
|
|
324
|
-
| API-004 | Single SAPI | Warning | API-Led | Single system per SAPI
|
|
324
|
+
| ID | Name | Severity | Category | Description |
|
|
325
|
+
| ------- | ----------------- | -------- | --------- | ---------------------------------------------------- |
|
|
326
|
+
| DW-001 | External DWL | Warning | DataWeave | Externalize complex transforms |
|
|
327
|
+
| DW-002 | DWL Naming | Info | DataWeave | kebab-case for .dwl files (configurable exemptPaths) |
|
|
328
|
+
| DW-003 | DWL Modules | Info | DataWeave | Use common modules |
|
|
329
|
+
| DW-004 | Java 17 DW Errors | Error | DataWeave | Java 17 compatible error handling |
|
|
330
|
+
| API-001 | Experience Layer | Info | API-Led | Experience API patterns |
|
|
331
|
+
| API-002 | Process Layer | Info | API-Led | Process layer orchestration |
|
|
332
|
+
| API-003 | System Layer | Info | API-Led | System layer connections |
|
|
333
|
+
| API-004 | Single SAPI | Warning | API-Led | Single system per SAPI |
|
|
325
334
|
|
|
326
335
|
### Experimental Rules
|
|
327
336
|
|
|
@@ -348,18 +357,18 @@ npx @sfdxy/mule-lint src/main/mule -f sarif -o results.sarif
|
|
|
348
357
|
|
|
349
358
|
### Operations & Resilience Rules
|
|
350
359
|
|
|
351
|
-
| ID | Name | Severity | Category | Description
|
|
352
|
-
| ------- | ---------------------- | -------- | ------------- |
|
|
353
|
-
| RES-001 | Reconnection Strategy | Warning | Performance | Connectors should have reconnection strategies
|
|
354
|
-
| OPS-001 | Auto-Discovery | Info | Standards | APIs should have auto-discovery for API Manager
|
|
355
|
-
| OPS-002 | HTTP Port Placeholder | Warning | Standards | HTTP ports should use property placeholders
|
|
356
|
-
| OPS-003 | Externalized Cron | Warning | Standards | Cron expressions should use placeholders
|
|
357
|
-
| SEC-006 | Encryption Key in Logs | Error | Security | Detect sensitive data in log messages
|
|
358
|
-
| HYG-001 | Excessive Loggers | Warning | Logging | Flows should not have too many loggers
|
|
359
|
-
| HYG-002 | Commented Code | Info | Standards | Detect commented-out code blocks
|
|
360
|
-
| HYG-003 | Unused Flow | Warning | Standards | Detect flows/sub-flows never referenced
|
|
361
|
-
| API-005 | APIKit Validation | Info | Standards | APIs should use APIKit for interfaces
|
|
362
|
-
| DOC-001 | Display Name | Info | Documentation | Key components should have meaningful names
|
|
360
|
+
| ID | Name | Severity | Category | Description |
|
|
361
|
+
| ------- | ---------------------- | -------- | ------------- | ---------------------------------------------------- |
|
|
362
|
+
| RES-001 | Reconnection Strategy | Warning | Performance | Connectors should have reconnection strategies |
|
|
363
|
+
| OPS-001 | Auto-Discovery | Info | Standards | APIs should have auto-discovery for API Manager |
|
|
364
|
+
| OPS-002 | HTTP Port Placeholder | Warning | Standards | HTTP ports should use property placeholders |
|
|
365
|
+
| OPS-003 | Externalized Cron | Warning | Standards | Cron expressions should use placeholders |
|
|
366
|
+
| SEC-006 | Encryption Key in Logs | Error | Security | Detect sensitive data in log messages |
|
|
367
|
+
| HYG-001 | Excessive Loggers | Warning | Logging | Flows should not have too many loggers |
|
|
368
|
+
| HYG-002 | Commented Code | Info | Standards | Detect commented-out code blocks |
|
|
369
|
+
| HYG-003 | Unused Flow | Warning | Standards | Detect flows/sub-flows never referenced (cross-file) |
|
|
370
|
+
| API-005 | APIKit Validation | Info | Standards | APIs should use APIKit for interfaces |
|
|
371
|
+
| DOC-001 | Display Name | Info | Documentation | Key components should have meaningful names |
|
|
363
372
|
|
|
364
373
|
### Project Governance Rules
|
|
365
374
|
|
package/dist/package.json
CHANGED
|
@@ -64,5 +64,15 @@ export declare class LintEngine {
|
|
|
64
64
|
* Collect metrics from a parsed XML document
|
|
65
65
|
*/
|
|
66
66
|
private collectFileMetrics;
|
|
67
|
+
/**
|
|
68
|
+
* Pre-scan all XML files to build cross-file context:
|
|
69
|
+
* - allFlowRefs: union of all <flow-ref name="..."> targets across files
|
|
70
|
+
* - projectContext: whether the project has HTTP listeners / APIkit routers
|
|
71
|
+
*
|
|
72
|
+
* This runs before the main per-file rule execution so that rules can use
|
|
73
|
+
* the aggregated information (e.g. HYG-003 cross-file unused flow detection,
|
|
74
|
+
* MULE-005 HTTP-only project detection).
|
|
75
|
+
*/
|
|
76
|
+
private preScanFiles;
|
|
67
77
|
}
|
|
68
78
|
//# sourceMappingURL=LintEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintEngine.d.ts","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"LintEngine.d.ts","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,KAAK,EAA2D,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAA2C,MAAM,iBAAiB,CAAC;AAQtF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,sBAAsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,aAAa;IAMlC;;OAEG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgI1D;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE;IAmB9D;;OAEG;IACI,eAAe,IAAI,IAAI,EAAE;IAOhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAwDnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgDhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,GAAG;IAOX;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;CA4DrB"}
|
|
@@ -88,6 +88,10 @@ class LintEngine {
|
|
|
88
88
|
exclude: this.config.exclude,
|
|
89
89
|
});
|
|
90
90
|
this.log(`Found ${files.length} files to scan`);
|
|
91
|
+
// Pre-scan: collect cross-file context before rule execution
|
|
92
|
+
const { allFlowRefs, projectContext } = isStandalone
|
|
93
|
+
? { allFlowRefs: undefined, projectContext: undefined }
|
|
94
|
+
: this.preScanFiles(files);
|
|
91
95
|
// Process each file and collect metrics
|
|
92
96
|
const fileResults = [];
|
|
93
97
|
const metricsAggregator = {
|
|
@@ -108,7 +112,7 @@ class LintEngine {
|
|
|
108
112
|
flowComplexityData: [],
|
|
109
113
|
};
|
|
110
114
|
for (const file of files) {
|
|
111
|
-
const result = this.processFile(file, projectRoot, isStandalone, metricsAggregator);
|
|
115
|
+
const result = this.processFile(file, projectRoot, isStandalone, metricsAggregator, allFlowRefs, projectContext);
|
|
112
116
|
fileResults.push(result);
|
|
113
117
|
}
|
|
114
118
|
// Run Project Rules (only once per scan, if not standalone)
|
|
@@ -210,7 +214,7 @@ class LintEngine {
|
|
|
210
214
|
/**
|
|
211
215
|
* Process a single file
|
|
212
216
|
*/
|
|
213
|
-
processFile(file, projectRoot, isStandalone = false, metricsAggregator) {
|
|
217
|
+
processFile(file, projectRoot, isStandalone = false, metricsAggregator, allFlowRefs, projectContext) {
|
|
214
218
|
this.log(` Processing: ${file.relativePath}`);
|
|
215
219
|
try {
|
|
216
220
|
const content = (0, FileScanner_1.readFileContent)(file.absolutePath);
|
|
@@ -224,7 +228,7 @@ class LintEngine {
|
|
|
224
228
|
parseError: parseResult.error,
|
|
225
229
|
};
|
|
226
230
|
}
|
|
227
|
-
const issues = this.runRules(parseResult.document, file.absolutePath, projectRoot, isStandalone);
|
|
231
|
+
const issues = this.runRules(parseResult.document, file.absolutePath, projectRoot, isStandalone, allFlowRefs, projectContext);
|
|
228
232
|
// Collect metrics from parsed document
|
|
229
233
|
if (metricsAggregator) {
|
|
230
234
|
this.collectFileMetrics(parseResult.document, file.relativePath, metricsAggregator);
|
|
@@ -250,7 +254,7 @@ class LintEngine {
|
|
|
250
254
|
/**
|
|
251
255
|
* Run all enabled rules against a document
|
|
252
256
|
*/
|
|
253
|
-
runRules(doc, filePath, projectRoot, isStandalone = false) {
|
|
257
|
+
runRules(doc, filePath, projectRoot, isStandalone = false, allFlowRefs, projectContext) {
|
|
254
258
|
const issues = [];
|
|
255
259
|
const enabledRules = this.getEnabledRules();
|
|
256
260
|
for (const rule of enabledRules) {
|
|
@@ -264,6 +268,8 @@ class LintEngine {
|
|
|
264
268
|
relativePath: path.relative(projectRoot, filePath),
|
|
265
269
|
projectRoot,
|
|
266
270
|
config: this.getRuleConfig(rule.id),
|
|
271
|
+
allFlowRefs,
|
|
272
|
+
projectContext,
|
|
267
273
|
};
|
|
268
274
|
const ruleIssues = rule.validate(doc, context);
|
|
269
275
|
// Apply severity override from config
|
|
@@ -371,6 +377,64 @@ class LintEngine {
|
|
|
371
377
|
collectFileMetrics(doc, relativePath, metrics) {
|
|
372
378
|
(0, MetricsCollector_1.collectFileMetrics)(doc, relativePath, metrics);
|
|
373
379
|
}
|
|
380
|
+
/**
|
|
381
|
+
* Pre-scan all XML files to build cross-file context:
|
|
382
|
+
* - allFlowRefs: union of all <flow-ref name="..."> targets across files
|
|
383
|
+
* - projectContext: whether the project has HTTP listeners / APIkit routers
|
|
384
|
+
*
|
|
385
|
+
* This runs before the main per-file rule execution so that rules can use
|
|
386
|
+
* the aggregated information (e.g. HYG-003 cross-file unused flow detection,
|
|
387
|
+
* MULE-005 HTTP-only project detection).
|
|
388
|
+
*/
|
|
389
|
+
preScanFiles(files) {
|
|
390
|
+
const allFlowRefs = new Set();
|
|
391
|
+
const projectContext = {
|
|
392
|
+
hasHttpListener: false,
|
|
393
|
+
hasApikitRouter: false,
|
|
394
|
+
};
|
|
395
|
+
for (const file of files) {
|
|
396
|
+
// Only process XML files
|
|
397
|
+
if (!file.absolutePath.endsWith('.xml')) {
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
try {
|
|
401
|
+
const content = (0, FileScanner_1.readFileContent)(file.absolutePath);
|
|
402
|
+
const parseResult = (0, XmlParser_1.parseXml)(content, file.relativePath);
|
|
403
|
+
if (!parseResult.success || !parseResult.document) {
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
const doc = parseResult.document;
|
|
407
|
+
// Collect flow-ref targets
|
|
408
|
+
const allElements = doc.getElementsByTagName('*');
|
|
409
|
+
for (let i = 0; i < allElements.length; i++) {
|
|
410
|
+
const el = allElements[i];
|
|
411
|
+
const localName = el.localName ?? el.nodeName.split(':').pop() ?? '';
|
|
412
|
+
if (localName === 'flow-ref') {
|
|
413
|
+
const name = el.getAttribute('name');
|
|
414
|
+
if (name) {
|
|
415
|
+
allFlowRefs.add(name);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
// Detect HTTP listener
|
|
419
|
+
if (localName === 'listener') {
|
|
420
|
+
projectContext.hasHttpListener = true;
|
|
421
|
+
}
|
|
422
|
+
// Detect APIkit router or console
|
|
423
|
+
if (localName === 'router' || localName === 'console') {
|
|
424
|
+
// Check namespace to be sure it's apikit
|
|
425
|
+
const nodeName = el.nodeName;
|
|
426
|
+
if (nodeName.includes('apikit:')) {
|
|
427
|
+
projectContext.hasApikitRouter = true;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
catch {
|
|
433
|
+
// Ignore unreadable files during pre-scan
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return { allFlowRefs, projectContext };
|
|
437
|
+
}
|
|
374
438
|
}
|
|
375
439
|
exports.LintEngine = LintEngine;
|
|
376
440
|
//# sourceMappingURL=LintEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintEngine.js","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LintEngine.js","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,12 @@ export declare class ExternalDwlRule extends BaseRule {
|
|
|
18
18
|
*
|
|
19
19
|
* DataWeave files should follow naming conventions for consistency.
|
|
20
20
|
* Supports configurable conventions: 'kebab-case' (default), 'camelCase', or 'any'.
|
|
21
|
+
*
|
|
22
|
+
* IMPORTANT: DataWeave module files (imported via `import X from dwl::path::X`)
|
|
23
|
+
* MUST use camelCase because the module identifier in the import statement must
|
|
24
|
+
* exactly match the filename, and hyphens are not valid in DataWeave identifiers.
|
|
25
|
+
* Use the `exemptPaths` option to exclude module directories from this rule, or
|
|
26
|
+
* set `convention: "camelCase"` for projects that use DW modules extensively.
|
|
21
27
|
*/
|
|
22
28
|
export declare class DwlNamingRule extends BaseRule {
|
|
23
29
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataWeaveRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,EAAE,SAAY;IACd,IAAI,SAAyC;IAC7C,WAAW,SAA4D;IACvE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CA+B7D;AAED
|
|
1
|
+
{"version":3,"file":"DataWeaveRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,EAAE,SAAY;IACd,IAAI,SAAyC;IAC7C,WAAW,SAA4D;IACvE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CA+B7D;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,EAAE,SAAY;IACd,IAAI,SAAqB;IACzB,WAAW,SAC8E;IACzF,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAgD7D,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;CAiBrB;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,EAAE,SAAY;IACd,IAAI,SAAiB;IACrB,WAAW,SAAkD;IAC7D,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAwB7D,OAAO,CAAC,OAAO;CAQhB"}
|
|
@@ -75,6 +75,12 @@ exports.ExternalDwlRule = ExternalDwlRule;
|
|
|
75
75
|
*
|
|
76
76
|
* DataWeave files should follow naming conventions for consistency.
|
|
77
77
|
* Supports configurable conventions: 'kebab-case' (default), 'camelCase', or 'any'.
|
|
78
|
+
*
|
|
79
|
+
* IMPORTANT: DataWeave module files (imported via `import X from dwl::path::X`)
|
|
80
|
+
* MUST use camelCase because the module identifier in the import statement must
|
|
81
|
+
* exactly match the filename, and hyphens are not valid in DataWeave identifiers.
|
|
82
|
+
* Use the `exemptPaths` option to exclude module directories from this rule, or
|
|
83
|
+
* set `convention: "camelCase"` for projects that use DW modules extensively.
|
|
78
84
|
*/
|
|
79
85
|
class DwlNamingRule extends BaseRule_1.BaseRule {
|
|
80
86
|
id = 'DW-002';
|
|
@@ -94,9 +100,19 @@ class DwlNamingRule extends BaseRule_1.BaseRule {
|
|
|
94
100
|
if (convention === 'any') {
|
|
95
101
|
return issues;
|
|
96
102
|
}
|
|
103
|
+
// Get configurable exempt paths (glob-style patterns relative to projectRoot).
|
|
104
|
+
// Files matching any exempt pattern are skipped entirely regardless of convention.
|
|
105
|
+
// Use this for DataWeave module directories where camelCase is required by the
|
|
106
|
+
// DataWeave runtime import system (e.g., "src/main/resources/dwl/lookups/**").
|
|
107
|
+
const exemptPaths = this.getOption(context, 'exemptPaths', []);
|
|
97
108
|
const dwlFiles = this.findDwlFiles(dwlDir);
|
|
98
109
|
for (const file of dwlFiles) {
|
|
99
110
|
const basename = path.basename(file, '.dwl');
|
|
111
|
+
// Check if this file matches any exempt path pattern
|
|
112
|
+
const relativeToDwlDir = path.relative(context.projectRoot, file);
|
|
113
|
+
if (exemptPaths.length > 0 && this.isExcluded(relativeToDwlDir, exemptPaths)) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
100
116
|
if (!this.isValidDwlName(basename, convention)) {
|
|
101
117
|
const suggestedName = this.toConvention(basename, convention);
|
|
102
118
|
issues.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataWeaveRules.js","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,+CAA4C;AAE5C;;;;GAIG;AACH,MAAa,eAAgB,SAAQ,mBAAQ;IAC3C,EAAE,GAAG,QAAQ,CAAC;IACd,IAAI,GAAG,qCAAqC,CAAC;IAC7C,WAAW,GAAG,wDAAwD,CAAC;IACvE,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,WAAoB,CAAC;IAEhC,QAAQ,CAAC,GAAa,EAAE,OAA0B;QAChD,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAErE,gCAAgC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QAErE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,SAAqB,CAAC,CAAC;YAE1F,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAErE,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC;oBAC1D,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,WAAW,CACd,SAAS,EACT,cAAc,OAAO,SAAS,KAAK,CAAC,MAAM,mCAAmC,EAC7E;wBACE,UAAU,EAAE,6EAA6E;qBAC1F,CACF,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAtCD,0CAsCC;AAED
|
|
1
|
+
{"version":3,"file":"DataWeaveRules.js","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,13 @@ import { BaseRule } from '../base/BaseRule';
|
|
|
5
5
|
*
|
|
6
6
|
* Error handlers should include correlation ID for traceability.
|
|
7
7
|
* This helps track errors across distributed systems.
|
|
8
|
+
*
|
|
9
|
+
* The rule checks three patterns:
|
|
10
|
+
* 1. Inline correlationId reference in the error handler XML text/attributes
|
|
11
|
+
* 2. External DWL file referenced via resource="..." attribute on ee:set-payload
|
|
12
|
+
* (the DWL file content is read from disk and inspected)
|
|
13
|
+
* 3. If a resource reference exists but the file cannot be read, the issue is
|
|
14
|
+
* downgraded to 'info' to avoid false positives on valid code
|
|
8
15
|
*/
|
|
9
16
|
export declare class CorrelationIdRule extends BaseRule {
|
|
10
17
|
id: string;
|
|
@@ -14,11 +21,25 @@ export declare class CorrelationIdRule extends BaseRule {
|
|
|
14
21
|
category: "error-handling";
|
|
15
22
|
issueType: IssueType;
|
|
16
23
|
private readonly CORRELATION_PATTERNS;
|
|
17
|
-
validate(doc: Document,
|
|
24
|
+
validate(doc: Document, context: ValidationContext): Issue[];
|
|
25
|
+
/**
|
|
26
|
+
* Inspect resource="..." attributes on ee:set-payload (and similar) elements
|
|
27
|
+
* within the error handler.
|
|
28
|
+
*
|
|
29
|
+
* @returns
|
|
30
|
+
* 'found' — correlationId pattern detected in a referenced DWL file
|
|
31
|
+
* 'unresolvable' — resource reference exists but could not be read
|
|
32
|
+
* 'not-found' — no resource references present or none contain correlationId
|
|
33
|
+
*/
|
|
34
|
+
private checkResourceReferences;
|
|
18
35
|
/**
|
|
19
36
|
* Check if a node or its descendants contain correlation ID reference
|
|
20
37
|
*/
|
|
21
38
|
private containsCorrelationId;
|
|
39
|
+
/**
|
|
40
|
+
* Check whether a raw file content string contains a correlationId pattern
|
|
41
|
+
*/
|
|
42
|
+
private contentContainsCorrelationId;
|
|
22
43
|
/**
|
|
23
44
|
* Find the parent flow element for context
|
|
24
45
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CorrelationIdRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/error-handling/CorrelationIdRule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CorrelationIdRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/error-handling/CorrelationIdRule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,EAAE,SAAc;IAChB,IAAI,SAAqC;IACzC,WAAW,SAA2E;IACtF,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,gBAAgB,CAAU;IACrC,SAAS,EAAE,SAAS,CAAS;IAG7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CASnC;IAEF,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAwD5D;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAKpC;;OAEG;IACH,OAAO,CAAC,cAAc;CAUvB"}
|