设置 Eclipse

按照以下步骤使用 Eclipse 设置 Tradefed。

创建一个单独的工作区来开发 Trade Federation,不要重复使用已用于 Android 设备开发的工作区。

如果需要,您可以从以下网址下载适用于 Java 开发人员的 Eclipse IDEeclipse.org/downloads

创建项目

  1. 从命令行运行一次 make。这将构建以下项目所依赖的外部库。
  2. Window > Preferences > Java > Build Path> Classpath Variables 中设置 TRADEFED_ROOT 类路径变量,并将其指向您的 tradefed 源根目录
  3. Window > Preferences > General > Workspace > Linked Resources 中设置 TRADEFED_ROOT 路径变量,并将其指向您的 tradefed 源根目录
  4. 使用 File > Import...-> General > Existing Projects into workspace" 向导导入以下路径下的这些开源 Java 项目

    prebuilts/misc/common/ddmlib\*
    tools/loganalysis
    tools/loganalysis/tests
    tools/tradefederation/core
    tools/tradefederation/core/tests
    tools/tradefederation/contrib
    tools/tradefederation/core/remote
    platform_testing/libraries/health/runners/longevity/host
    platform_testing/libraries/annotations
    platform_testing/libraries/health/composers/host
    
  5. (可选)如果您想查看 ddmlib 源代码,请从一个未捆绑的工具分支(例如 /platform/tools/base/tools_r22/ddmlib/src/main/java/com/android/ddmlib/IDevice.java)附加源代码。

  6. (可选)如果您还想加载 CTS harness 项目,请导入

    test/suite_harness/common/util
    test/suite_harness/common/host-side/util
    test/suite_harness/common/host-side/tradefed
    

自动格式化

注意:必需的文件位于完整平台源代码树的 development/ide/eclipse 中。因此,您需要检出平台分支(例如 main)才能获取这些文件:/development/main/ide/eclipse/

使用 Eclipse 中的首选项文件自动将格式化程序设置为 Android 样式指南。要在 Studio 中执行此操作

  1. 转到窗口 > 首选项 > Java > 代码样式
  2. 格式化程序下,导入文件 android-formatting.xml
  3. 整理 > 导入下,导入文件 android.importorder

删除尾随空格

要强制 Eclipse 删除所有尾随空格

  1. 转到窗口 > 首选项 -> Java -> 编辑器 -> 保存操作
  2. 然后选择其他操作 -> 配置 -> 代码 > 整理标签 -> 格式化程序
  3. 选中删除尾随空格
  4. 点击应用并关闭

检查代码样式

提交变更列表时,将运行自动预上传钩子来检查您的代码格式:google-java-format

这有助于将您的代码格式化为通用标准。

调试 Eclipse

如果您想在 Eclipse 的调试器中运行 TF 代码,建议您首先为相关代码创建一个单元测试,因为这将是执行该功能的最简单快捷的方法。

要调试 TF 单元测试,只需右键点击它,然后选择调试为 > JUnit 测试

要调试 TF 功能测试,请按照上一节中运行功能测试的说明进行操作,但使用运行 > 调试配置菜单。

要调试 TF 程序本身(当运行任何配置时),请按照上一节中运行功能测试的说明进行操作,但在步骤 4 中提供您希望运行的配置的命令行参数。因此,要调试“instrument”配置,请转到运行 > 调试配置菜单,并在 Eclipse 调试配置的参数选项卡中将参数设置为 -- package <package to run> instrument

使用 Eclipse 进行远程调试

按照以下步骤远程调试从 tradefed.sh 命令行启动的 tradefed 会话

  1. 使用调试标志启动 tradefed.sh:TF_DEBUG=1 tradefed.sh
  2. 等待直到您看到 JVM 的此提示:Listening for transport dt_socket at address: 10088。这意味着 JVM 正在等待调试器在端口 10088 处附加。
  3. 从主菜单使用 Eclipse 的远程调试附加:选择运行 > 调试配置...
  4. 在弹出对话框中,从左侧菜单中选择远程 Java 应用程序
  5. 点击操作栏上的新建启动配置图标。
  6. 根据需要命名配置,然后选择 tradefederation 作为项目。
  7. 使用之前提供的地址填充端口。
  8. 切换到选项卡,并将项目 tradefederationgoogle-tradefed 添加到源查找路径
  9. 点击调试以启动调试会话。

调试器附加到正在侦听的 JVM 进程,并且运行 tradefed.sh 的终端显示 tf> 提示符。

要在调试模式下单步执行代码,请在 Eclipse 中设置断点,并在终端中调用您的 Tradefed 命令(即 run <test>)。要在 TF 启动期间调试任何内容,您可以先设置断点,然后再附加 Eclipse 调试器。

提示:要使用备用端口,请在上面的步骤 1 中的命令中添加 TF_DEBUG_PORT=nnn。如果您有神秘的挂起错误要调查,您甚至可以在生产环境中使用此方法:将 tradefed.sh 中的 suspend=y 更改为 suspend=n,然后使用调试标志启动。JVM 不会等待调试器附加,但只要进程仍在运行,您就可以随时执行此操作。

使用 JDB 进行远程调试

要使用 Java 调试器 JDB,请按照类似于 Eclipse 的步骤操作

  1. 使用调试标志启动 tradefed.shTF_DEBUG=1 tradefed.sh
  2. 等待直到您看到 JVM 的提示:Listening for transport dt_socket at address: 10088
  3. 连接 jdb。例如,从 croot 运行

    jdb -attach 10088 \
        -sourcepath tools/tradefederation/core/src:vendor/google_tradefederation/core/src
    
  4. 等待连接并开始调试!运行 man jdb 获取更多帮助。

检查代码覆盖率

  1. 安装 Eclemma 插件
  2. 转到帮助 > 安装新软件,并将向导指向:http://update.eclemma.org/
  3. 安装完成后,选择覆盖率分析为 > JUnit 测试选项以执行代码覆盖率运行。