shapeable/prototype-web

View on GitHub

Showing 939 of 939 total issues

Method has too many lines. [12/10]
Open

        def create
            if params[:comment]
                comment = Comment.new(comments_params)
                if comment.save
                    respond_to do |format|

This cop checks if the length of a method exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

Assignment Branch Condition size for create is too high. [17.15/15]
Open

  def create
    if get_alarm(params[:dashboard])
      alarm = Alarm.find(get_alarm(params[:dashboard][:message]))
      ApiGeneralHazards.perform_async(alarm.id, params[:dashboard][:description])
      flash[:notice] = t("alert.sent") 

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method has too many lines. [12/10]
Open

  def send_message(value)
    UserAlarm.all.each do |user_alarm|
        if (user_alarm.alarm_id.to_s == Alarm.find_by(name: value).id.to_s) && Message.find_by_user_id_and_alarm_id(user_alarm.user_id, user_alarm.alarm_id).nil?
            user = User.find(user_alarm.user_id)
            if user.email_actived

This cop checks if the length of a method exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

Assignment Branch Condition size for perform is too high. [17.58/15]
Open

  def perform(alert_id, message)
    begin
        UserAlarm.all.each do |user_alert|
            if user_alert.alarm_id.to_s == alert_id.to_s
                user = User.find(user_alert.user_id)

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method has too many lines. [11/10]
Open

        def get_alarms(alarms)
            return alarms.collect do |alarm|
                {id: alarm.id,
                name: alarm.name,
                name_es: alarm.name_es,

This cop checks if the length of a method exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

Assignment Branch Condition size for create is too high. [15.17/15]
Open

        def create
            if params[:comment]
                comment = Comment.new(comments_params)
                if comment.save
                    respond_to do |format|

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method parse_json_value has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
Open

  def parse_json_value(json_value, value, type)
    if !json_value['features'].nil? && json_value['features'].count > 0
        json_value['features'].each do |feature|
            if type == "weather"
                end_date = feature['attributes']['end_date']
Severity: Minor
Found in web-app/app/workers/api_weather_hazards.rb - About 1 hr to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Similar blocks of code found in 2 locations. Consider refactoring.
Open

            if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e';
Severity: Major
Found in web-app/public/jquery.tipsy.js and 1 other location - About 1 hr to fix
web-app/public/jquery.tipsy.js on lines 330..330

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 60.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Similar blocks of code found in 2 locations. Consider refactoring.
Open

            if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's';
Severity: Major
Found in web-app/public/jquery.tipsy.js and 1 other location - About 1 hr to fix
web-app/public/jquery.tipsy.js on lines 329..329

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 60.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Function garbageCollect has 27 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    var garbageCollect = (function() {
        var currentInterval;
        var to = null;
        var tipsies = [];

Severity: Minor
Found in web-app/public/jquery.tipsy.js - About 1 hr to fix

    Method send_message has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
    Open

      def send_message(value)
        UserAlarm.all.each do |user_alarm|
            if (user_alarm.alarm_id.to_s == Alarm.find_by(name: value).id.to_s) && Message.find_by_user_id_and_alarm_id(user_alarm.user_id, user_alarm.alarm_id).nil?
                user = User.find(user_alarm.user_id)
                if user.email_actived
    Severity: Minor
    Found in web-app/app/workers/api_weather_hazards.rb - About 55 mins to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Method perform has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
    Open

      def perform(alert_id, message)
        begin
            UserAlarm.all.each do |user_alert|
                if user_alert.alarm_id.to_s == alert_id.to_s
                    user = User.find(user_alert.user_id)
    Severity: Minor
    Found in web-app/app/workers/api_general_hazards.rb - About 55 mins to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Avoid deeply nested control flow statements.
    Open

                                    unless alarm.nil?
                                        UserAlarm.create(user_id: user.id, alarm_id: alarm.id)
                                    end
    Severity: Major
    Found in web-app/app/controllers/api/v1/users_controller.rb - About 45 mins to fix

      Block has too many lines. [30/25]
      Open

        namespace :api, defaults: { format: 'json' } do
          scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do
            resources :users do
              collection do
                get 'index'
      Severity: Minor
      Found in web-app/config/routes.rb by rubocop

      This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

      Block has too many lines. [28/25]
      Open

          scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do
            resources :users do
              collection do
                get 'index'
                get 'show'
      Severity: Minor
      Found in web-app/config/routes.rb by rubocop

      This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

      Missing top-level class documentation comment.
      Open

      class UserAlarm < ApplicationRecord
      Severity: Minor
      Found in web-app/app/models/user_alarm.rb by rubocop

      This cop checks for missing top-level documentation of classes and modules. Classes with no body are exempt from the check and so are namespace modules - modules that have nothing in their bodies except classes, other modules, or constant definitions.

      The documentation requirement is annulled if the class or module has a "#:nodoc:" comment next to it. Likewise, "#:nodoc: all" does the same for all its children.

      Example:

      # bad
      class Person
        # ...
      end
      
      # good
      # Description/Explanation of Person class
      class Person
        # ...
      end

      Indent when as deep as case.
      Open

            when :notice

      This cop checks how the whens of a case expression are indented in relation to its case or end keyword.

      It will register a separate offense for each misaligned when.

      Example:

      # If Layout/EndAlignment is set to keyword style (default)
      # *case* and *end* should always be aligned to same depth,
      # and therefore *when* should always be aligned to both -
      # regardless of configuration.
      
      # bad for all styles
      case n
        when 0
          x * 2
        else
          y / 3
      end
      
      # good for all styles
      case n
      when 0
        x * 2
      else
        y / 3
      end

      Example: EnforcedStyle: case (default)

      # if EndAlignment is set to other style such as
      # start_of_line (as shown below), then *when* alignment
      # configuration does have an effect.
      
      # bad
      a = case n
      when 0
        x * 2
      else
        y / 3
      end
      
      # good
      a = case n
          when 0
            x * 2
          else
            y / 3
      end

      Example: EnforcedStyle: end

      # bad
      a = case n
          when 0
            x * 2
          else
            y / 3
      end
      
      # good
      a = case n
      when 0
        x * 2
      else
        y / 3
      end

      Align else with when.
      Open

          else

      This cops checks the alignment of else keywords. Normally they should be aligned with an if/unless/while/until/begin/def keyword, but there are special cases when they should follow the same rules as the alignment of end.

      Example:

      # bad
      if something
        code
       else
        code
      end
      
      # bad
      if something
        code
       elsif something
        code
      end
      
      # good
      if something
        code
      else
        code
      end

      Unnecessary spacing detected.
      Open

            I18n.locale == :en ?  ['English','Spanish'] : ['Ingles','Español']

      This cop checks for extra/unnecessary whitespace.

      Example:

      # good if AllowForAlignment is true
      name      = "RuboCop"
      # Some comment and an empty line
      
      website  += "/bbatsov/rubocop" unless cond
      puts        "rubocop"          if     debug
      
      # bad for any configuration
      set_app("RuboCop")
      website  = "https://github.com/bbatsov/rubocop"

      Space missing after comma.
      Open

          I18n.locale == :en ?  ['All Regions','North California', 'South California'] : ['Todas las regiones','Norte de California','Sur de California']

      Checks for comma (,) not followed by some kind of space.

      Example:

      # bad
      [1,2]
      { foo:bar,}
      
      # good
      [1, 2]
      { foo:bar, }
      Severity
      Category
      Status
      Source
      Language