Skip to content

Commit 797150a

Browse files
authored
Merge pull request #63 from Lightning-Flow-Scanner/f2
Improvement Unexisting specified rulesin configuration Incorrect severity configurations
2 parents 5d12513 + 2f47c51 commit 797150a

File tree

64 files changed

+747
-680
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+747
-680
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lightning-flow-scanner-core",
3-
"version": "2.26.0",
3+
"version": "2.27.0",
44
"main": "out/**",
55
"types": "out/index.d.ts",
66
"scripts": {

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
- [Outdated API Version](#outdated-api-version)
88
- [Copy API Name](#copy-api-name)
9-
- [DML Statement In A Loop'](#dml-statement-in-a-loop)
9+
- [DML Statement In A Loop](#dml-statement-in-a-loop)
1010
- [Duplicate DML Operation](#duplicate-dml-operation)
1111
- [Missing Flow Description](#missing-flow-description)
1212
- [Flow Naming Convention](#flow-naming-convention)

src/index.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { IRulesConfig } from './main/interfaces/IRulesConfig';
33
import { FixFlows } from './main/libs/FixFlows';
44
import { GetRuleDefinitions } from './main/libs/GetRuleDefinitions';
55
import { ScanFlows } from './main/libs/ScanFlows';
6-
import { Flow } from './main/models/Flow';
7-
import { ResultDetails } from './main/models/ResultDetails';
8-
import { RuleResult } from './main/models/RuleResult';
9-
import { ScanResult } from './main/models/ScanResult';
6+
import Flow from './main/models/Flow';
7+
import ResultDetails from './main/models/ResultDetails';
8+
import RuleResult from './main/models/RuleResult';
9+
import ScanResult from './main/models/ScanResult';
1010

1111
export function getRules(ruleNames?: string[]): IRuleDefinition[] {
1212
if (ruleNames && ruleNames.length > 0) {
@@ -53,4 +53,9 @@ export function scan(flows: Flow[], ruleOptions?: IRulesConfig): ScanResult[] {
5353

5454
export function fix(flows: Flow[]): ScanResult[] {
5555
return FixFlows(flows);
56-
}
56+
}
57+
58+
export { default as Flow } from './main/models/Flow';
59+
export { default as ScanResult } from './main/models/ScanResult';
60+
export { default as RuleResult } from './main/models/RuleResult';
61+
export { default as ResultDetails } from './main/models/ResultDetails';

src/main/interfaces/IRuleDefinition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Flow } from '../models/Flow';
2-
import { RuleResult } from '../models/RuleResult';
1+
import Flow from '../models/Flow';
2+
import RuleResult from '../models/RuleResult';
33

44
export interface IRuleDefinition {
55
uri: string;

src/main/libs/Compiler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Flow } from '../models/Flow';
1+
import Flow from '../models/Flow';
22
import { FlowNode } from '../models/FlowNode';
33

44
export class Compiler {
@@ -26,7 +26,7 @@ export class Compiler {
2626

2727
traverseFlow(flow: Flow, startElementName: string, visitCallback: (element: FlowNode) => void) {
2828
// Iterative Deepening Depth-First Search (IDDFS)
29-
let depth = 0;
29+
// let depth = 0;
3030
let elementsToVisit = [startElementName];
3131

3232
while (elementsToVisit.length > 0) {
@@ -44,8 +44,8 @@ export class Compiler {
4444
}
4545

4646
elementsToVisit = nextElements;
47-
depth++;
4847
// add logic to control depth or terminate the traversal based on requirements.
48+
// depth++;
4949
}
5050
}
5151

src/main/libs/DynamicRule.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export class DynamicRule {
55

66
if (DefaultRuleStore[className] === undefined || DefaultRuleStore[className] === null) {
77

8-
throw new Error(`Class type of \'${className}\' is not in the store`);
8+
throw new Error(`Rule \'${className}\' does not exist in the store.`);
99
}
1010
return new DefaultRuleStore[className]();
1111
}

src/main/libs/FixFlows.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
1-
import { Flow } from '../models/Flow';
21
import { FlowNode } from '../models/FlowNode';
32
import { FlowVariable } from '../models/FlowVariable';
4-
import { ResultDetails } from '../models/ResultDetails';
5-
import { RuleResult } from '../models/RuleResult';
6-
import { ScanResult } from '../models/ScanResult';
73
import { UnconnectedElement } from '../rules/UnconnectedElement';
84
import { UnusedVariable } from '../rules/UnusedVariable';
95
import { BuildFlow } from './BuildFlow';
6+
import * as core from '../../index';
107

11-
export function FixFlows(flows: Flow[]): ScanResult[] {
8+
export function FixFlows(flows: core.Flow[]): core.ScanResult[] {
129

13-
const flowResults: ScanResult[] = [];
10+
const flowResults: core.ScanResult[] = [];
1411
for (const flow of flows) {
15-
const unconnectedElementsResult: RuleResult = new UnconnectedElement().execute(flow);
16-
const unusedVariablesResult: RuleResult = new UnusedVariable().execute(flow);
17-
const ruleResults: RuleResult[] = [unusedVariablesResult, unconnectedElementsResult];
18-
const unusedVariableReferences = unusedVariablesResult.details ? (unusedVariablesResult.details as ResultDetails[]).map(unusedVariable => unusedVariable.name) : [];
19-
const unconnectedElementsReferences = unconnectedElementsResult.details ? (unconnectedElementsResult.details as ResultDetails[]).map(unconnectedElement => unconnectedElement.name) : [];
12+
const unconnectedElementsResult: core.RuleResult = new UnconnectedElement().execute(flow);
13+
const unusedVariablesResult: core.RuleResult = new UnusedVariable().execute(flow);
14+
const ruleResults: core.RuleResult[] = [unusedVariablesResult, unconnectedElementsResult];
15+
const unusedVariableReferences = unusedVariablesResult.details ? (unusedVariablesResult.details as core.ResultDetails[]).map(unusedVariable => unusedVariable.name) : [];
16+
const unconnectedElementsReferences = unconnectedElementsResult.details ? (unconnectedElementsResult.details as core.ResultDetails[]).map(unconnectedElement => unconnectedElement.name) : [];
2017
const nodesToBuild = flow.elements.filter(node => {
2118
switch (node.metaType) {
2219
case 'variable':
@@ -38,7 +35,7 @@ export function FixFlows(flows: Flow[]): ScanResult[] {
3835
);
3936
flow.xmldata = BuildFlow(nodesToBuild);
4037
flow.preProcessNodes();
41-
flowResults.push(new ScanResult(flow, ruleResults));
38+
flowResults.push(new core.ScanResult(flow, ruleResults));
4239
}
4340
return flowResults;
4441
}

src/main/libs/GetRuleDefinitions.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,17 @@ export function GetRuleDefinitions(ruleConfig?: Map<string, {}>): IRuleDefinitio
88

99
if (ruleConfig && ruleConfig instanceof Map) {
1010
for (const ruleName of ruleConfig.keys()) {
11-
const matchedRule = new DynamicRule(ruleName);
12-
const configuredSeverity = ruleConfig.get(ruleName)['severity'];
13-
if (configuredSeverity && (configuredSeverity === "error" || configuredSeverity === "warning" || configuredSeverity === "note")) {
14-
severity = configuredSeverity;
15-
} else {
16-
throw new Error(`Invalid severity "${configuredSeverity}" provided for rule "${ruleName}".`);
11+
try{
12+
const matchedRule = new DynamicRule(ruleName);
13+
const configuredSeverity = ruleConfig.get(ruleName)['severity'];
14+
if (configuredSeverity && (configuredSeverity === "error" || configuredSeverity === "warning" || configuredSeverity === "note")) {
15+
severity = configuredSeverity;
16+
}
17+
matchedRule['severity'] = severity;
18+
matchedRules.push(matchedRule);
19+
} catch (error) {
20+
console.log(error.message)
1721
}
18-
matchedRule['severity'] = severity;
19-
matchedRules.push(matchedRule);
2022
}
2123
} else {
2224
// tslint:disable-next-line:forin

src/main/libs/ScanFlows.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import { IRuleDefinition } from '../interfaces/IRuleDefinition';
2-
import { Flow } from '../models/Flow';
3-
import { RuleResult } from '../models/RuleResult';
4-
import { ScanResult } from '../models/ScanResult';
52
import { GetRuleDefinitions } from './GetRuleDefinitions';
63
import { keys } from './Keys';
4+
import * as core from '../../index';
75

8-
export function ScanFlows(flows: Flow[], rulesConfig?: Map<string, {}>): ScanResult[] {
6+
export function ScanFlows(flows: core.Flow[], rulesConfig?: Map<string, {}>): core.ScanResult[] {
97

10-
const flowResults: ScanResult[] = [];
8+
const flowResults: core.ScanResult[] = [];
119
let selectedRules: IRuleDefinition[] = [];
1210
if (rulesConfig) {
1311
selectedRules = GetRuleDefinitions(rulesConfig);
@@ -18,7 +16,7 @@ export function ScanFlows(flows: Flow[], rulesConfig?: Map<string, {}>): ScanRes
1816
for (const flow of flows) {
1917

2018
try{
21-
const ruleResults: RuleResult[] = [];
19+
const ruleResults: core.RuleResult[] = [];
2220
for (const rule of selectedRules) {
2321
if (rule.supportedTypes.includes(flow.type[0])) {
2422
try {
@@ -39,7 +37,7 @@ export function ScanFlows(flows: Flow[], rulesConfig?: Map<string, {}>): ScanRes
3937
}
4038
}
4139
}
42-
flowResults.push(new ScanResult(flow, ruleResults));
40+
flowResults.push(new core.ScanResult(flow, ruleResults));
4341
}
4442
catch (error) {
4543
console.log(error.message)

src/main/models/Flow.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FlowElement } from './FlowElement';
44
import { FlowVariable } from './FlowVariable';
55
import * as p from 'path';
66

7-
export class Flow {
7+
export default class Flow {
88

99
public label: string;
1010
public xmldata;

0 commit comments

Comments
 (0)