Widthdom/FolderDiffIL4DotNet

GitHub: Widthdom/FolderDiffIL4DotNet

跨平台 .NET CLI 工具,用于对比构建文件夹并通过 IL 感知减少程序集元数据误报,生成可用于发布签发的离线审查报告。

Stars: 1 | Forks: 0

# FolderDiffIL4DotNet / `nildiff` (English) [![构建和测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/a9/a9f4787624714e7c728582f9fd19ca892a359274bd12b88cdd60e2d5f688d9fc.svg)](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/dotnet.yml) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/cas/53/539e9a6bf48ad24469a4363bff3aa68124154549e26592783d3d8577f2acbbfc.svg)](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/codeql.yml) [![发布](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b1ec6734607356de5e66298dcbb11c80f5768f551f256bc24acd405b659ced1e.svg)](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/release.yml) [![性能回归测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad91dbeac7b454914552fdb3ba0cbadd0a63cd76c67bb291eb6fd6520f698798.svg)](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/benchmark-regression.yml) ![.NET 8](https://img.shields.io/badge/.NET-8.0-512BD4?logo=dotnet&logoColor=white) ![C#](https://img.shields.io/badge/C%23-12-239120?logo=csharp&logoColor=white) ![平台](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey) ![许可证](https://img.shields.io/badge/License-MIT-blue) `FolderDiffIL4DotNet` 作为 `nildiff` .NET global tool 分发。它比较旧/新构建文件夹,减少由 IL metadata 噪声引起的 .NET assembly 误报,并生成可归档用于发布签发的审查产物。

FolderDiffIL4DotNet interactive HTML diff report overview

为何开发此工具: - 比较旧/新构建版本,而无需追踪由 MVID、timestamp 和其他构建元数据引起的误报。 - 生成 Markdown、交互式 HTML 和 JSON 审计产物,供人工审查。 - 保持发布比较的独立性和离线友好性。 有关完整的用法和配置参考,请参阅 [USER_GUIDE.md](USER_GUIDE.md)。 ## 快速开始 需要 [.NET SDK 8.x](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) 或更高版本。 ``` dotnet tool install -g nildiff dotnet tool install -g dotnet-ildasm nildiff "/path/to/old-folder" "/path/to/new-folder" "my-comparison" --no-pause ``` 打开报告文件夹: ``` nildiff --open-reports ``` 检查 IL 反汇编程序检测: ``` nildiff --doctor ``` `nildiff --version` 会打印与 GitHub 发布和 NuGet 包相同的公开 SemVer。`nildiff --doctor` 会保留详细的构建/提交版本用于诊断。 从源码构建: ``` git clone https://github.com/Widthdom/FolderDiffIL4DotNet.git cd FolderDiffIL4DotNet dotnet build dotnet run -- "/path/to/old-folder" "/path/to/new-folder" "my-comparison" --no-pause ``` ## 用法 ``` nildiff [report-label] [options] ``` 常用选项: | 选项 | 用途 | | --- | --- | | `--config ` | 加载特定的 `config.json`。 | | `--output ` | 将报告写入自定义输出目录下。 | | `--skip-il` | 跳过 IL 比较并仅使用 SHA256/文本比较。 | | `--threads ` | 为本次运行覆盖比较并行度。 | | `--fail-on-diff` | 生成所有产物后,如果最终仍有 Added/Removed/Modified 条目,则以代码 `5` 退出。 | | `--print-config` | 打印应用环境变量和支持的 CLI 覆盖后的有效 builder 状态,不进行语义验证。 | | `--validate-config` | 在应用运行时 CLI 覆盖之前,验证 `config.json` 以及 `FOLDERDIFF_*` 环境变量覆盖。 | | `--open-reports` | 打开报告文件夹并退出。 | | `--version` | 打印公开发布/NuGet 的 SemVer 并退出。 | | `--doctor` | 打印构建/提交诊断信息,探测 `dotnet-ildasm` / `ilspycmd` 的可用性,并显示安装指南。 | 完整的 CLI 行为、HTML 审查工作流、完整性检查、语义变更表和配置详情请参见 [USER_GUIDE.md](USER_GUIDE.md#readme-en-usage)。 ## 配置 `config.json` 是可选的;省略的键使用代码定义的默认值。对于普通的 diff 运行,在加载 [`config.json`](config.json) 并应用环境变量和运行时 CLI 覆盖后,系统会在比较开始前验证有效配置。 详细的配置表已移至 [USER_GUIDE.md](USER_GUIDE.md#readme-en-config)。带注释的示例保留在 [doc/config.sample.jsonc](doc/config.sample.jsonc) 中,用于 IDE 自动补全的 JSON Schema 是 [doc/config.schema.json](doc/config.schema.json)。 当前验证的数字约束包括 [`InlineDiffContextLines`](USER_GUIDE.md#config-en-inlinediffcontextlines) >= `0` 和 [`ILCacheMaxMemoryMegabytes`](USER_GUIDE.md#config-en-ilcachemaxmemorymegabytes) >= `0`。 ## 生成的产物 默认情况下,每次运行都会在 `Reports/
标签:SBOM, 文件比较, 硬件无关