brakeman 5.4.1 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +14 -0
  3. data/README.md +2 -2
  4. data/bundle/load.rb +3 -4
  5. data/bundle/ruby/3.1.0/gems/parallel-1.23.0/lib/parallel/version.rb +4 -0
  6. data/bundle/ruby/3.1.0/gems/{parallel-1.22.1 → parallel-1.23.0}/lib/parallel.rb +43 -3
  7. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/History.rdoc +38 -0
  8. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/Manifest.txt +2 -0
  9. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/README.rdoc +2 -1
  10. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/compare/normalize.rb +1 -0
  11. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby20_parser.rb +4267 -4284
  12. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby20_parser.y +50 -26
  13. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby21_parser.rb +4241 -4240
  14. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby21_parser.y +50 -26
  15. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby22_parser.rb +4289 -4290
  16. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby22_parser.y +50 -26
  17. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby23_parser.rb +4274 -4243
  18. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby23_parser.y +50 -26
  19. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby24_parser.rb +4279 -4298
  20. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby24_parser.y +50 -26
  21. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby25_parser.rb +4270 -4289
  22. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby25_parser.y +50 -26
  23. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby26_parser.rb +4270 -4289
  24. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby26_parser.y +50 -26
  25. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby27_parser.rb +4173 -4206
  26. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby27_parser.y +50 -26
  27. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby30_parser.rb +6029 -5971
  28. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby30_parser.y +135 -86
  29. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby31_parser.rb +6195 -6184
  30. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby31_parser.y +136 -87
  31. data/bundle/ruby/3.1.0/gems/ruby_parser-3.20.3/lib/ruby32_parser.rb +13601 -0
  32. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2/lib/ruby3_parser.yy → ruby_parser-3.20.3/lib/ruby32_parser.y} +158 -163
  33. data/bundle/ruby/3.1.0/gems/ruby_parser-3.20.3/lib/ruby3_parser.yy +3635 -0
  34. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby_lexer.rb +15 -7
  35. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby_lexer.rex.rb +1 -1
  36. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby_lexer_strings.rb +2 -2
  37. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby_parser.rb +2 -0
  38. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby_parser.yy +50 -26
  39. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby_parser_extras.rb +25 -19
  40. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/tools/munge.rb +8 -2
  41. data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/tools/ripper.rb +14 -12
  42. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/History.rdoc +13 -0
  43. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/lib/pt_testcase.rb +3 -3
  44. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/lib/sexp.rb +8 -2
  45. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/lib/sexp_processor.rb +1 -1
  46. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/lib/strict_sexp.rb +6 -5
  47. data/lib/brakeman/app_tree.rb +0 -1
  48. data/lib/brakeman/checks/check_content_tag.rb +8 -5
  49. data/lib/brakeman/checks/check_eol_ruby.rb +3 -1
  50. data/lib/brakeman/report/report_github.rb +1 -1
  51. data/lib/brakeman/scanner.rb +0 -1
  52. data/lib/brakeman/tracker/config.rb +15 -11
  53. data/lib/brakeman/version.rb +1 -1
  54. data/lib/brakeman.rb +6 -2
  55. metadata +56 -68
  56. data/bundle/ruby/3.1.0/gems/parallel-1.22.1/lib/parallel/processor_count.rb +0 -44
  57. data/bundle/ruby/3.1.0/gems/parallel-1.22.1/lib/parallel/version.rb +0 -4
  58. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/History.rdoc +0 -6
  59. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/Manifest.txt +0 -19
  60. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/README.rdoc +0 -54
  61. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby18_parser.rb +0 -5794
  62. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby18_parser.y +0 -1909
  63. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby19_parser.rb +0 -6186
  64. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby19_parser.y +0 -2117
  65. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rb +0 -1412
  66. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex +0 -179
  67. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex.rb +0 -323
  68. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_parser.rb +0 -30
  69. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_parser_extras.rb +0 -1388
  70. data/bundle/ruby/3.1.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy.rb +0 -5
  71. /data/bundle/ruby/3.1.0/gems/{parallel-1.22.1 → parallel-1.23.0}/MIT-LICENSE.txt +0 -0
  72. /data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/debugging.md +0 -0
  73. /data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/gauntlet.md +0 -0
  74. /data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/rp_extensions.rb +0 -0
  75. /data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/rp_stringscanner.rb +0 -0
  76. /data/bundle/ruby/3.1.0/gems/{ruby_parser-3.19.2 → ruby_parser-3.20.3}/lib/ruby_lexer.rex +0 -0
  77. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/Manifest.txt +0 -0
  78. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/README.rdoc +0 -0
  79. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/lib/composite_sexp_processor.rb +0 -0
  80. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/lib/sexp_matcher.rb +0 -0
  81. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.16.1 → sexp_processor-4.17.0}/lib/unique.rb +0 -0
@@ -222,6 +222,7 @@ rule
222
222
  | lhs tEQL mrhs
223
223
  {
224
224
  lhs, _, rhs = val
225
+
225
226
  result = new_assign lhs, s(:svalue, rhs).line(rhs.line)
226
227
  }
227
228
  | mlhs tEQL mrhs_arg
@@ -983,8 +984,10 @@ rule
983
984
 
984
985
  paren_args: tLPAREN2 opt_call_args rparen
985
986
  {
986
- _, args, _ = val
987
+ _, args, (_, line_max) = val
988
+
987
989
  result = args
990
+ result.line_max = line_max if args
988
991
  }
989
992
 
990
993
  opt_paren_args: none
@@ -1144,7 +1147,6 @@ rule
1144
1147
  | k_begin
1145
1148
  {
1146
1149
  lexer.cmdarg.push false
1147
- result = self.lexer.lineno
1148
1150
  }
1149
1151
  bodystmt k_end
1150
1152
  {
@@ -1189,12 +1191,14 @@ rule
1189
1191
  {
1190
1192
  result = wrap :colon3, val[1]
1191
1193
  }
1192
- | tLBRACK { result = lexer.lineno } aref_args tRBRACK
1194
+ | tLBRACK { result = lexer.lineno } aref_args rbracket
1193
1195
  {
1194
- _, line, args, _ = val
1196
+ _, line, args, (_, line_max) = val
1197
+
1195
1198
  result = args || s(:array)
1196
1199
  result.sexp_type = :array # aref_args is :args
1197
1200
  result.line line
1201
+ result.line_max = line_max
1198
1202
  }
1199
1203
  | tLBRACE
1200
1204
  {
@@ -1299,9 +1303,6 @@ rule
1299
1303
  result = new_for iter, var, body
1300
1304
  }
1301
1305
  | k_class
1302
- {
1303
- result = self.lexer.lineno
1304
- }
1305
1306
  cpath superclass
1306
1307
  {
1307
1308
  if (self.in_def || self.in_single > 0) then
@@ -1316,9 +1317,6 @@ rule
1316
1317
  self.lexer.ignore_body_comments
1317
1318
  }
1318
1319
  | k_class tLSHFT
1319
- {
1320
- result = self.lexer.lineno
1321
- }
1322
1320
  expr
1323
1321
  {
1324
1322
  result = self.in_def
@@ -1337,9 +1335,6 @@ rule
1337
1335
  self.lexer.ignore_body_comments
1338
1336
  }
1339
1337
  | k_module
1340
- {
1341
- result = self.lexer.lineno
1342
- }
1343
1338
  cpath
1344
1339
  {
1345
1340
  yyerror "module definition in method body" if
@@ -1782,13 +1777,19 @@ opt_block_args_tail: tCOMMA block_args_tail
1782
1777
  {
1783
1778
  call, args = val
1784
1779
 
1785
- result = call.concat args.sexp_body if args
1780
+ result = call
1781
+
1782
+ if args then
1783
+ call.concat args.sexp_body
1784
+ result.line_max = args.line_max
1785
+ end
1786
1786
  }
1787
1787
  | primary_value call_op operation2 opt_paren_args
1788
1788
  {
1789
- recv, call_op, (op, _line), args = val
1789
+ recv, call_op, (op, op_line), args = val
1790
1790
 
1791
1791
  result = new_call recv, op.to_sym, args, call_op
1792
+ result.line_max = op_line unless args
1792
1793
  }
1793
1794
  | primary_value tCOLON2 operation2 paren_args
1794
1795
  {
@@ -2002,15 +2003,17 @@ opt_block_args_tail: tCOMMA block_args_tail
2002
2003
 
2003
2004
  words: tWORDS_BEG tSPACE tSTRING_END
2004
2005
  {
2005
- (_, line), _, _ = val
2006
+ (_, line), _, (_, line_max) = val
2006
2007
 
2007
2008
  result = s(:array).line line
2009
+ result.line_max = line_max
2008
2010
  }
2009
2011
  | tWORDS_BEG word_list tSTRING_END
2010
2012
  {
2011
- (_, line), list, _ = val
2013
+ (_, line), list, (_, line_max) = val
2012
2014
 
2013
2015
  result = list.line line
2016
+ result.line_max = line_max
2014
2017
  }
2015
2018
 
2016
2019
  word_list: none
@@ -2030,15 +2033,17 @@ opt_block_args_tail: tCOMMA block_args_tail
2030
2033
 
2031
2034
  symbols: tSYMBOLS_BEG tSPACE tSTRING_END
2032
2035
  {
2033
- (_, line), _, _ = val
2036
+ (_, line), _, (_, line_max) = val
2034
2037
 
2035
2038
  result = s(:array).line line
2039
+ result.line_max = line_max
2036
2040
  }
2037
2041
  | tSYMBOLS_BEG symbol_list tSTRING_END
2038
2042
  {
2039
- (_, line), list, _, = val
2040
- list.line line
2041
- result = list
2043
+ (_, line), list, (_, line_max), = val
2044
+
2045
+ result = list.line line
2046
+ result.line_max = line_max
2042
2047
  }
2043
2048
 
2044
2049
  symbol_list: none
@@ -2053,28 +2058,32 @@ opt_block_args_tail: tCOMMA block_args_tail
2053
2058
 
2054
2059
  qwords: tQWORDS_BEG tSPACE tSTRING_END
2055
2060
  {
2056
- (_, line), _, _ = val
2061
+ (_, line), _, (_, line_max) = val
2057
2062
 
2058
2063
  result = s(:array).line line
2064
+ result.line_max = line_max
2059
2065
  }
2060
2066
  | tQWORDS_BEG qword_list tSTRING_END
2061
2067
  {
2062
- (_, line), list, _ = val
2068
+ (_, line), list, (_, line_max) = val
2063
2069
 
2064
2070
  result = list.line line
2071
+ result.line_max = line_max
2065
2072
  }
2066
2073
 
2067
2074
  qsymbols: tQSYMBOLS_BEG tSPACE tSTRING_END
2068
2075
  {
2069
- (_, line), _, _ = val
2076
+ (_, line), _, (_, line_max) = val
2070
2077
 
2071
2078
  result = s(:array).line line
2079
+ result.line_max = line_max
2072
2080
  }
2073
2081
  | tQSYMBOLS_BEG qsym_list tSTRING_END
2074
2082
  {
2075
- (_, line), list, _ = val
2083
+ (_, line), list, (_, line_max) = val
2076
2084
 
2077
2085
  result = list.line line
2086
+ result.line_max = line_max
2078
2087
  }
2079
2088
 
2080
2089
  qword_list: none
@@ -2478,7 +2487,14 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
2478
2487
  result = s(:args, list).line list.line
2479
2488
  end
2480
2489
 
2481
- result << (Sexp === item ? item : item.first)
2490
+ if Sexp === item then
2491
+ line_max = item.line_max
2492
+ else
2493
+ item, line_max = item
2494
+ end
2495
+
2496
+ result << item
2497
+ result.line_max = line_max
2482
2498
  }
2483
2499
 
2484
2500
  f_label: tLABEL
@@ -2696,7 +2712,15 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
2696
2712
  opt_terms: | terms
2697
2713
  opt_nl: | tNL
2698
2714
  rparen: opt_nl tRPAREN
2715
+ {
2716
+ _, close = val
2717
+ result = [close, lexer.lineno]
2718
+ }
2699
2719
  rbracket: opt_nl tRBRACK
2720
+ {
2721
+ _, close = val
2722
+ result = [close, lexer.lineno]
2723
+ }
2700
2724
  trailer: | tNL | tCOMMA
2701
2725
 
2702
2726
  term: tSEMI { yyerrok }