@openrewrite/recipes-code-quality 0.1.0-20260409-154017
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/dist/all-branches-identical.d.ts +10 -0
- package/dist/all-branches-identical.d.ts.map +1 -0
- package/dist/all-branches-identical.js +116 -0
- package/dist/all-branches-identical.js.map +1 -0
- package/dist/boolean-checks-not-inverted.d.ts +10 -0
- package/dist/boolean-checks-not-inverted.d.ts.map +1 -0
- package/dist/boolean-checks-not-inverted.js +117 -0
- package/dist/boolean-checks-not-inverted.js.map +1 -0
- package/dist/collapsible-if-statements.d.ts +10 -0
- package/dist/collapsible-if-statements.d.ts.map +1 -0
- package/dist/collapsible-if-statements.js +119 -0
- package/dist/collapsible-if-statements.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/merge-identical-branches.d.ts +10 -0
- package/dist/merge-identical-branches.d.ts.map +1 -0
- package/dist/merge-identical-branches.js +118 -0
- package/dist/merge-identical-branches.js.map +1 -0
- package/dist/remove-duplicate-conditions.d.ts +10 -0
- package/dist/remove-duplicate-conditions.d.ts.map +1 -0
- package/dist/remove-duplicate-conditions.js +141 -0
- package/dist/remove-duplicate-conditions.js.map +1 -0
- package/dist/remove-self-assignment.d.ts +10 -0
- package/dist/remove-self-assignment.d.ts.map +1 -0
- package/dist/remove-self-assignment.js +86 -0
- package/dist/remove-self-assignment.js.map +1 -0
- package/dist/remove-unconditional-value-overwrite.d.ts +10 -0
- package/dist/remove-unconditional-value-overwrite.d.ts.map +1 -0
- package/dist/remove-unconditional-value-overwrite.js +112 -0
- package/dist/remove-unconditional-value-overwrite.js.map +1 -0
- package/dist/simplify-boolean-literal.d.ts +9 -0
- package/dist/simplify-boolean-literal.d.ts.map +1 -0
- package/dist/simplify-boolean-literal.js +179 -0
- package/dist/simplify-boolean-literal.js.map +1 -0
- package/dist/simplify-redundant-logical-expression.d.ts +10 -0
- package/dist/simplify-redundant-logical-expression.d.ts.map +1 -0
- package/dist/simplify-redundant-logical-expression.js +63 -0
- package/dist/simplify-redundant-logical-expression.js.map +1 -0
- package/package.json +39 -0
- package/src/all-branches-identical.ts +133 -0
- package/src/boolean-checks-not-inverted.ts +144 -0
- package/src/collapsible-if-statements.ts +162 -0
- package/src/index.ts +34 -0
- package/src/merge-identical-branches.ts +149 -0
- package/src/remove-duplicate-conditions.ts +165 -0
- package/src/remove-self-assignment.ts +98 -0
- package/src/remove-unconditional-value-overwrite.ts +128 -0
- package/src/simplify-boolean-literal.ts +220 -0
- package/src/simplify-redundant-logical-expression.ts +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-identical-branches.js","sourceRoot":"","sources":["../src/merge-identical-branches.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class RemoveDuplicateConditions extends Recipe {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
tags: string[];
|
|
7
|
+
estimatedEffortPerOccurrence: number;
|
|
8
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=remove-duplicate-conditions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-duplicate-conditions.d.ts","sourceRoot":"","sources":["../src/remove-duplicate-conditions.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,gBAAgB,EAAW,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAYpF,qBAAa,yBAA0B,SAAQ,MAAM;IACjD,IAAI,SAAkE;IACtE,WAAW,SAAsD;IACjE,WAAW,SAEgC;IAC3C,IAAI,WAAmB;IACvB,4BAA4B,SAAM;IAE5B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA+B9D"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RemoveDuplicateConditions = void 0;
|
|
13
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
14
|
+
const javascript_1 = require("@openrewrite/rewrite/javascript");
|
|
15
|
+
const java_1 = require("@openrewrite/rewrite/java");
|
|
16
|
+
class RemoveDuplicateConditions extends rewrite_1.Recipe {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.name = "org.openrewrite.javascript.cleanup.RemoveDuplicateConditions";
|
|
20
|
+
this.displayName = "Remove duplicate conditions in if/else-if chains";
|
|
21
|
+
this.description = "Remove `else if` branches whose condition is identical to an earlier " +
|
|
22
|
+
"branch in the same `if`/`else if` chain, since the duplicate branch " +
|
|
23
|
+
"is dead code that can never execute.";
|
|
24
|
+
this.tags = ["RSPEC-S1862"];
|
|
25
|
+
this.estimatedEffortPerOccurrence = 10;
|
|
26
|
+
}
|
|
27
|
+
editor() {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
30
|
+
visitIf(ifStmt, ctx) {
|
|
31
|
+
const _super = Object.create(null, {
|
|
32
|
+
visitIf: { get: () => super.visitIf }
|
|
33
|
+
});
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
ifStmt = (yield _super.visitIf.call(this, ifStmt, ctx));
|
|
36
|
+
const parentCursor = this.cursor.parent;
|
|
37
|
+
if (parentCursor) {
|
|
38
|
+
const parentIf = parentCursor.firstEnclosing((n) => n.kind === java_1.J.Kind.If);
|
|
39
|
+
if (parentIf) {
|
|
40
|
+
return ifStmt;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const result = yield removeDuplicates(ifStmt);
|
|
44
|
+
if (result === ifStmt) {
|
|
45
|
+
return ifStmt;
|
|
46
|
+
}
|
|
47
|
+
return yield this.produceJava(ifStmt, ctx, draft => {
|
|
48
|
+
Object.assign(draft, result);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.RemoveDuplicateConditions = RemoveDuplicateConditions;
|
|
57
|
+
function printExpr(node) {
|
|
58
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
const p = (0, rewrite_1.printer)("org.openrewrite.javascript.tree.JS$CompilationUnit");
|
|
60
|
+
return (yield p.print(node)).trim();
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function expressionsEqual(a, b) {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
return (yield printExpr(a)) === (yield printExpr(b));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function removeDuplicates(ifStmt) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const seen = [ifStmt.ifCondition.tree.element];
|
|
71
|
+
let result = ifStmt;
|
|
72
|
+
let changed = false;
|
|
73
|
+
let current = ifStmt;
|
|
74
|
+
while (current.elsePart) {
|
|
75
|
+
const body = current.elsePart.body.element;
|
|
76
|
+
if (body.kind !== java_1.J.Kind.If) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
const elseIf = body;
|
|
80
|
+
const cond = elseIf.ifCondition.tree.element;
|
|
81
|
+
let isDuplicate = false;
|
|
82
|
+
for (const prev of seen) {
|
|
83
|
+
if (yield expressionsEqual(prev, cond)) {
|
|
84
|
+
isDuplicate = true;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (isDuplicate) {
|
|
89
|
+
const newElse = elseIf.elsePart;
|
|
90
|
+
result = replaceElse(result, current, newElse);
|
|
91
|
+
changed = true;
|
|
92
|
+
const updated = findById(result, current.id);
|
|
93
|
+
if (updated) {
|
|
94
|
+
current = updated;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
seen.push(cond);
|
|
102
|
+
current = elseIf;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return changed ? result : ifStmt;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function replaceElse(root, target, newElse) {
|
|
109
|
+
if (root.id === target.id) {
|
|
110
|
+
return Object.assign(Object.assign({}, root), { elsePart: newElse });
|
|
111
|
+
}
|
|
112
|
+
const elsePart = root.elsePart;
|
|
113
|
+
if (!elsePart) {
|
|
114
|
+
return root;
|
|
115
|
+
}
|
|
116
|
+
const body = elsePart.body.element;
|
|
117
|
+
if (body.kind !== java_1.J.Kind.If) {
|
|
118
|
+
return root;
|
|
119
|
+
}
|
|
120
|
+
const branch = body;
|
|
121
|
+
const updated = replaceElse(branch, target, newElse);
|
|
122
|
+
if (updated === branch) {
|
|
123
|
+
return root;
|
|
124
|
+
}
|
|
125
|
+
return Object.assign(Object.assign({}, root), { elsePart: Object.assign(Object.assign({}, elsePart), { body: Object.assign(Object.assign({}, elsePart.body), { element: updated }) }) });
|
|
126
|
+
}
|
|
127
|
+
function findById(root, id) {
|
|
128
|
+
if (root.id === id) {
|
|
129
|
+
return root;
|
|
130
|
+
}
|
|
131
|
+
const elsePart = root.elsePart;
|
|
132
|
+
if (!elsePart) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
const body = elsePart.body.element;
|
|
136
|
+
if (body.kind === java_1.J.Kind.If) {
|
|
137
|
+
return findById(body, id);
|
|
138
|
+
}
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=remove-duplicate-conditions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-duplicate-conditions.js","sourceRoot":"","sources":["../src/remove-duplicate-conditions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class RemoveSelfAssignment extends Recipe {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
tags: string[];
|
|
7
|
+
estimatedEffortPerOccurrence: number;
|
|
8
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=remove-self-assignment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-self-assignment.d.ts","sourceRoot":"","sources":["../src/remove-self-assignment.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,gBAAgB,EAAW,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAgBpF,qBAAa,oBAAqB,SAAQ,MAAM;IAC5C,IAAI,SAA6D;IACjE,WAAW,SAA6B;IACxC,WAAW,SAEmC;IAC9C,IAAI,WAAmB;IACvB,4BAA4B,SAAK;IAE3B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAgC9D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RemoveSelfAssignment = void 0;
|
|
13
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
14
|
+
const javascript_1 = require("@openrewrite/rewrite/javascript");
|
|
15
|
+
const java_1 = require("@openrewrite/rewrite/java");
|
|
16
|
+
class RemoveSelfAssignment extends rewrite_1.Recipe {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.name = "org.openrewrite.javascript.cleanup.RemoveSelfAssignment";
|
|
20
|
+
this.displayName = "Remove self-assignments";
|
|
21
|
+
this.description = "Removes assignment statements where a variable is assigned to itself, " +
|
|
22
|
+
"such as `x = x` or `this.x = this.x`. These statements have no effect and " +
|
|
23
|
+
"typically indicate a programming error.";
|
|
24
|
+
this.tags = ["RSPEC-S1656"];
|
|
25
|
+
this.estimatedEffortPerOccurrence = 3;
|
|
26
|
+
}
|
|
27
|
+
editor() {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
30
|
+
visitBlock(block, ctx) {
|
|
31
|
+
const _super = Object.create(null, {
|
|
32
|
+
visitBlock: { get: () => super.visitBlock }
|
|
33
|
+
});
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
block = (yield _super.visitBlock.call(this, block, ctx));
|
|
36
|
+
const stmts = block.statements;
|
|
37
|
+
if (stmts.length === 0) {
|
|
38
|
+
return block;
|
|
39
|
+
}
|
|
40
|
+
const toRemove = new Set();
|
|
41
|
+
for (let i = 0; i < stmts.length; i++) {
|
|
42
|
+
const assign = getAssignment(stmts[i].element);
|
|
43
|
+
if (assign && (yield isSelfAssignment(assign))) {
|
|
44
|
+
toRemove.add(i);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (toRemove.size === 0) {
|
|
48
|
+
return block;
|
|
49
|
+
}
|
|
50
|
+
const newStmts = stmts.filter((_, idx) => !toRemove.has(idx));
|
|
51
|
+
return this.produceJava(block, ctx, draft => {
|
|
52
|
+
draft.statements = newStmts;
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.RemoveSelfAssignment = RemoveSelfAssignment;
|
|
61
|
+
function getAssignment(stmt) {
|
|
62
|
+
if (stmt.kind === javascript_1.JS.Kind.ExpressionStatement) {
|
|
63
|
+
const expr = stmt.expression;
|
|
64
|
+
if (expr.kind === java_1.J.Kind.Assignment) {
|
|
65
|
+
return expr;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (stmt.kind === java_1.J.Kind.Assignment) {
|
|
69
|
+
return stmt;
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
function printNode(node) {
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const p = (0, rewrite_1.printer)("org.openrewrite.javascript.tree.JS$CompilationUnit");
|
|
76
|
+
return (yield p.print(node)).trim();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function isSelfAssignment(assign) {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
const variable = assign.variable;
|
|
82
|
+
const value = assign.assignment.element;
|
|
83
|
+
return (yield printNode(variable)) === (yield printNode(value));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=remove-self-assignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-self-assignment.js","sourceRoot":"","sources":["../src/remove-self-assignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class RemoveUnconditionalValueOverwrite extends Recipe {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
tags: string[];
|
|
7
|
+
estimatedEffortPerOccurrence: number;
|
|
8
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=remove-unconditional-value-overwrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-unconditional-value-overwrite.d.ts","sourceRoot":"","sources":["../src/remove-unconditional-value-overwrite.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,gBAAgB,EAAW,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAepF,qBAAa,iCAAkC,SAAQ,MAAM;IACzD,IAAI,SAA0E;IAC9E,WAAW,SAA2C;IACtD,WAAW,SAEuB;IAClC,IAAI,WAAmB;IACvB,4BAA4B,SAAK;IAE3B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA0C9D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RemoveUnconditionalValueOverwrite = void 0;
|
|
13
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
14
|
+
const javascript_1 = require("@openrewrite/rewrite/javascript");
|
|
15
|
+
const java_1 = require("@openrewrite/rewrite/java");
|
|
16
|
+
class RemoveUnconditionalValueOverwrite extends rewrite_1.Recipe {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.name = "org.openrewrite.javascript.cleanup.RemoveUnconditionalValueOverwrite";
|
|
20
|
+
this.displayName = "Remove unconditional value overwrites";
|
|
21
|
+
this.description = "Remove consecutive assignments that write to the same object property " +
|
|
22
|
+
"or bracket-accessed key, since the first value is immediately " +
|
|
23
|
+
"overwritten and never used.";
|
|
24
|
+
this.tags = ["RSPEC-S4143"];
|
|
25
|
+
this.estimatedEffortPerOccurrence = 5;
|
|
26
|
+
}
|
|
27
|
+
editor() {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
30
|
+
visitBlock(block, ctx) {
|
|
31
|
+
const _super = Object.create(null, {
|
|
32
|
+
visitBlock: { get: () => super.visitBlock }
|
|
33
|
+
});
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
block = (yield _super.visitBlock.call(this, block, ctx));
|
|
36
|
+
const stmts = block.statements;
|
|
37
|
+
if (stmts.length < 2) {
|
|
38
|
+
return block;
|
|
39
|
+
}
|
|
40
|
+
const toRemove = new Set();
|
|
41
|
+
for (let i = 0; i < stmts.length - 1; i++) {
|
|
42
|
+
if (toRemove.has(i)) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const aAssign = getAssignment(stmts[i].element);
|
|
46
|
+
if (!aAssign || !isPropertyAssign(aAssign)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const bAssign = getAssignment(stmts[i + 1].element);
|
|
50
|
+
if (!bAssign) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (yield isDuplicateWrite(aAssign, bAssign)) {
|
|
54
|
+
toRemove.add(i);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (toRemove.size === 0) {
|
|
58
|
+
return block;
|
|
59
|
+
}
|
|
60
|
+
const newStmts = stmts.filter((_, idx) => !toRemove.has(idx));
|
|
61
|
+
return this.produceJava(block, ctx, draft => {
|
|
62
|
+
draft.statements = newStmts;
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.RemoveUnconditionalValueOverwrite = RemoveUnconditionalValueOverwrite;
|
|
71
|
+
function getAssignment(stmt) {
|
|
72
|
+
if (stmt.kind === javascript_1.JS.Kind.ExpressionStatement) {
|
|
73
|
+
const expr = stmt.expression;
|
|
74
|
+
if (expr.kind === java_1.J.Kind.Assignment) {
|
|
75
|
+
return expr;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (stmt.kind === java_1.J.Kind.Assignment) {
|
|
79
|
+
return stmt;
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
function isPropertyAssign(assign) {
|
|
84
|
+
const v = assign.variable;
|
|
85
|
+
return v.kind === java_1.J.Kind.ArrayAccess || v.kind === java_1.J.Kind.FieldAccess;
|
|
86
|
+
}
|
|
87
|
+
function printNode(node) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const p = (0, rewrite_1.printer)("org.openrewrite.javascript.tree.JS$CompilationUnit");
|
|
90
|
+
return yield p.print(node);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function isDuplicateWrite(a, b) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const va = a.variable;
|
|
96
|
+
const vb = b.variable;
|
|
97
|
+
if (va.kind === java_1.J.Kind.ArrayAccess && vb.kind === java_1.J.Kind.ArrayAccess) {
|
|
98
|
+
const aa = va;
|
|
99
|
+
const ab = vb;
|
|
100
|
+
return (yield printNode(aa.indexed)) === (yield printNode(ab.indexed)) &&
|
|
101
|
+
(yield printNode(aa.dimension.index.element)) === (yield printNode(ab.dimension.index.element));
|
|
102
|
+
}
|
|
103
|
+
if (va.kind === java_1.J.Kind.FieldAccess && vb.kind === java_1.J.Kind.FieldAccess) {
|
|
104
|
+
const fa = va;
|
|
105
|
+
const fb = vb;
|
|
106
|
+
return fa.name.element.simpleName === fb.name.element.simpleName &&
|
|
107
|
+
(yield printNode(fa.target)) === (yield printNode(fb.target));
|
|
108
|
+
}
|
|
109
|
+
return false;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=remove-unconditional-value-overwrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-unconditional-value-overwrite.js","sourceRoot":"","sources":["../src/remove-unconditional-value-overwrite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class SimplifyBooleanLiteral extends Recipe {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
tags: string[];
|
|
7
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=simplify-boolean-literal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify-boolean-literal.d.ts","sourceRoot":"","sources":["../src/simplify-boolean-literal.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAa3E,qBAAa,sBAAuB,SAAQ,MAAM;IAC9C,IAAI,SAA+D;IACnE,WAAW,SAA0C;IACrD,WAAW,SAE6D;IACxE,IAAI,WAAmB;IAEjB,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAuL9D"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SimplifyBooleanLiteral = void 0;
|
|
13
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
14
|
+
const javascript_1 = require("@openrewrite/rewrite/javascript");
|
|
15
|
+
class SimplifyBooleanLiteral extends rewrite_1.Recipe {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.name = "org.openrewrite.javascript.cleanup.SimplifyBooleanLiteral";
|
|
19
|
+
this.displayName = "Simplify boolean literal comparisons";
|
|
20
|
+
this.description = "Removes redundant comparisons against boolean literals. " +
|
|
21
|
+
"For example, `x === true` becomes `x` and `x === false` becomes `!x`. " +
|
|
22
|
+
"Handles both strict (`===`/`!==`) and loose (`==`/`!=`) equality.";
|
|
23
|
+
this.tags = ["RSPEC-S1125"];
|
|
24
|
+
}
|
|
25
|
+
editor() {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const equalsTrue = (0, javascript_1.rewrite)(() => {
|
|
28
|
+
const x = (0, javascript_1.capture)();
|
|
29
|
+
return {
|
|
30
|
+
before: (0, javascript_1.pattern) `${x} === true`,
|
|
31
|
+
after: (0, javascript_1.template) `${x}`
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
const trueEquals = (0, javascript_1.rewrite)(() => {
|
|
35
|
+
const x = (0, javascript_1.capture)();
|
|
36
|
+
return {
|
|
37
|
+
before: (0, javascript_1.pattern) `true === ${x}`,
|
|
38
|
+
after: (0, javascript_1.template) `${x}`
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
const equalsFalse = (0, javascript_1.rewrite)(() => {
|
|
42
|
+
const x = (0, javascript_1.capture)();
|
|
43
|
+
return {
|
|
44
|
+
before: (0, javascript_1.pattern) `${x} === false`,
|
|
45
|
+
after: (0, javascript_1.template) `!${x}`
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
const falseEquals = (0, javascript_1.rewrite)(() => {
|
|
49
|
+
const x = (0, javascript_1.capture)();
|
|
50
|
+
return {
|
|
51
|
+
before: (0, javascript_1.pattern) `false === ${x}`,
|
|
52
|
+
after: (0, javascript_1.template) `!${x}`
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
const notEqualsTrue = (0, javascript_1.rewrite)(() => {
|
|
56
|
+
const x = (0, javascript_1.capture)();
|
|
57
|
+
return {
|
|
58
|
+
before: (0, javascript_1.pattern) `${x} !== true`,
|
|
59
|
+
after: (0, javascript_1.template) `!${x}`
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
const trueNotEquals = (0, javascript_1.rewrite)(() => {
|
|
63
|
+
const x = (0, javascript_1.capture)();
|
|
64
|
+
return {
|
|
65
|
+
before: (0, javascript_1.pattern) `true !== ${x}`,
|
|
66
|
+
after: (0, javascript_1.template) `!${x}`
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
const notEqualsFalse = (0, javascript_1.rewrite)(() => {
|
|
70
|
+
const x = (0, javascript_1.capture)();
|
|
71
|
+
return {
|
|
72
|
+
before: (0, javascript_1.pattern) `${x} !== false`,
|
|
73
|
+
after: (0, javascript_1.template) `${x}`
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
const falseNotEquals = (0, javascript_1.rewrite)(() => {
|
|
77
|
+
const x = (0, javascript_1.capture)();
|
|
78
|
+
return {
|
|
79
|
+
before: (0, javascript_1.pattern) `false !== ${x}`,
|
|
80
|
+
after: (0, javascript_1.template) `${x}`
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
const looseEqualsTrue = (0, javascript_1.rewrite)(() => {
|
|
84
|
+
const x = (0, javascript_1.capture)();
|
|
85
|
+
return {
|
|
86
|
+
before: (0, javascript_1.pattern) `${x} == true`,
|
|
87
|
+
after: (0, javascript_1.template) `${x}`
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
const trueLooseEquals = (0, javascript_1.rewrite)(() => {
|
|
91
|
+
const x = (0, javascript_1.capture)();
|
|
92
|
+
return {
|
|
93
|
+
before: (0, javascript_1.pattern) `true == ${x}`,
|
|
94
|
+
after: (0, javascript_1.template) `${x}`
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
const looseEqualsFalse = (0, javascript_1.rewrite)(() => {
|
|
98
|
+
const x = (0, javascript_1.capture)();
|
|
99
|
+
return {
|
|
100
|
+
before: (0, javascript_1.pattern) `${x} == false`,
|
|
101
|
+
after: (0, javascript_1.template) `!${x}`
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
const falseLooseEquals = (0, javascript_1.rewrite)(() => {
|
|
105
|
+
const x = (0, javascript_1.capture)();
|
|
106
|
+
return {
|
|
107
|
+
before: (0, javascript_1.pattern) `false == ${x}`,
|
|
108
|
+
after: (0, javascript_1.template) `!${x}`
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
const looseNotEqualsTrue = (0, javascript_1.rewrite)(() => {
|
|
112
|
+
const x = (0, javascript_1.capture)();
|
|
113
|
+
return {
|
|
114
|
+
before: (0, javascript_1.pattern) `${x} != true`,
|
|
115
|
+
after: (0, javascript_1.template) `!${x}`
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
const trueLooseNotEquals = (0, javascript_1.rewrite)(() => {
|
|
119
|
+
const x = (0, javascript_1.capture)();
|
|
120
|
+
return {
|
|
121
|
+
before: (0, javascript_1.pattern) `true != ${x}`,
|
|
122
|
+
after: (0, javascript_1.template) `!${x}`
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
const looseNotEqualsFalse = (0, javascript_1.rewrite)(() => {
|
|
126
|
+
const x = (0, javascript_1.capture)();
|
|
127
|
+
return {
|
|
128
|
+
before: (0, javascript_1.pattern) `${x} != false`,
|
|
129
|
+
after: (0, javascript_1.template) `${x}`
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
const falseLooseNotEquals = (0, javascript_1.rewrite)(() => {
|
|
133
|
+
const x = (0, javascript_1.capture)();
|
|
134
|
+
return {
|
|
135
|
+
before: (0, javascript_1.pattern) `false != ${x}`,
|
|
136
|
+
after: (0, javascript_1.template) `${x}`
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
const strictRules = equalsTrue
|
|
140
|
+
.orElse(trueEquals)
|
|
141
|
+
.orElse(equalsFalse)
|
|
142
|
+
.orElse(falseEquals)
|
|
143
|
+
.orElse(notEqualsTrue)
|
|
144
|
+
.orElse(trueNotEquals)
|
|
145
|
+
.orElse(notEqualsFalse)
|
|
146
|
+
.orElse(falseNotEquals);
|
|
147
|
+
const looseRules = looseEqualsTrue
|
|
148
|
+
.orElse(trueLooseEquals)
|
|
149
|
+
.orElse(looseEqualsFalse)
|
|
150
|
+
.orElse(falseLooseEquals)
|
|
151
|
+
.orElse(looseNotEqualsTrue)
|
|
152
|
+
.orElse(trueLooseNotEquals)
|
|
153
|
+
.orElse(looseNotEqualsFalse)
|
|
154
|
+
.orElse(falseLooseNotEquals);
|
|
155
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
156
|
+
visitBinary(binary, ctx) {
|
|
157
|
+
const _super = Object.create(null, {
|
|
158
|
+
visitBinary: { get: () => super.visitBinary }
|
|
159
|
+
});
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
binary = (yield _super.visitBinary.call(this, binary, ctx));
|
|
162
|
+
return (yield looseRules.tryOn(this.cursor, binary)) || binary;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
visitBinaryExtensions(binary, ctx) {
|
|
166
|
+
const _super = Object.create(null, {
|
|
167
|
+
visitBinaryExtensions: { get: () => super.visitBinaryExtensions }
|
|
168
|
+
});
|
|
169
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
binary = (yield _super.visitBinaryExtensions.call(this, binary, ctx));
|
|
171
|
+
return (yield strictRules.tryOn(this.cursor, binary)) || binary;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.SimplifyBooleanLiteral = SimplifyBooleanLiteral;
|
|
179
|
+
//# sourceMappingURL=simplify-boolean-literal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify-boolean-literal.js","sourceRoot":"","sources":["../src/simplify-boolean-literal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class SimplifyRedundantLogicalExpression extends Recipe {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
tags: string[];
|
|
7
|
+
estimatedEffortPerOccurrence: number;
|
|
8
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=simplify-redundant-logical-expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify-redundant-logical-expression.d.ts","sourceRoot":"","sources":["../src/simplify-redundant-logical-expression.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,gBAAgB,EAAW,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAcpF,qBAAa,kCAAmC,SAAQ,MAAM;IAC1D,IAAI,SAA2E;IAC/E,WAAW,SAA4C;IACvD,WAAW,SAEoC;IAC/C,IAAI,WAAmB;IACvB,4BAA4B,SAAK;IAE3B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAuB9D"}
|