I want to make ruby-lint usable.

ruby-lint, as described by its author:

ruby-lint is a static code analysis tool for Ruby. It is inspired by tools such as jshint, flake8 and similar tools. ruby-lint primarily focuses on logic related errors such as the use of non existing variables instead of focusing on [style] (e.g. the amount of characters per line).

The features of ruby-lint include but are not limited to the detection of unused variables, the use of undefined methods and method calls with invalid argument amounts and more. More in-depth analysis will be added over time.

The aim of ruby-lint is to provide analysis that is as accurate as possible. However, due to the dynamic nature of Ruby and the sheer amount of meta-magic in third-party code there will at times be false positives. Analysis can be improved by documenting your code using YARD, in particular the @param and @return tags are used by ruby-lint to obtain extra information when processing methods.

Given the following code:

class Person
  def initialize(name)
    # oops, not setting [@name](/users/name)
  end

  def greet
    return "Hello, #{[@name](/users/name)}"
  end
end

user     = Person.new('Alice')
greeting = user.greet

user.greet(:foo)

Analysing this file using ruby-lint (with the default settings) would result in the following output:

test.rb: error: line 7, column 22: undefined instance variable [@name](/users/name)
test.rb: warning: line 12, column 1: unused local variable greeting
test.rb: error: line 14, column 1: wrong number of arguments for 'greet' (expected 0 but got 1)

If you have 100% test coverage, ruby-lint does not add value. But I have many projects that are less covered.

The problem with ruby-lint is that it produces way too many obvious false positives on all projects that I've tried it on.

I have started fixing it during the CSM Workshop 2016 and fixed some bugs and reported others.

The Hack Week project aims to make ruby-lint useful enough that it can be deployed in CI tests.

Looking for mad skills in:

Nothing? Add some keywords!

This project is part of:

Hack Week 14


Comments

Similar Projects

This project is one of its kind!