本文介绍 AppCAT CLI 命令用法。
Commands
Name | Description |
---|---|
appcat analyze | 此子命令允许对输入源代码或二进制文件运行源代码分析。 |
appcat transform | 此子命令允许将 XML 规则转换为 YAML。 |
appcat version | 此子命令显示工具版本。 |
appcat analyze
以下部分提供了可用 appcat analyze
命令行参数的详细说明。
Required parameters
Parameter | Description |
---|---|
--input |
用于分析的应用程序源代码或二进制文件的路径。 对多个值使用逗号分隔的列表: --input <input1>,<input2>,... 默认值是 [] 。 |
--output |
存储分析结果的目录。 |
Optional parameters
Category | Parameter | Description |
---|---|---|
源和目标技术 | ||
--list-sources |
显示可用的迁移源技术。 | |
--list-targets |
显示可用的迁移目标技术。 | |
--source 、-s |
指定要分析的源技术。 对多个值使用逗号分隔的列表 ,例如 --source <source1>,<source2>,... 。 使用 --list-sources 参数列出所有可用源。 |
|
--target 、-t |
指定用于分析的目标技术。 对多个值使用逗号分隔的列表 ,例如 --target <target1>,<target2>,... 。 使用 --list-targets 参数列出所有可用目标。 |
|
Analysis options | ||
--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>,... 。 默认值是 [] 。 |
|
Rule options | ||
--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>,... 。 默认值是 [] 。 |
|
Proxy settings | ||
--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 。 |
Supported sources
该 --list-sources
参数显示了以下源技术:
Source name | 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 |
Support targets
该 --list-targets
参数显示了以下目标技术:
Target name | Description | Target |
---|---|---|
Azure App 服务 | 部署应用到 Azure 应用程序服务的最佳做法。 | azure-appservice |
Azure Kubernetes 服务 | 部署应用到 Azure Kubernetes 服务的最佳做法。 | azure-aks |
Azure 容器应用 | 部署应用到 Azure 容器应用的最佳做法。 | azure-container-apps |
Cloud Readiness | 使应用程序云 (Azure) 准备就绪的一般最佳做法。 | cloud-readiness |
Linux | 使应用程序 Linux 准备就绪的一般最佳做法。 | linux |
OpenJDK 11 | 使用 Java 11 运行 Java 8 应用程序的一般最佳做法。 | openjdk11 |
OpenJDK 17 | 使用 Java 17 运行 Java 11 应用程序的一般最佳做法。 | openjdk17 |
OpenJDK 21 | 使用 Java 21 运行 Java 17 应用程序的一般最佳做法。 | openjdk21 |
配置忽略文件
在 AppCAT CLI 安装路径中,可以将该文件配置为 .appcat-ignore
在运行 appcat analyze
命令时排除指定的文件夹或路径。
Global parameters
Parameter | Description |
---|---|
--disable-telemetry |
Disables 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> \ --context-lines-number <line-number>
以下屏幕截图显示了使用 --context-lines-number 3
示例:
appcat transform
将 Windup XML 规则转换为 YAML。
Required parameters
Parameter | Description |
---|---|
--rules |
将 XML 规则转换为 YAML。 |
Global parameters
Parameter | Description |
---|---|
--disable-telemetry |
Disables telemetry |
--log-level |
设置日志级别。 默认值是 4 。 |
--no-cleanup |
防止在执行后对临时资源进行清理。 |
Examples
以下示例将 windup XML 规则转换为 YAML:
appcat transform rules --input <path-to-rule> --output <path-to-output-folder>
appcat version
显示工具的版本信息。
appcat version