# telerik-checker **Repository Path**: keny1985/telerik-checker ## Basic Information - **Project Name**: telerik-checker - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Telerik Scanner 扫描 .NET 项目中的 `.cs` 和 `.xaml` 文件,提取所有 Telerik 控件使用信息并导出为 CSV 报告,帮助迁移商业控件。 ## 使用方式 ```bash # 扫描目录,使用默认控件列表 telerik-scanner --path "C:\MyProject" --output "report.csv" # 使用自定义控件列表 telerik-scanner --path "C:\MyProject" --output "report.csv" --controls "my-controls.json" ``` ### 参数 | 参数 | 必填 | 说明 | |------|------|------| | `-p, --path` | 是 | 要扫描的目标目录或文件路径 | | `-o, --output` | 是 | 输出 CSV 文件路径 | | `-c, --controls` | 否 | Telerik 控件列表配置文件(JSON 格式) | ## CSV 输出格式 | 列名 | 说明 | |------|------| | FilePath | 文件完整路径 | | FileName | 文件名(含扩展名) | | ControlName | Telerik 控件名 | | Properties | 属性赋值和读取(`\n` 分隔) | | Events | 绑定的事件(`\n` 分隔) | | Methods | 调用的方法(`\n` 分隔,如 `Columns.Clear()`) | | Remark | `XAML` 或 `CodeBehind` | ## 工作原理 ### 双遍扫描(C#) 1. **Pass 1 - 符号表**:扫描所有变量/字段/属性声明,识别 Telerik 类型的变量,建立 `变量名 → 控件类型` 映射 2. **Pass 2 - 使用匹配**:对符号表中的变量,提取所有属性赋值、事件订阅、方法调用 支持以下模式: - `RadGridView gridView;` / `var gridView = new RadGridView();` - `gridView.DataSource = dataSet;`(属性赋值) - `gridView.SelectionChanged += Handler;`(事件订阅) - `gridView.Columns.Clear();` / `gridView.Refresh();`(方法调用) - `var count = gridView.Items.Count;`(属性读取) - `this.radGridView1.Dock = DockStyle.Fill;`(Designer.cs 风格) ### 命名空间检测(XAML) - 检测 `xmlns:telerik="http://schemas.telerik.com/..."` 或 CLR 命名空间格式 - 提取 Telerik 前缀下的所有控件元素及其属性 ## 配置文件 默认内置 80+ 个 Telerik 控件名。可通过 JSON 配置文件自定义: ```json { "controls": [ "RadGridView", "RadButton", "RadComboBox" ] } ``` ## 编译 ```bash # 当前平台 cargo build --release # Windows(需安装 cargo-zigbuild) cargo build-win # 运行测试 cargo test ``` ### 依赖 - [cargo-zigbuild](https://github.com/rust-cross/cargo-zigbuild)(Windows 交叉编译) ```bash cargo install cargo-zigbuild ```