From 561ee71129c7d40380d384ce93c1f062651de32b Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 6 Apr 2022 14:55:29 +0100 Subject: [PATCH] Rubocop autofix: ambiguous operator precedence This simply adds braces to clarify which mathematical operator comes first. --- .rubocop_todo.yml | 13 ------------- app/controllers/geocoder_controller.rb | 16 ++++++++-------- app/models/user.rb | 4 ++-- lib/bounding_box.rb | 16 ++++++++-------- lib/osm.rb | 18 +++++++++--------- lib/rich_text.rb | 6 +++--- lib/short_link.rb | 10 +++++----- .../api/old_nodes_controller_test.rb | 8 ++++---- test/lib/short_link_test.rb | 4 ++-- 9 files changed, 41 insertions(+), 54 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 8c1ce723c..2e7bc2f59 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -21,19 +21,6 @@ require: Layout/LineLength: Max: 270 -# Offense count: 62 -# Cop supports --auto-correct. -Lint/AmbiguousOperatorPrecedence: - Exclude: - - 'app/controllers/geocoder_controller.rb' - - 'app/models/user.rb' - - 'lib/bounding_box.rb' - - 'lib/osm.rb' - - 'lib/rich_text.rb' - - 'lib/short_link.rb' - - 'test/controllers/api/old_nodes_controller_test.rb' - - 'test/lib/short_link_test.rb' - # Offense count: 34 # Configuration parameters: AllowSafeAssignment. Lint/AssignmentInCondition: diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/geocoder_controller.rb index 7417cab76..48d3505dc 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/geocoder_controller.rb @@ -327,11 +327,11 @@ class GeocoderController < ApplicationController def ddm_to_decdeg(captures) begin Float(captures[0]) - lat = captures[3].casecmp("s").zero? ? -(captures[0].to_f + captures[1].to_f / 60) : captures[0].to_f + captures[1].to_f / 60 - lon = captures[7].casecmp("w").zero? ? -(captures[4].to_f + captures[5].to_f / 60) : captures[4].to_f + captures[5].to_f / 60 + lat = captures[3].casecmp("s").zero? ? -(captures[0].to_f + (captures[1].to_f / 60)) : captures[0].to_f + (captures[1].to_f / 60) + lon = captures[7].casecmp("w").zero? ? -(captures[4].to_f + (captures[5].to_f / 60)) : captures[4].to_f + (captures[5].to_f / 60) rescue StandardError - lat = captures[0].casecmp("s").zero? ? -(captures[1].to_f + captures[2].to_f / 60) : captures[1].to_f + captures[2].to_f / 60 - lon = captures[4].casecmp("w").zero? ? -(captures[5].to_f + captures[6].to_f / 60) : captures[5].to_f + captures[6].to_f / 60 + lat = captures[0].casecmp("s").zero? ? -(captures[1].to_f + (captures[2].to_f / 60)) : captures[1].to_f + (captures[2].to_f / 60) + lon = captures[4].casecmp("w").zero? ? -(captures[5].to_f + (captures[6].to_f / 60)) : captures[5].to_f + (captures[6].to_f / 60) end { :lat => lat, :lon => lon } end @@ -339,11 +339,11 @@ class GeocoderController < ApplicationController def dms_to_decdeg(captures) begin Float(captures[0]) - lat = captures[4].casecmp("s").zero? ? -(captures[0].to_f + (captures[1].to_f + captures[2].to_f / 60) / 60) : captures[0].to_f + (captures[1].to_f + captures[2].to_f / 60) / 60 - lon = captures[9].casecmp("w").zero? ? -(captures[5].to_f + (captures[6].to_f + captures[7].to_f / 60) / 60) : captures[5].to_f + (captures[6].to_f + captures[7].to_f / 60) / 60 + lat = captures[4].casecmp("s").zero? ? -(captures[0].to_f + ((captures[1].to_f + (captures[2].to_f / 60)) / 60)) : captures[0].to_f + ((captures[1].to_f + (captures[2].to_f / 60)) / 60) + lon = captures[9].casecmp("w").zero? ? -(captures[5].to_f + ((captures[6].to_f + (captures[7].to_f / 60)) / 60)) : captures[5].to_f + ((captures[6].to_f + (captures[7].to_f / 60)) / 60) rescue StandardError - lat = captures[0].casecmp("s").zero? ? -(captures[1].to_f + (captures[2].to_f + captures[3].to_f / 60) / 60) : captures[1].to_f + (captures[2].to_f + captures[3].to_f / 60) / 60 - lon = captures[5].casecmp("w").zero? ? -(captures[6].to_f + (captures[7].to_f + captures[8].to_f / 60) / 60) : captures[6].to_f + (captures[7].to_f + captures[8].to_f / 60) / 60 + lat = captures[0].casecmp("s").zero? ? -(captures[1].to_f + ((captures[2].to_f + (captures[3].to_f / 60)) / 60)) : captures[1].to_f + ((captures[2].to_f + (captures[3].to_f / 60)) / 60) + lon = captures[5].casecmp("w").zero? ? -(captures[6].to_f + ((captures[7].to_f + (captures[8].to_f / 60)) / 60)) : captures[6].to_f + ((captures[7].to_f + (captures[8].to_f / 60)) / 60) end { :lat => lat, :lon => lon } end diff --git a/app/models/user.rb b/app/models/user.rb index d357dc4f5..d7bfb2235 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -370,7 +370,7 @@ class User < ApplicationRecord account_age_in_hours = account_age_in_seconds / 3600 recent_messages = messages.where("sent_on >= ?", Time.now.utc - 3600).count active_reports = issues.with_status(:open).sum(:reports_count) - max_messages = account_age_in_hours.ceil + recent_messages - active_reports * 10 + max_messages = account_age_in_hours.ceil + recent_messages - (active_reports * 10) max_messages.clamp(0, Settings.max_messages_per_hour) end @@ -379,7 +379,7 @@ class User < ApplicationRecord account_age_in_hours = account_age_in_seconds / 3600 recent_friends = Friendship.where(:befriendee => self).where("created_at >= ?", Time.now.utc - 3600).count active_reports = issues.with_status(:open).sum(:reports_count) - max_friends = account_age_in_hours.ceil + recent_friends - active_reports * 10 + max_friends = account_age_in_hours.ceil + recent_friends - (active_reports * 10) max_friends.clamp(0, Settings.max_friends_per_hour) end diff --git a/lib/bounding_box.rb b/lib/bounding_box.rb index 1350d69ba..d6b5f45c8 100644 --- a/lib/bounding_box.rb +++ b/lib/bounding_box.rb @@ -39,19 +39,19 @@ class BoundingBox if bbox.complete? if bbox.min_lon < min_lon @min_lon = [-SCALED_LON_LIMIT, - bbox.min_lon + margin * (min_lon - max_lon)].max + bbox.min_lon + (margin * (min_lon - max_lon))].max end if bbox.min_lat < min_lat @min_lat = [-SCALED_LAT_LIMIT, - bbox.min_lat + margin * (min_lat - max_lat)].max + bbox.min_lat + (margin * (min_lat - max_lat))].max end if bbox.max_lon > max_lon @max_lon = [+SCALED_LON_LIMIT, - bbox.max_lon + margin * (max_lon - min_lon)].min + bbox.max_lon + (margin * (max_lon - min_lon))].min end if bbox.max_lat > max_lat @max_lat = [+SCALED_LAT_LIMIT, - bbox.max_lat + margin * (max_lat - min_lat)].min + bbox.max_lat + (margin * (max_lat - min_lat))].min end end self @@ -109,16 +109,16 @@ class BoundingBox end def slippy_width(zoom) - width * 256.0 * 2.0**zoom / 360.0 + width * 256.0 * (2.0**zoom) / 360.0 end def slippy_height(zoom) min = min_lat * Math::PI / 180.0 max = max_lat * Math::PI / 180.0 - Math.log((Math.tan(max) + 1.0 / Math.cos(max)) / - (Math.tan(min) + 1.0 / Math.cos(min))) * - (128.0 * 2.0**zoom / Math::PI) + Math.log((Math.tan(max) + (1.0 / Math.cos(max))) / + (Math.tan(min) + (1.0 / Math.cos(min)))) * + (128.0 * (2.0**zoom) / Math::PI) end # there are two forms used for bounds with and without an underscore, diff --git a/lib/osm.rb b/lib/osm.rb index e258aaaf0..73513c3ad 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -365,23 +365,23 @@ module OSM yscale = ysize / height scale = [xscale, yscale].max - xpad = width * scale - xsize - ypad = height * scale - ysize + xpad = (width * scale) - xsize + ypad = (height * scale) - ysize @width = width @height = height - @tx = xsheet(min_lon) - xpad / 2 - @ty = ysheet(min_lat) - ypad / 2 + @tx = xsheet(min_lon) - (xpad / 2) + @ty = ysheet(min_lat) - (ypad / 2) - @bx = xsheet(max_lon) + xpad / 2 - @by = ysheet(max_lat) + ypad / 2 + @bx = xsheet(max_lon) + (xpad / 2) + @by = ysheet(max_lat) + (ypad / 2) end # the following two functions will give you the x/y on the entire sheet def ysheet(lat) - log(tan(PI / 4 + (lat * PI / 180 / 2))) / (PI / 180) + log(tan((PI / 4) + (lat * PI / 180 / 2))) / (PI / 180) end def xsheet(lon) @@ -417,7 +417,7 @@ module OSM def distance(lat, lon) lat = lat * PI / 180 lon = lon * PI / 180 - 6372.795 * 2 * asin(sqrt(sin((lat - @lat) / 2)**2 + cos(@lat) * cos(lat) * sin((lon - @lon) / 2)**2)) + 6372.795 * 2 * asin(sqrt((sin((lat - @lat) / 2)**2) + (cos(@lat) * cos(lat) * (sin((lon - @lon) / 2)**2)))) end # get the worst case bounds for a given radius from the base position @@ -425,7 +425,7 @@ module OSM latradius = 2 * asin(sqrt(sin(radius / 6372.795 / 2)**2)) begin - lonradius = 2 * asin(sqrt(sin(radius / 6372.795 / 2)**2 / cos(@lat)**2)) + lonradius = 2 * asin(sqrt((sin(radius / 6372.795 / 2)**2) / (cos(@lat)**2))) rescue Errno::EDOM, Math::DomainError lonradius = PI end diff --git a/lib/rich_text.rb b/lib/rich_text.rb index 8950c6888..a0c4d9c8d 100644 --- a/lib/rich_text.rb +++ b/lib/rich_text.rb @@ -44,9 +44,9 @@ module RichText doc.content.include?(phrase) end - [link_proportion - 0.2, 0.0].max * 200 + - link_count * 40 + - spammy_phrases * 40 + ([link_proportion - 0.2, 0.0].max * 200) + + (link_count * 40) + + (spammy_phrases * 40) end protected diff --git a/lib/short_link.rb b/lib/short_link.rb index ec83ce33f..424e85c10 100644 --- a/lib/short_link.rb +++ b/lib/short_link.rb @@ -47,21 +47,21 @@ module ShortLink y <<= (32 - z) # project the parameters back to their coordinate ranges. - [(x * 360.0 / 2**32) - 180.0, - (y * 180.0 / 2**32) - 90.0, + [(x * 360.0 / (2**32)) - 180.0, + (y * 180.0 / (2**32)) - 90.0, z - 8 - (z_offset % 3)] end ## # given a location and zoom, return a short string representing it. def encode(lon, lat, z) - code = interleave_bits(((lon + 180.0) * 2**32 / 360.0).to_i, - ((lat + 90.0) * 2**32 / 180.0).to_i) + code = interleave_bits(((lon + 180.0) * (2**32) / 360.0).to_i, + ((lat + 90.0) * (2**32) / 180.0).to_i) str = "" # add eight to the zoom level, which approximates an accuracy of # one pixel in a tile. ((z + 8) / 3.0).ceil.times do |i| - digit = (code >> (58 - 6 * i)) & 0x3f + digit = (code >> (58 - (6 * i))) & 0x3f str << ARRAY[digit] end # append characters onto the end of the string to represent diff --git a/test/controllers/api/old_nodes_controller_test.rb b/test/controllers/api/old_nodes_controller_test.rb index 8fc19145c..95a20923e 100644 --- a/test/controllers/api/old_nodes_controller_test.rb +++ b/test/controllers/api/old_nodes_controller_test.rb @@ -65,8 +65,8 @@ module Api # randomly move the node about 3.times do # move the node somewhere else - xml_node["lat"] = precision(rand * 180 - 90).to_s - xml_node["lon"] = precision(rand * 360 - 180).to_s + xml_node["lat"] = precision((rand * 180) - 90).to_s + xml_node["lon"] = precision((rand * 360) - 180).to_s with_controller(NodesController.new) do put api_node_path(:id => nodeid), :params => xml_doc.to_s, :headers => auth_header assert_response :forbidden, "Should have rejected node update" @@ -113,8 +113,8 @@ module Api # randomly move the node about 3.times do # move the node somewhere else - xml_node["lat"] = precision(rand * 180 - 90).to_s - xml_node["lon"] = precision(rand * 360 - 180).to_s + xml_node["lat"] = precision((rand * 180) - 90).to_s + xml_node["lon"] = precision((rand * 360) - 180).to_s with_controller(NodesController.new) do put api_node_path(:id => nodeid), :params => xml_doc.to_s, :headers => auth_header assert_response :success diff --git a/test/lib/short_link_test.rb b/test/lib/short_link_test.rb index 1c8d3ce2c..a0a1023bb 100644 --- a/test/lib/short_link_test.rb +++ b/test/lib/short_link_test.rb @@ -7,7 +7,7 @@ class ShortLinkTest < ActiveSupport::TestCase def test_encode_decode cases = [] 1000.times do - cases << [180.0 * rand - 90.0, 360.0 * rand - 180.0, (18 * rand).to_i] + cases << [(180.0 * rand) - 90.0, (360.0 * rand) - 180.0, (18 * rand).to_i] end cases.each do |lat, lon, zoom| @@ -18,7 +18,7 @@ class ShortLinkTest < ActiveSupport::TestCase # one pixel (i.e: zoom + 8). the sqrt(5) is because each position # has an extra bit of accuracy in the lat coordinate, due to the # smaller range. - distance = Math.sqrt((lat - lat2)**2 + (lon - lon2)**2) + distance = Math.sqrt(((lat - lat2)**2) + ((lon - lon2)**2)) max_distance = 360.0 / (1 << (zoom + 8)) * 0.5 * Math.sqrt(5) assert max_distance > distance, "Maximum expected error exceeded: #{max_distance} <= #{distance} for (#{lat}, #{lon}, #{zoom})." end -- 2.43.2