class BaseChecker {
  constructor(reporter, ruleId, meta) {
    this.reporter = reporter
    this.ruleId = ruleId
    this.meta = meta
  }

  error(ctx, message) {
    this.reporter.error(ctx, this.ruleId, message)
  }

  errorAt(line, column, message) {
    this.reporter.errorAt(line, column, this.ruleId, message)
  }

  warn(ctx, message) {
    this.reporter.warn(ctx, this.ruleId, message)
  }
}

module.exports = BaseChecker

@@ -145,32 +145,37 @@
 ror(ctx, message
+, fix
 ) %7B%0A    this.rep
@@ -175,48 +175,39 @@
 his.
-r
+addR
 eport
-er.
+('
 error
-(
+', 
 ctx,
- this.ruleId,
  message
 )%0A  
@@ -194,32 +194,37 @@
 r', ctx, message
+, fix
 )%0A  %7D%0A%0A  errorAt
@@ -237,32 +237,37 @@
  column, message
+, fix
 ) %7B%0A    this.rep
@@ -267,50 +267,129 @@
 his.
-reporter.errorAt(line, column, this.ruleId
+error(%7B loc: %7B start: %7B line, column %7D %7D %7D, message, fix)%0A  %7D%0A%0A  warn(ctx, message, fix) %7B%0A    this.addReport('warn', ctx
 , me
@@ -389,24 +389,29 @@
 ctx, message
+, fix
 )%0A  %7D%0A%0A  war
@@ -399,37 +399,48 @@
 ge, fix)%0A  %7D%0A%0A  
-warn(
+addReport(type, 
 ctx, message) %7B%0A
@@ -435,16 +435,21 @@
  message
+, fix
 ) %7B%0A    
@@ -465,13 +465,14 @@
 rter
-.warn
+%5Btype%5D
 (ctx
@@ -493,16 +493,48 @@
  message
+, this.meta.fixable ? fix : null
 )%0A  %7D%0A%7D%0A

Extend base checker to use fixer