I would rather not have individual `Linter`s have to remember to pass `self` in order for the `linter` property to be initialized. Developers will likely forget and this can lead to bugs.

A cleaner way to enforce that a linter is always provided is to define a `create_lint` method on the linter class which handles this for you, e.g.

```ruby
  class Linter
  ...
    def create_lint(filename, location, description, severity = :warning)
      Lint.new(linter, filename, location, description, severity)
    end
  ...
  end
```

As shown above, if we're going to be including the `linter` in the `Lint`, it should be the first argument to the constructor.

After implementing this, you'll need to go back and update all manual creations of `Lint` to use `create_lint` instead.