github / github/codeql

CodeQL Ruby parser fails on bare & block forwarding in multi-line method calls

未关闭
#20,257 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug question
主要语言
CodeQL
星标
10.1k
派生
2.1k
平均合并
2 天 15 小时
30 天内合并 PR
141

描述

# 🖼️ Context

CodeQL's Ruby parser encounters parse errors when using Ruby 3.1+'s anonymous block forwarding syntax (&) in specific contexts, despite this being valid Ruby syntax.

## Reproduction Case

```ruby
module TestCase
def method_with_bare_ampersand(&)
some_method_call(
keyword_arg1: "value1",
keyword_arg2: "value2",
keyword_arg3: "value3",
& # <-- CodeQL parse error occurs here
)
end

# This works fine - single line call
def working_method(&)
simple_call(&)
end

private

def some_method_call(keyword_arg1:, keyword_arg2:, keyword_arg3:, &block)
yield if block_given?
end

def simple_call(&block)
yield if block_given?
end
end
```

### Environment
- Repo: [rubygems/rubygems.org](https://github.com/rubygems/rubygems.org)
- recent [workflow run](https://github.com/rubygems/rubygems.org/actions/runs/17104368086/job/48509269173?pr=5925))
- [offending file](https://github.com/rubygems/rubygems.org/blob/ae3f654e67d74122a692de4e7832fa6657d98a7a/app/controllers/concerns/avo_auditable.rb#L26)
- [offending file](https://github.com/rubygems/rubygems.org/blob/ae3f654e67d74122a692de4e7832fa6657d98a7a/app/controllers/concerns/maintenance_tasks_auditable.rb#L26)
- CodeQL CLI version: 2.15.5
- Ruby version: 3.4.x
- Syntax: Valid Ruby (confirmed with ruby -c)

### 📝 Notes

- The issue only occurs with multi-line method calls where & appears on its own line
- Single-line calls with & work correctly
- Named block parameters (e.g., &block) work in all contexts
- This is valid Ruby 3.1+ anonymous block forwarding syntax

### Impact

This prevents CodeQL security analysis on codebases using modern Ruby block forwarding patterns, forcing developers to use less idiomatic code or exclude files from analysis.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。