Skip to content

Commit 2804c81

Browse files
committed
Support multiple insertions at the same line
1 parent 3c60c64 commit 2804c81

3 files changed

Lines changed: 13 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ It assists a centralized build tools team in gently introducing and maintaining
3636
To apply this plugin:
3737

3838
plugins {
39-
id 'nebula.lint' version '0.4.0'
39+
id 'nebula.lint' version '0.10.0'
4040
}
4141

4242
Alternatively:

src/main/groovy/com/netflix/nebula/lint/analyzer/CorrectableStringSource.groovy

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class CorrectableStringSource extends AbstractSourceCode {
99

1010
Map<ASTNode, String> replacements = [:]
1111
List<ASTNode> deletions = []
12-
Map<ASTNode, String> additions = [:]
12+
Map<ASTNode, List<String>> additions = [:].withDefault {[]}
1313

1414
CorrectableStringSource(String source) {
1515
assert source != null
@@ -25,19 +25,22 @@ class CorrectableStringSource extends AbstractSourceCode {
2525

2626
def replacement = replacements.find { it.key.lineNumber-1 == i }
2727
def deletion = deletions.find { it.lineNumber-1 == i }
28-
def addition = additions.find { it.key.lineNumber-1 == i }
28+
def additions = additions.find { it.key.lineNumber-1 == i }
2929

3030
if(replacement) {
31+
// FIXME multiple replacements on the same line
3132
corrections.append(doReplacement(replacement.key, replacement.value))
32-
i += replacement.key.lastLineNumber-replacement.key.lineNumber
33+
i += replacement.key.lastLineNumber - replacement.key.lineNumber
3334
} else if(deletion) {
3435
i += deletion.lastLineNumber-deletion.lineNumber
3536
} else {
3637
corrections.append(lines[i])
3738
}
3839

39-
if(addition) {
40-
corrections.append(addition.value)
40+
if(additions) {
41+
additions.value.each {
42+
corrections.append(it)
43+
}
4144
}
4245
}
4346
corrections.toString()
@@ -65,7 +68,7 @@ class CorrectableStringSource extends AbstractSourceCode {
6568
}
6669

6770
void add(ASTNode node, String addition) {
68-
this.additions[node] = addition
71+
this.additions[node] += addition
6972
}
7073

7174
@Override

src/test/groovy/com/netflix/nebula/lint/rule/GradleLintRuleSpec.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class GradleLintRuleSpec extends AbstractRuleSpec {
8686
correct(rule) == ''
8787
}
8888

89-
def 'add violation with insertion'() {
89+
def 'add violation with multiple insertions'() {
9090
when:
9191
project.buildFile << """
9292
apply plugin: 'java'
@@ -106,6 +106,7 @@ class GradleLintRuleSpec extends AbstractRuleSpec {
106106
void visitGradleDependency(MethodCallExpression call, String conf, GradleDependency dep) {
107107
if(bookmark('lastApplyPlugin')) {
108108
addViolationInsert(call, 'should generate source jar', "\napply plugin: 'nebula.source-jar'", bookmark('lastApplyPlugin'))
109+
addViolationInsert(call, 'should generate javadoc jar', "\napply plugin: 'nebula.javadoc-jar'", bookmark('lastApplyPlugin'))
109110
}
110111
}
111112
}
@@ -114,6 +115,7 @@ class GradleLintRuleSpec extends AbstractRuleSpec {
114115
correct(rule) == """
115116
apply plugin: 'java'
116117
apply plugin: 'nebula.source-jar'
118+
apply plugin: 'nebula.javadoc-jar'
117119
118120
dependencies {
119121
compile 'com.google.guava:guava:18.0'

0 commit comments

Comments
 (0)