tamp-build/tamp-codeql
GitHub: tamp-build/tamp-codeql
Tamp.CodeQL 是一个 .NET 封装库,将 CodeQL 2.x CLI 的数据库创建、分析、上传等操作以类型安全的方式集成到 Tamp 构建管线中。
Stars: 0 | Forks: 0
# Tamp.CodeQL
[CodeQL](https://github.com/github/codeql-cli-binaries) CLI 包装器
用于 [Tamp](https://github.com/tamp-build/tamp)。
| 包 | CodeQL | 状态 |
|---|---|---|
| [`Tamp.CodeQL.V2`](src/Tamp.CodeQL.V2) | 2.x | preview |
要求 `Tamp.Core ≥ 1.0.3`。GitHub PAT 类型为 `Secret` 并通过 `--github-auth-stdin` 传入(而非 argv,因此它不会泄露到进程列表中)。
## 动词
| 子外观 | 动词 | 备注 |
|---|---|---|
| `Database` | `Create` | 索引源。必填:`--language`、db 路径。`--source-root`、`--command`、`--build-mode`、`--overwrite`、`--extractor-option`。 |
| `Database` | `Init` | 启动构建追踪会话。`--begin-tracing`。 |
| `Database` | `TraceCommand` | 包装构建命令——包装器在构建 argv 之前输出 `--` 分隔符。 |
| `Database` | `Finalize` | 完成追踪的 DB。`--cleanup`。 |
| `Database` | `Analyze` | 运行查询。`--format`、`--output`、`--sarif-category`、`--sarif-add-snippets`、`--download` / `--no-download`。 |
| `Database` | `Upgrade` | Schema 升级。`--allow-downgrades`。 |
| `Database` | `ExportDiagnostics` | 每个文件的诊断 SARIF。 |
| `Database` | `Bundle` | 将 DB 打包以上传。 |
| `GitHub` | `UploadResults` | 将 SARIF POST 到 Code Scanning。通过 Secret 传递 Token。 |
| `Resolve` | `Languages` / `Queries` | 枚举提取器 / 查询。 |
| `Pack` | `Download` / `Install` | 获取并安装 QL 包。 |
| `Query` | `Run` | 单查询模式。 |
| | `Version` | `codeql version`。 |
| | `Raw` | 逃生舱口。 |
通用标志(所有动词):`--threads`、`--ram`、`--verbosity`、`--quiet`、`--no-progress-tracker`、`--logdir`、`--common-caches`。
## 快速示例 — CI SARIF 上传
```
using Tamp;
using Tamp.CodeQL.V2;
[NuGetPackage("codeql", UseSystemPath = true)]
readonly Tool CodeQL = null!;
[Secret("GitHub token", EnvironmentVariable = "GITHUB_TOKEN")]
readonly Secret GitHubToken = null!;
Target CreateDb => _ => _.Executes(() =>
CodeQL.Database.Create(CodeQL, s => s
.SetDatabasePath("codeql-db")
.SetLanguage("csharp")
.SetSourceRoot(".")
.SetCommand("dotnet build")
.SetOverwrite()
.SetRam(8000)
.SetThreads(0)));
Target Analyze => _ => _
.DependsOn(nameof(CreateDb))
.Executes(() =>
CodeQL.Database.Analyze(CodeQL, s => s
.SetDatabasePath("codeql-db")
.AddQuery("codeql/csharp-queries")
.SetFormat("sarif-latest")
.SetOutput("results.sarif")
.SetSarifCategory("primary")
.SetSarifAddSnippets()));
Target Upload => _ => _
.DependsOn(nameof(Analyze))
.Requires(() => GitHubToken != null)
.Executes(() =>
CodeQL.GitHub.UploadResults(CodeQL, s => s
.SetSarifFile("results.sarif")
.SetRepository("acme/widgets")
.SetRef("refs/heads/main")
.SetCommit(Git.Commit)
.SetGitHubToken(GitHubToken)
.SetWaitForProcessing()
.SetWaitForProcessingTimeout(120)));
```
## 发布
参见 [MAINTAINERS.md](MAINTAINERS.md)。
标签:CLI封装工具, CodeQL, .NET工具包, SARIF, SAST, 代码安全分析, 命令行包装器, 多人体追踪, 威胁建模, 安全左移, 安全评估工具, 开发运维安全, 构建追踪, 盲注攻击, 自动化代码扫描, 静态应用安全测试