本文介绍 AppCAT CLI 命令用法。
Commands
| Name | Description |
|---|---|
| appcat 分析 | 此子命令允许对输入源代码或二进制文件运行源代码分析。 |
| appcat 转换 | 此子命令允许将 XML 规则转换为 YAML。 |
| Appcat软件版本 | 此子命令显示工具版本。 |
appcat 分析
以下部分提供了可用 appcat analyze 命令行参数的详细说明。
必需的参数
| Parameter | Description |
|---|---|
--input |
用于分析的应用程序源代码或二进制文件的路径。 对多个值使用逗号分隔的列表: --input <input1>,<input2>,... 默认值是 []。 |
--output |
存储分析结果的目录。 |
可选参数
| Category | Parameter | Description |
|---|---|---|
| 源和目标技术 | ||
--list-sources |
显示可用的迁移源技术。 | |
--list-targets |
显示可用的迁移目标技术。 | |
--list-capabilities |
显示可用的迁移功能 | |
--list-os |
显示可用的迁移目标操作系统。 | |
--source、-s |
指定要分析的源技术。 对多个值使用逗号分隔的列表 ,例如 --source <source1>,<source2>,...。 使用 --list-sources 参数列出所有可用源。 |
|
--target、-t |
指定用于分析的目标技术。 对多个值使用逗号分隔的列表 ,例如 --target <target1>,<target2>,...。 使用 --list-targets 参数列出所有可用目标。 |
|
--capability、-c |
指定用于分析的功能技术。 对多个值使用逗号分隔的列表 ,例如 --capability <capability1>,<capability2>,...。 使用 --list-capabilities 参数列出所有可用功能。 |
|
--os |
指定用于分析的操作系统。 对多个值使用逗号分隔的列表 ,例如 --os <os1>,<os2>,...。 使用 --list-os 参数列出所有可用的作系统。 |
|
| 分析选项 | ||
--analyze-known-libraries |
在源代码分析期间,启用对 AppCAT maven.default.index 中指定的已知开源库的分析。 默认值是 false。 |
|
--custom-maven-settings |
指定自定义 Maven 设置文件的路径。 | |
--dry-run |
检查标记的有效性,而不实际执行分析。 默认值是 false。 |
|
--mode、-m |
设置分析模式。 必须是 full - 源代码 + 依赖项之一,以便分析源代码并列出依赖项,或者 source-only。 默认值是 full。 |
|
--packages |
指定要计算的应用程序类包。 对多个值使用逗号分隔的列表 ,例如 --packages <package1>,<package2>,...。 默认值是 []。 |
|
| 规则选项 | ||
--code-snips-number |
使用文件中的代码片段限制显示的事件数。
0 表示没有限制,因此会显示文件中包含代码片段的所有事件。
-1 表示不显示任何代码片段。 默认值是 0。 |
|
--enable-default-rulesets |
启用默认规则集的执行。 默认值是 true。 使用 --enable-default-rulesets=false 进行禁用。 |
|
--label-selector、-l |
根据指定的标签选择器表达式应用规则,例如 (konveyor.io/target=azure-aks && konveyor.io/source)。 |
|
--rules |
指定规则文件或目录。 对多个值使用逗号分隔的列表 ,例如 --rules <rule1>,<rule2>,...。 默认值是 []。 |
|
| 代理设置 | ||
--http-proxy |
定义用于从 Maven 存储库下载开源软件(OSS)库的 HTTP 代理 URL。 | |
--https-proxy |
定义用于从 Maven 存储库下载 OSS 库的 HTTPS 代理 URL。 | |
--no-proxy |
指定要从 Maven 存储库下载 OSS 库时从代理使用情况中排除的 URL。 | |
| 报表和输出格式 | ||
--bulk |
批量运行多个 analyze 命令时合并结果。 默认值是 false。 |
|
--context-lines-number |
设置每个检测到事件的输出中包含的源代码行数。 默认值是 100。 |
|
--incident-selector |
根据自定义变量表达式(例如, (!package=io.konveyor.demo.config-utils))筛选事件。 |
|
--output-format |
选择输出格式。
yaml 或 json。 默认值是 yaml。 |
|
--overwrite |
覆盖现有输出目录。 默认值是 false。 |
|
--skip-static-report |
跳过生成静态分析报告。 默认值是 false。 |
支持的源
该 --list-sources 参数显示了以下源技术:
| 源名称 | Description | Source |
|---|---|---|
| Java | 迁移 Java 应用程序的最佳做法。 | java |
| Java EE | 迁移 Java EE 技术的最佳做法。 | java-ee |
| OpenJDK | 使用 OpenJDK 迁移应用程序的最佳做法。 | openjdk |
| OpenJDK 8 | 使用 OpenJDK 8 迁移应用程序的最佳做法。 | openjdk8 |
| OpenJDK 9 | 使用 OpenJDK 9 迁移应用程序的最佳做法。 | openjdk9 |
| OpenJDK 10 | 使用 OpenJDK 10 迁移应用程序的最佳做法。 | openjdk10 |
| OpenJDK 11 | 使用 OpenJDK 11 迁移应用程序的最佳做法。 | openjdk11 |
| OpenJDK 12 | 使用 OpenJDK 12 迁移应用程序的最佳做法。 | openjdk12 |
| OpenJDK 13 | 使用 OpenJDK 13 迁移应用程序的最佳做法。 | openjdk13 |
| OpenJDK 14 | 使用 OpenJDK 14 迁移应用程序的最佳做法。 | openjdk14 |
| OpenJDK 15 | 使用 OpenJDK 15 迁移应用程序的最佳做法。 | openjdk15 |
| OpenJDK 16 | 使用 OpenJDK 16 迁移应用程序的最佳做法。 | openjdk16 |
| OpenJDK 17 | 使用 OpenJDK 17 迁移应用程序的最佳做法。 | openjdk17 |
| OpenJDK 18 | 使用 OpenJDK 18 迁移应用程序的最佳做法。 | openjdk18 |
| OpenJDK 19 | 使用 OpenJDK 19 迁移应用程序的最佳做法。 | openjdk19 |
| OpenJDK 20 | 使用 OpenJDK 20 迁移应用程序的最佳做法。 | openjdk20 |
| OpenJDK 21 | 使用 OpenJDK 21 迁移应用程序的最佳做法。 | openjdk21 |
| Oracle JDK | 使用 Oracle JDK 迁移应用程序的最佳做法。 | oraclejdk |
| Oracle JDK 7 | 使用 Oracle JDK 7 迁移应用程序的最佳做法。 | oraclejdk7 |
| RMI | 迁移使用 RMI 技术的 Java 应用程序的最佳做法。 | rmi |
| RPC | 迁移使用 RPC 技术的 Java 应用程序的最佳做法。 | rpc |
| Spring 5 | 迁移使用 Spring 5 技术的应用程序的最佳做法。 | spring5 |
| Spring Boot | 迁移 Spring Boot 技术的最佳做法。 | springboot |
| EAP | 迁移使用 JBoss EAP 技术的 Java 应用程序的最佳做法。 | eap |
| EAP 7 | 迁移使用 JBoss EAP 7 技术的 Java 应用程序的最佳做法。 | eap7 |
支持的目标
该 --list-targets 参数显示了以下目标技术:
| 目标名称 | Description | Target |
|---|---|---|
| Azure App 服务 | 部署应用到 Azure 应用程序服务的最佳做法。 | azure-appservice |
| Azure Kubernetes 服务 | 部署应用到 Azure Kubernetes 服务的最佳做法。 | azure-aks |
| Azure 容器应用 | 部署应用到 Azure 容器应用的最佳做法。 | azure-container-apps |
受支持的操作系统
该 --list-os 参数显示以下操作系统:
| OS 名称 | Description | 操作系统 |
|---|---|---|
| Linux | 将应用程序迁移到 Linux 平台的最佳做法。 | linux |
| Windows操作系统 | 将应用程序迁移到 Windows 平台的最佳做法。 | windows |
支持的功能
该 --list-capabilities 参数显示以下功能:
| 功能名称 | Description | 能力 |
|---|---|---|
| 容器化 | 容器化应用程序的最佳做法。 | containerization |
| OpenJDK 11 | 迁移到 OpenJDK 11 的最佳做法。 | openjdk11 |
| OpenJDK 17 | 迁移到 OpenJDK 17 的最佳做法。 | openjdk17 |
| OpenJDK 21 | 迁移到 OpenJDK 21 的最佳做法。 | openjdk21 |
配置忽略文件
在 AppCAT CLI 安装路径中,可以将 .appcat-ignore 文件配置为在运行 appcat analyze 命令时排除指定的文件夹或路径。
全局参数
| Parameter | Description |
|---|---|
--disable-telemetry |
禁用遥测。 |
--log-level |
设置日志级别。 默认值是 4。 |
--no-cleanup |
防止在执行后对临时资源进行清理。 |
Examples
分析源代码目录:
appcat analyze --input <path-to-source> --output <path-to-output>使用特定源和目标技术分析源代码目录:
appcat analyze \ --input <path-to-source> \ --output <path-to-output> \ --source springboot \ --target azure-aks,azure-appservice,azure-container-apps使用额外的自定义规则分析源代码目录:
appcat analyze --input <path-to-source> --output <path-to-output> --rules <path-to-rules>仅使用自定义规则分析源代码目录,而不使用默认规则集:
appcat analyze \ --input /path/to/source \ --output /path/to/output \ --enable-default-rulesets=false \ --rules /path/to/rules分析和向现有输出目录和静态报表添加更多应用程序分析:
appcat analyze \ --input=<path-to-source-A>,<path-to-source-B>,<path-to-source-C> \ --output=<path-to-output-ABC> \ --target=<target-name> appcat analyze --bulk \ --input=<path-to-source-D> \ --output=<path-to-output-ABC> \ --target=<target-name> appcat analyze \ --bulk \ --input=<path-to-source-E> \ --output=<path-to-output-ABC> \ --target=<target-name>分析包含特定源代码的目录,以整合目标技术、功能和操作系统。
appcat analyze \ --input <path-to-source> \ --output <path-to-output> \ --source springboot \ --target azure-aks,azure-appservice,azure-container-apps --capability containerization --os windows--target、--capabilities和-os参数与AND条件结合使用,这意味着规则必须同时符合以下条件:- Azure 服务,例如
azure-aks,azure-appservice或azure-container-apps。 - 检测容器化问题的功能。
- Windows OS 平台。
- Azure 服务,例如
分析源代码目录,并使用自定义行号保留检测到的上下文行:
appcat analyze \ --input <path-to-source> \ --output <path-to-output> \ --context-lines-number <line-number>以下屏幕截图显示了使用
--context-lines-number 3示例:在不带代码片段的情况下限制报表内容:
appcat analyze \ --input <path-to-source> \ --output <path-to-output> \ --code-snips-number -1当设置
--code-snips-number -1时,代码片段不会导出到报表。 此行为有助于防止敏感数据被包含。您还可以检查
metadata.privacyMode中的report.json属性。PrivacyMode值:- 不受限制 - 报表包含代码片段。
- 受限 - 报表不包含代码片段。
appcat 转换
将 Windup XML 规则转换为 YAML。
必需的参数
| Parameter | Description |
|---|---|
--rules |
将 XML 规则转换为 YAML。 |
全局参数
| Parameter | Description |
|---|---|
--disable-telemetry |
禁用遥测 |
--log-level |
设置日志级别。 默认值是 4。 |
--no-cleanup |
防止在执行后对临时资源进行清理。 |
Examples
以下示例将 windup XML 规则转换为 YAML:
appcat transform rules --input <path-to-rule> --output <path-to-output-folder>
appcat 版本
显示工具的版本信息。
appcat version