【问题标题】:Android studio code inspection shell script for integration in CI pipeline用于集成到 CI 管道中的 Android Studio 代码检查 shell 脚本
【发布时间】:2025-12-23 05:25:17
【问题描述】:

我正在尝试为我的 Android 应用集成死代码分析以提高代码质量。我发现了 android studio 提供的开箱即用的代码检查选项,它为我提供了关于未使用代码和改进建议的广泛报告。

我使用了分析 -> 检查代码选项

我在工作室中得到的结果如下:

这非常有用,但我想将此代码分析集成到我的 CI 管道中,以便我可以跟踪报告的警告并对其进行趋势分析。

我发现 blog 说我可以使用 Android Studio 软件包附带的 inpsect.sh 文件来实现相同的目的。该命令的语法如下:

sh inspect.sh <project> <inspection-profile> <output> [<options>]

我尝试通过传递下面给出的适当参数来运行此命令:

sh inspect.sh Users/user1/Documents/androidProject /Users/user1/Documents/androidProject/app/src/InspectionProfile.xml /Users/user1/Documents/inspectionResults -v2 -d /Users/user1/Documents/androidProject/app/src

但每当我尝试使用所需参数运行此 shell 脚本时,我都会收到以下错误:

inspect.sh: line 9: exec: /Applications/Android Studio.app/Contents/bin/inspect.sh/../MacOS/studio: cannot execute: Not a directory

花了很多时间,但没有运气。我在这里错过了什么?

【问题讨论】:

  • 命令是如何运行的?在您的问题中包含命令行。
  • @Darkman 我已经用我尝试执行的命令更新了问题。

标签: android shell android-studio code-inspection dead-code


【解决方案1】:

这是因为您没有为-d 选项指定参数。

-d

应该是这样的:

inspect.sh 'Users/user1/Documents/androidProject' '/Users/user1/Documents/androidProject/app/src/InspectionProfile.xml' '/Users/user1/Documents/inspectionResults' -v2 -d '/Users/user1/Documents/androidProject/app/src'

【讨论】:

  • 感谢您的建议。但是在传递要检查的目录路径后,我仍然面临同样的问题。我也试过没有通过 -d 选项。
  • /Applications/Android Studio.app/Contents/MacOS/studio中有目录吗? inspect.sh 期望有一个目录。如果不是,那么它一定是inspect.sh 中的一个错误。尝试更新一个新的。
【解决方案2】:

查看inspect.sh的内容后,我意识到脚本期望将脚本的绝对路径作为第一个参数传递。

而不是通过:

sh inspect.sh Users/user1/Documents/androidProject /Users/user1/Documents/androidProject/app/src/InspectionProfile.xml /Users/user1/Documents/inspectionResults -v2 -d /Users/user1/Documents/androidProject/app/src

我必须通过inspect.sh的绝对路径如下:

sh "/Applications/Android Studio.app/Contents/bin/inspect.sh" Users/user1/Documents/androidProject /Users/user1/Documents/androidProject/app/src/InspectionProfile.xml /Users/user1/Documents/inspectionResults -v2 -d /Users/user1/Documents/androidProject/app/src

最后,我能够在/Users/user1/Documents/inspectionResults 获得 XML 报告以供检查

【讨论】: