Class: Fastlane::Actions::DetectUnusedCodeAction
- Inherits:
-
Action
- Object
- Action
- Fastlane::Actions::DetectUnusedCodeAction
- Defined in:
- lib/fastlane/plugin/fastci/actions/detect_unused_code_action.rb
Overview
无用代码检查
Class Method Summary collapse
- .available_options ⇒ Object
- .category ⇒ Object
- .description ⇒ Object
- .is_supported?(platform) ⇒ Boolean
- .run(params) ⇒ Object
Class Method Details
.available_options ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/fastlane/plugin/fastci/actions/detect_unused_code_action.rb', line 75 def self. [ FastlaneCore::ConfigItem.new( key: :scheme, description: "不采取默认配置,自定义 `scheme` 名称", optional: true, default_value: nil, type: String ), FastlaneCore::ConfigItem.new( key: :is_from_package, description: "是否从打包流程调用", optional: true, default_value: false, type: Boolean ), FastlaneCore::ConfigItem.new( key: :configuration, description: "构建配置。默认只支持 Debug,需要支持 Release 请在 Build settings 中将 Enable Index-While-Building Functionality 设置为 Yes", optional: true, default_value: "Debug", type: String, verify_block: proc do |value| valid_params = ["Release", "Debug"] unless valid_params.include?(value) UI.user_error!("无效的编译环境: #{value}。支持的环境: #{valid_params.join(', ')}") end end ) ] end |
.category ⇒ Object
111 112 113 |
# File 'lib/fastlane/plugin/fastci/actions/detect_unused_code_action.rb', line 111 def self.category :testing end |
.description ⇒ Object
71 72 73 |
# File 'lib/fastlane/plugin/fastci/actions/detect_unused_code_action.rb', line 71 def self.description "无用代码检测" end |
.is_supported?(platform) ⇒ Boolean
107 108 109 |
# File 'lib/fastlane/plugin/fastci/actions/detect_unused_code_action.rb', line 107 def self.is_supported?(platform) platform == :ios end |
.run(params) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/fastlane/plugin/fastci/actions/detect_unused_code_action.rb', line 8 def self.run(params) UI.("*************| 开始无用代码检查 |*************") # 检查是否安装了 Periphery unless system("which periphery > /dev/null") sh("brew install periphery") end is_from_package = params[:is_from_package] || false configuration = params[:configuration] || "Debug" # 如果不是从打包流程调用,需要先构建项目 if is_from_package == false puts "*************| 构建项目以生成索引存储 |*************" other_action.gym( clean: true, silent: true, workspace: Environment.workspace, scheme: Environment.scheme, configuration: configuration, buildlog_path: Constants.BUILD_LOG_DIR, skip_archive: true, skip_package_ipa: true ) end log_dir = File.(Constants.BUILD_LOG_DIR) log_file = sh("ls -t #{log_dir}/*.log | head -n 1").strip index_store_path = CommonHelper.extract_index_store_path(log_file) schemes = Environment.extra_schemes scheme = params[:scheme] || Environment.scheme if schemes.empty? schemes = [scheme] else schemes = schemes + [scheme] end # 运行 Periphery 扫描 periphery_output = sh(" periphery scan \ --skip-build \ --project #{Environment.workspace} \ --schemes #{schemes.map(&:strip).join(" ")} \ --index-store-path '#{index_store_path}' \ --format xcode 2>/dev/null || true ") CommonHelper.write_cached_txt(Constants.UNUSED_CODE_FILE, periphery_output) # 输出无用代码检查报告 UI.("*************| 开始输出无用代码检查报告 |*************") CommonHelper.generate_and_open_html( "Unused Code Report", "generate_unused_code_html.py", Constants.UNUSED_CODE_FILE, Constants.UNUSED_CODE_HTML_FILE ) end |