prontolabs / pronto-rubocop

Pronto runner for Rubocop, ruby code analyzer
MIT License
83 stars 74 forks source link

Method cops not found when changing the method #46

Open alexkuebo opened 4 years ago

alexkuebo commented 4 years ago

We've got a simple method:

  def update
    user = User.authorized.find(params[:id])
    check_auth :edit_user, user
    update_from_params! user
    respond_with_ok
  end

After changing or adding some lines:

  def update
    user = User.authorized.find(params[:id])
    check_auth :edit_user, user
    update_from_params! user
    update_from_params! user
    update_from_params! user
    update_from_params! user
    update_from_params! user
    update_from_params! user
    update_from_params! user
    update_from_params! user
    update_from_params! user
    respond_with_ok
  end

There is a rubocop warning like "AbcSize" or "MethodLength":

app/controllers/users_controller.rb:37:3: C: Metrics/AbcSize: Assignment Branch Condition size for update is too high. [15.03/15]
  def update ...
  ^^^^^^^^^^
app/controllers/users_controller.rb:37:3: C: Metrics/MethodLength: Method has too many lines. [12/10]
  def update ...
  ^^^^^^^^^^

Because the issues are in the line where the method is defined and this line wasn't changed, the issue is not reported by pronto.

ashkulz commented 3 years ago

That's a bit tricky, as it's not part of the diff. Not sure there's an easy way to detect this without parsing the file itself, though 🤔