Build tracing filtering: path-based inclusion & content-based exclusion
- 主要語言
- CodeQL
- 星號
- 10.1k
- 分支
- 2.1k
- 平均合併
- 2 天 15 小時
- 30 天內合併 PR
- 141
描述
I'm using the CodeQL CLI with a large Java/Kotlin project that makes heavy use of autogenerated source during the build process. Because of this, I am using build tracing (`codeql database trace-command`) to extract CodeQL databases.
Is there any way to filter the files processed by the extractor in the following ways? If not, please consider this a feature request :)
---
### Include-filtering by path
I'd like to be able to extract databases for certain components of the project. Due to the complexity of the project's build system, it's not easy to just build/trace only those components of the project; instead it would be much easier if I could just restrict extraction to those components' files by providing path globs during build tracing.
I'm aware that files can be excluded using the `exclude` extractor option, but this only allows certain path globs to be *excluded*, not *included*.
### Exclude-filtering by file contents
As mentioned earlier, the project has a lot of autogenerated code, some (but only some) of which needs to be ignored. This code is often generated with paths that are not easily excludable using the existing path-glob-based exclusions. It would be great if I can specify regexes to search for in the content of files that indicate that the file should not be extracted (e.g. to look for things like "// Autogenerated file, do not edit", etc.)
---
If there isn't a way to do these, I'm happy to hear about hacky workarounds. For example, the commands I trace are already wrapped in shell scripts that wrap the underlying compilers (`javac` etc.) in order to provide for more filtering criteria than mentioned here. However, it's hard to do the above properly using such a wrapper because of i.e. the need to properly parse the original compiler command line arguments, handle things like files in JAR files, [indirect command line options](https://docs.oracle.com/en/java/javase/17/docs/specs/man/javac.html#option-at), etc. The extractor is much better placed to handle such filtering.
貢獻指南
研究方向
從 CodeQL CLI 的 `database trace-command` 流程和現有 extractor 的 `exclude` 選項開始,然後追蹤 Java 和 Kotlin 編譯器輸入如何傳遞至擷取程序。此請求有兩個分開的目標:基於路徑的包含和基於內容的排除。完成標準是定義並實作這兩種篩選行為,並記錄其命令列設定和支援的比對語意。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- java, kotlin
- 領域
- build-system, tooling
- Issue 類型
- 功能
- 難度
- 5/5
- 預估耗時
- 一週以上
- 活躍度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 38/100