代码检查器 (★★)
#debugging #analysis-tools #best-practices
用途
| 方面 |
详情 |
| 事务 |
SCI |
| 目标 |
检查程序的性能、安全性、语义错误 |
| 范围 |
静态分析(无需执行) |
架构
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| +------------------+ +-----------------+ +--------------+ | 检查变体 | | 对象集 | | 检查任务 | | (检查什么) | | (检查哪些对象) | | (命名运行) | +--------+---------+ +--------+--------+ +------+-------+ | | | +-----------+------------+ | | | +------v------+) | | SCI 引擎 |<--------------------------+ +------+-------+ | +------v------+ | 结果 | +-------------+
|
| 组件 |
用途 |
创建位置 |
| 检查变体 |
定义执行哪些检查 |
SCI |
| 对象集 |
定义检查哪些对象 |
SCI |
| 检查任务 |
变体 + 对象集的命名组合 |
SCI |
检查类别
| 类别 |
检查内容 |
| 通用 |
通用编程问题 |
| 性能 |
低效代码模式 |
| 安全 |
安全漏洞 |
| 语法 |
语法错误和警告 |
| 编程规范 |
命名规范、格式 |
| 搜索 |
查找特定代码模式 |
按类别的示例检查
| 类别 |
示例检查 |
| 性能 |
SELECT * 使用、嵌套 SELECT |
| 性能 |
循环中的类型转换 |
| 安全 |
缺少授权检查 |
| 安全 |
硬编码密码或值 |
| 语法 |
不可达代码 |
| 规范 |
命名前缀违规 |
使用代码检查器
从 ABAP 编辑器(快速检查)
1
| ABAP 编辑器 → 程序 → 检查 → 代码检查器 (Ctrl+F2)
|
###从事务 SCI(完整)
- 创建检查变体:定义要包含的检查
- 创建对象集:指定程序、类、包
- 创建检查任务:组合变体 + 对象集
- 运行检查任务:执行并查看结果
检查变体创建
1 2 3 4 5 6 7 8 9
| SCI → 检查变体 → 创建 +-- 性能 | [x] SELECT * 使用 | [x] 嵌套 SELECT | [x] 类型转换 +-- 安全 | [x] 授权检查 +-- 规范 [x] 命名前缀
|
结果
| 结果类型 |
图标 |
含义 |
| 错误 |
红色 |
必须修复 |
| 警告 |
黄色 |
应该修复 |
| 信息 |
蓝色 |
需要注意 |
标准检查 vs 自定义检查任务
| 特性 |
标准(编辑器) |
自定义(SCI) |
| 触发方式 |
ABAP 编辑器 (Ctrl+F2) |
事务 SCI |
| 检查变体 |
默认系统变体 |
用户定义 |
| 对象范围 |
仅当前程序 |
任意对象集 |
| 持久性 |
不保存 |
保存且可复用 |
| 调度 |
仅手动 |
可调度 |
考试/测试模式
| 关键词 / 短语 |
答案 |
| “代码检查器事务” |
SCI |
| “三个 SCI 组件” |
检查变体、对象集、检查任务 |
| “检查类别” |
通用、性能、安全、语法、规范、搜索 |
| “从编辑器快速检查” |
程序 → 检查 → 代码检查器 (Ctrl+F2) |
| “检查变体用途” |
定义执行哪些检查 |
| “对象集用途” |
定义检查哪些对象 |
| “检查任务组合了” |
检查变体 + 对象集 |
相关笔记