From c101ca1e51de28d095ef8289b95fc416fa1a9c9a Mon Sep 17 00:00:00 2001 From: MAEDA Go Date: Mon, 2 Jan 2023 18:03:59 +0900 Subject: [PATCH 4/9] Fix RuboCop offense Performance/ConstantRegexp --- .rubocop_todo.yml | 8 -------- app/models/changeset.rb | 2 +- lib/redmine/scm/adapters/cvs_adapter.rb | 12 ++++++------ lib/redmine/wiki_formatting/textile/formatter.rb | 2 +- lib/redmine/wiki_formatting/textile/redcloth3.rb | 8 ++++---- 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 2ed0864d4..158ac8721 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -486,14 +486,6 @@ Naming/VariableNumber: - 'test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb' - 'test/unit/project_test.rb' -# This cop supports safe autocorrection (--autocorrect). -Performance/ConstantRegexp: - Exclude: - - 'app/models/changeset.rb' - - 'lib/redmine/scm/adapters/cvs_adapter.rb' - - 'lib/redmine/wiki_formatting/textile/formatter.rb' - - 'lib/redmine/wiki_formatting/textile/redcloth3.rb' - Performance/FixedSize: Exclude: - 'test/integration/api_test/issues_test.rb' diff --git a/app/models/changeset.rb b/app/models/changeset.rb index a41ffda82..535335ef8 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -144,7 +144,7 @@ class Changeset < ActiveRecord::Base refs = match[3] next unless action.present? || ref_keywords_any - refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m| + refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/o).each do |m| issue = find_referenced_issue_by_id(m[0].to_i) hours = m[2] if issue && !issue_linked_to_same_commit?(issue) diff --git a/lib/redmine/scm/adapters/cvs_adapter.rb b/lib/redmine/scm/adapters/cvs_adapter.rb index e5cb524ab..9436562f7 100644 --- a/lib/redmine/scm/adapters/cvs_adapter.rb +++ b/lib/redmine/scm/adapters/cvs_adapter.rb @@ -179,7 +179,7 @@ module Redmine file_state = nil branch_map = nil io.each_line() do |line| - if state != "revision" && /^#{ENDLOG}/.match?(line) + if state != "revision" && /^#{ENDLOG}/o.match?(line) commit_log = "" revision = nil state = "entry_start" @@ -194,7 +194,7 @@ module Redmine entry_headRev = $1 elsif /^symbolic names:/.match?(line) state = "symbolic" - elsif /^#{STARTLOG}/.match?(line) + elsif /^#{STARTLOG}/o.match?(line) commit_log = "" state = "revision" end @@ -207,15 +207,15 @@ module Redmine next end elsif state == "tags" - if /^#{STARTLOG}/.match?(line) + if /^#{STARTLOG}/o.match?(line) commit_log = "" state = "revision" - elsif /^#{ENDLOG}/.match?(line) + elsif /^#{ENDLOG}/o.match?(line) state = "head" end next elsif state == "revision" - if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line + if /^#{ENDLOG}/o =~ line || /^#{STARTLOG}/o =~ line if revision revHelper = CvsRevisionHelper.new(revision) revBranch = "HEAD" @@ -245,7 +245,7 @@ module Redmine end commit_log = "" revision = nil - if /^#{ENDLOG}/.match?(line) + if /^#{ENDLOG}/o.match?(line) state = "entry_start" end next diff --git a/lib/redmine/wiki_formatting/textile/formatter.rb b/lib/redmine/wiki_formatting/textile/formatter.rb index 54686ca6d..04464763e 100644 --- a/lib/redmine/wiki_formatting/textile/formatter.rb +++ b/lib/redmine/wiki_formatting/textile/formatter.rb @@ -57,7 +57,7 @@ module Redmine l = 1 started = false ended = false - text.scan(/(((?:.*?)(\A|\r?\n\s*\r?\n))(h(\d+)(#{A}#{C})\.(?::(\S+))?[ \t](.*?)$)|.*)/m).each do |all, content, lf, heading, level| + text.scan(/(((?:.*?)(\A|\r?\n\s*\r?\n))(h(\d+)(#{A}#{C})\.(?::(\S+))?[ \t](.*?)$)|.*)/mo).each do |all, content, lf, heading, level| if heading.nil? if ended after << all diff --git a/lib/redmine/wiki_formatting/textile/redcloth3.rb b/lib/redmine/wiki_formatting/textile/redcloth3.rb index c292926a5..637f2883e 100644 --- a/lib/redmine/wiki_formatting/textile/redcloth3.rb +++ b/lib/redmine/wiki_formatting/textile/redcloth3.rb @@ -532,10 +532,10 @@ class RedCloth3 < String rows = [] fullrow.gsub!(/([^|\s])\s*\n/, "\\1
") fullrow.each_line do |row| - ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m + ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/mo cells = [] # the regexp prevents wiki links with a | from being cut as cells - row.scan(/\|(_?#{S}#{A}#{C}\. ?)?((\[\[[^|\]]*\|[^|\]]*\]\]|[^|])*?)(?=\|)/) do |modifiers, cell| + row.scan(/\|(_?#{S}#{A}#{C}\. ?)?((\[\[[^|\]]*\|[^|\]]*\]\]|[^|])*?)(?=\|)/o) do |modifiers, cell| ctyp = 'd' ctyp = 'h' if modifiers && modifiers =~ /^_/ @@ -791,7 +791,7 @@ class RedCloth3 < String when :limit sta,oqs,qtag,content,oqa = $~[1..6] atts = nil - if content =~ /^(#{C})(.+)$/ + if content =~ /^(#{C})(.+)$/o atts, content = $~[1..2] end else @@ -1100,7 +1100,7 @@ class RedCloth3 < String ### and it breaks following lines htmlesc( aftertag, :NoQuotes ) if aftertag && escape_aftertag && !first.match(//) line = +"" - first.match(/<#{OFFTAGS}([^>]*)>/) + first.match(/<#{OFFTAGS}([^>]*)>/o) tag = $1 $2.to_s.match(/(class\=("[^"]+"|'[^']+'))/i) tag << " #{$1}" if $1 && tag == 'code' -- 2.39.0