Patch #38146 » 0004-Fix-RuboCop-offense-Performance-ConstantRegexp.patch
.rubocop_todo.yml | ||
---|---|---|
486 | 486 |
- 'test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb' |
487 | 487 |
- 'test/unit/project_test.rb' |
488 | 488 | |
489 |
# This cop supports safe autocorrection (--autocorrect). |
|
490 |
Performance/ConstantRegexp: |
|
491 |
Exclude: |
|
492 |
- 'app/models/changeset.rb' |
|
493 |
- 'lib/redmine/scm/adapters/cvs_adapter.rb' |
|
494 |
- 'lib/redmine/wiki_formatting/textile/formatter.rb' |
|
495 |
- 'lib/redmine/wiki_formatting/textile/redcloth3.rb' |
|
496 | ||
497 | 489 |
Performance/FixedSize: |
498 | 490 |
Exclude: |
499 | 491 |
- 'test/integration/api_test/issues_test.rb' |
app/models/changeset.rb | ||
---|---|---|
144 | 144 |
refs = match[3] |
145 | 145 |
next unless action.present? || ref_keywords_any |
146 | 146 | |
147 |
refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m| |
|
147 |
refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/o).each do |m|
|
|
148 | 148 |
issue = find_referenced_issue_by_id(m[0].to_i) |
149 | 149 |
hours = m[2] |
150 | 150 |
if issue && !issue_linked_to_same_commit?(issue) |
lib/redmine/scm/adapters/cvs_adapter.rb | ||
---|---|---|
179 | 179 |
file_state = nil |
180 | 180 |
branch_map = nil |
181 | 181 |
io.each_line() do |line| |
182 |
if state != "revision" && /^#{ENDLOG}/.match?(line) |
|
182 |
if state != "revision" && /^#{ENDLOG}/o.match?(line)
|
|
183 | 183 |
commit_log = "" |
184 | 184 |
revision = nil |
185 | 185 |
state = "entry_start" |
... | ... | |
194 | 194 |
entry_headRev = $1 |
195 | 195 |
elsif /^symbolic names:/.match?(line) |
196 | 196 |
state = "symbolic" |
197 |
elsif /^#{STARTLOG}/.match?(line) |
|
197 |
elsif /^#{STARTLOG}/o.match?(line)
|
|
198 | 198 |
commit_log = "" |
199 | 199 |
state = "revision" |
200 | 200 |
end |
... | ... | |
207 | 207 |
next |
208 | 208 |
end |
209 | 209 |
elsif state == "tags" |
210 |
if /^#{STARTLOG}/.match?(line) |
|
210 |
if /^#{STARTLOG}/o.match?(line)
|
|
211 | 211 |
commit_log = "" |
212 | 212 |
state = "revision" |
213 |
elsif /^#{ENDLOG}/.match?(line) |
|
213 |
elsif /^#{ENDLOG}/o.match?(line)
|
|
214 | 214 |
state = "head" |
215 | 215 |
end |
216 | 216 |
next |
217 | 217 |
elsif state == "revision" |
218 |
if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line
|
|
218 |
if /^#{ENDLOG}/o =~ line || /^#{STARTLOG}/o =~ line
|
|
219 | 219 |
if revision |
220 | 220 |
revHelper = CvsRevisionHelper.new(revision) |
221 | 221 |
revBranch = "HEAD" |
... | ... | |
245 | 245 |
end |
246 | 246 |
commit_log = "" |
247 | 247 |
revision = nil |
248 |
if /^#{ENDLOG}/.match?(line) |
|
248 |
if /^#{ENDLOG}/o.match?(line)
|
|
249 | 249 |
state = "entry_start" |
250 | 250 |
end |
251 | 251 |
next |
lib/redmine/wiki_formatting/textile/formatter.rb | ||
---|---|---|
57 | 57 |
l = 1 |
58 | 58 |
started = false |
59 | 59 |
ended = false |
60 |
text.scan(/(((?:.*?)(\A|\r?\n\s*\r?\n))(h(\d+)(#{A}#{C})\.(?::(\S+))?[ \t](.*?)$)|.*)/m).each do |all, content, lf, heading, level| |
|
60 |
text.scan(/(((?:.*?)(\A|\r?\n\s*\r?\n))(h(\d+)(#{A}#{C})\.(?::(\S+))?[ \t](.*?)$)|.*)/mo).each do |all, content, lf, heading, level|
|
|
61 | 61 |
if heading.nil? |
62 | 62 |
if ended |
63 | 63 |
after << all |
lib/redmine/wiki_formatting/textile/redcloth3.rb | ||
---|---|---|
532 | 532 |
rows = [] |
533 | 533 |
fullrow.gsub!(/([^|\s])\s*\n/, "\\1<br />") |
534 | 534 |
fullrow.each_line do |row| |
535 |
ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m |
|
535 |
ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/mo
|
|
536 | 536 |
cells = [] |
537 | 537 |
# the regexp prevents wiki links with a | from being cut as cells |
538 |
row.scan(/\|(_?#{S}#{A}#{C}\. ?)?((\[\[[^|\]]*\|[^|\]]*\]\]|[^|])*?)(?=\|)/) do |modifiers, cell| |
|
538 |
row.scan(/\|(_?#{S}#{A}#{C}\. ?)?((\[\[[^|\]]*\|[^|\]]*\]\]|[^|])*?)(?=\|)/o) do |modifiers, cell|
|
|
539 | 539 |
ctyp = 'd' |
540 | 540 |
ctyp = 'h' if modifiers && modifiers =~ /^_/ |
541 | 541 | |
... | ... | |
791 | 791 |
when :limit |
792 | 792 |
sta,oqs,qtag,content,oqa = $~[1..6] |
793 | 793 |
atts = nil |
794 |
if content =~ /^(#{C})(.+)$/ |
|
794 |
if content =~ /^(#{C})(.+)$/o
|
|
795 | 795 |
atts, content = $~[1..2] |
796 | 796 |
end |
797 | 797 |
else |
... | ... | |
1100 | 1100 |
### and it breaks following lines |
1101 | 1101 |
htmlesc( aftertag, :NoQuotes ) if aftertag && escape_aftertag && !first.match(/<code\s+class="(\w+)">/) |
1102 | 1102 |
line = +"<redpre##{@pre_list.length}>" |
1103 |
first.match(/<#{OFFTAGS}([^>]*)>/) |
|
1103 |
first.match(/<#{OFFTAGS}([^>]*)>/o)
|
|
1104 | 1104 |
tag = $1 |
1105 | 1105 |
$2.to_s.match(/(class\=("[^"]+"|'[^']+'))/i) |
1106 | 1106 |
tag << " #{$1}" if $1 && tag == 'code' |