Skip to content

Commit 71bddfc

Browse files
authored
Merge pull request #294 from HaxeCheckstyle/#293
update for #293
2 parents 774d414 + 24eac51 commit 71bddfc

File tree

5 files changed

+33
-6
lines changed

5 files changed

+33
-6
lines changed

haxelib.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
"contributors": [
1717
"adireddy"
1818
],
19-
"releasenote": "bug fixes",
20-
"version": "2.1.3",
19+
"releasenote": "enhancement to RedundantModifier check",
20+
"version": "2.1.4",
2121
"url": "https://github.com/HaxeCheckstyle/haxe-checkstyle",
2222
"dependencies": {
2323

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "checkstyle",
3-
"version": "2.1.3",
3+
"version": "2.1.4",
44
"description": "Automated code analysis ideal for projects that want to enforce a coding standard.",
55
"repository": {
66
"type": "git",

resources/default-config.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,8 @@
373373
},
374374
{
375375
"props": {
376+
"enforcePrivate": false,
377+
"enforcePublic": false,
376378
"enforcePublicPrivate": false
377379
},
378380
"type": "RedundantModifier"

src/checkstyle/checks/modifier/RedundantModifierCheck.hx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,36 @@ using checkstyle.utils.FieldUtils;
1010
class RedundantModifierCheck extends Check {
1111

1212
public var enforcePublicPrivate:Bool;
13+
public var enforcePublic:Bool;
14+
public var enforcePrivate:Bool;
1315

1416
public function new() {
1517
super(AST);
1618
enforcePublicPrivate = false;
19+
enforcePublic = false;
20+
enforcePrivate = false;
1721
categories = [Category.STYLE, Category.CLARITY];
1822
points = 1;
1923
}
2024

2125
override function actualRun() {
26+
if (enforcePublicPrivate) {
27+
enforcePrivate = true;
28+
enforcePublic = true;
29+
}
2230
forEachField(checkField);
2331
}
2432

2533
function checkField(f:Field, p:ParentType) {
2634
var isDefaultPrivate = f.isDefaultPrivate(p);
2735
var implicitAccess = isDefaultPrivate ? "private" : "public";
28-
if (enforcePublicPrivate) {
29-
if (!f.access.contains(APublic) && !f.access.contains(APrivate)) {
36+
if (!f.access.contains(APublic) && !f.access.contains(APrivate)) {
37+
if ((!isDefaultPrivate && enforcePublic) || (isDefaultPrivate && enforcePrivate)) {
3038
logPos('Missing "$implicitAccess" keyword for "${f.name}"', f.pos);
3139
}
3240
}
33-
else if ((isDefaultPrivate && f.access.contains(APrivate)) || (!isDefaultPrivate && f.access.contains(APublic))) {
41+
42+
if ((!enforcePrivate && isDefaultPrivate && f.access.contains(APrivate)) || (!enforcePublic && !isDefaultPrivate && f.access.contains(APublic))) {
3443
logPos('"$implicitAccess" keyword is redundant for "${f.name}"', f.pos);
3544
}
3645
}

test/checks/modifier/RedundantModifierCheckTest.hx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,22 @@ class RedundantModifierCheckTest extends CheckTestCase<RedundantModifierCheckTes
7979
assertNoMsg(check, TEST14);
8080
assertNoMsg(check, TEST15);
8181
}
82+
83+
public function testJustPublic() {
84+
var check = new RedundantModifierCheck();
85+
check.enforcePublic = true;
86+
assertMsg(check, TEST3, 'Missing "public" keyword for "a"');
87+
assertMsg(check, TEST1, '"private" keyword is redundant for "a"');
88+
assertNoMsg(check, TEST4);
89+
}
90+
91+
public function testJustPrivate() {
92+
var check = new RedundantModifierCheck();
93+
check.enforcePrivate = true;
94+
assertMsg(check, TEST12, 'Missing "private" keyword for "foo"');
95+
assertMsg(check, TEST2, '"public" keyword is redundant for "a"');
96+
assertNoMsg(check, TEST3);
97+
}
8298
}
8399

84100
@:enum

0 commit comments

Comments
 (0)