diff --git a/lint/lint.go b/lint/lint.go
index 5ad9a7a..218c378 100644
--- a/lint/lint.go
+++ b/lint/lint.go
@@ -139,15 +139,19 @@
 		if err != nil {
 			return err
 		}
-		for _, err := range file.Errors {
-			if blameable[err.Line] {
-				l.comment(file.Name, err.Line, err.Severity, err.Message)
-			}
-		}
+		l.addCheckStyleComments(file, blameable)
 	}
 	return nil
 }
 
+func (l *linter) addCheckStyleComments(file checkstyle.File, blameable map[int]bool) {
+	for _, err := range file.Errors {
+		if blameable[err.Line] {
+			l.comment(file.Name, err.Line, err.Severity, err.Message)
+		}
+	}
+}
+
 var fixesIssueRegexp = regexp.MustCompile("(?i)^fixes issue [0-9]{3,}[.]?$")
 var issueRegexp = regexp.MustCompile("(?i)issue [0-9]{3,}")
 var footerRegexp = regexp.MustCompile("^[A-Za-z0-9-]+:")
diff --git a/lint/lint_test.go b/lint/lint_test.go
index 76f0dce..ce25a69 100644
--- a/lint/lint_test.go
+++ b/lint/lint_test.go
@@ -21,6 +21,7 @@
 	"strings"
 	"testing"
 
+	"gwt.googlesource.com/buildglue.git/checkstyle"
 	"gwt.googlesource.com/buildglue.git/gerrit"
 )
 
@@ -30,6 +31,53 @@
 	}
 }
 
+func TestAddCheckStyleComments(t *testing.T) {
+	type testcase struct {
+		errors    []checkstyle.Error
+		blameable []int
+		comments  []gerrit.Comment
+	}
+	tests := []testcase{
+		{
+			errors: []checkstyle.Error{
+				checkstyle.Error{
+					Line:     2,
+					Severity: "warning",
+					Message:  "Warning on line 2",
+				},
+			},
+			blameable: []int{1, 2, 3},
+			comments: []gerrit.Comment{
+				gerrit.Comment{
+					Line:    2,
+					Message: "[warning] Warning on line 2",
+				},
+			},
+		},
+		{
+			errors: []checkstyle.Error{
+				checkstyle.Error{
+					Line:     10,
+					Severity: "error",
+					Message:  "Error far from changed lines",
+				},
+			},
+			blameable: []int{1, 2, 3},
+		},
+	}
+
+	for _, test := range tests {
+		blameableLines := make(map[int]bool)
+		for _, l := range test.blameable {
+			blameableLines[l] = true
+		}
+
+		linter := newLinter("fakeref")
+		linter.addCheckStyleComments(checkstyle.File{Name: "fakefile", Errors: test.errors}, blameableLines)
+		checkEqual(t, test.comments, linter.comments["fakefile"])
+	}
+}
+
 func TestCheckMessage(t *testing.T) {
 	type testcase struct {
 		message  []string
