Class: Danger::DangerXcodeSummary

Inherits:
Plugin
  • Object
show all
Defined in:
lib/xcode_summary/plugin.rb

Overview

Shows all build errors, warnings and unit tests results generated from xcodebuild. You need to use the xcresult produced by Xcode 11. It’s located in the Derived Data folder.

Examples:

Showing summary


xcode_summary.report 'build.xcresult'

Filtering warnings in Pods


xcode_summary.ignored_files = '**/Pods/**'
xcode_summary.report 'build.xcresult'

See Also:

  • diogot/danger-xcode_summary

Defined Under Namespace

Classes: Location, Result, Warning

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#collapse_parallelized_testsBoolean

Defines if parallelized test runs from the same target should be collapsed into one message. Defaults to false

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


89
90
91
# File 'lib/xcode_summary/plugin.rb', line 89

def collapse_parallelized_tests
  @collapse_parallelized_tests
end

#ignored_files[String]

A globbed string or array of strings which should match the files that you want to ignore warnings on. Defaults to nil. An example would be ‘’/Pods/‘` to ignore warnings in Pods that your project uses.

Parameters:

  • value (String or [String])

Returns:

  • ([String])


38
39
40
# File 'lib/xcode_summary/plugin.rb', line 38

def ignored_files
  @ignored_files
end

#ignored_results(&block) ⇒ Block

A block that filters specific results. An example would be ‘lambda { |result| result.message.start_with?(’ld’) }‘ to ignore results for ld_warnings.

Parameters:

  • value (Block)

Returns:

  • (Block)


45
46
47
# File 'lib/xcode_summary/plugin.rb', line 45

def ignored_results
  @ignored_results
end

#ignores_warningsBoolean

Defines if warnings should be included or not Defaults to false.

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


77
78
79
# File 'lib/xcode_summary/plugin.rb', line 77

def ignores_warnings
  @ignores_warnings
end

#inline_modeBoolean

Defines if using inline comment or not. Defaults to false.

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


71
72
73
# File 'lib/xcode_summary/plugin.rb', line 71

def inline_mode
  @inline_mode
end

#project_rootObject

rubocop:disable Lint/DuplicateMethods



30
31
32
# File 'lib/xcode_summary/plugin.rb', line 30

def project_root
  @project_root
end

#sort_warnings_by(&block) ⇒ Block

A block that sorts the warning results. An example would be ‘lambda { |warning| warning.message.include?(“deprecated”) ? 1 : 0 }` to sort results for deprecated warnings.

Parameters:

  • value (Block)

Returns:

  • (Block)


65
66
67
# File 'lib/xcode_summary/plugin.rb', line 65

def sort_warnings_by
  @sort_warnings_by
end

#sticky_summaryBoolean

Defines if the test summary will be sticky or not. Defaults to false.

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


51
52
53
# File 'lib/xcode_summary/plugin.rb', line 51

def sticky_summary
  @sticky_summary
end

#strictBoolean

Defines errors strict. If value is false, then errors will be reporting as warnings. Defaults to true

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


83
84
85
# File 'lib/xcode_summary/plugin.rb', line 83

def strict
  @strict
end

#test_summaryBoolean

Defines if the build summary is shown or not. Defaults to true.

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


57
58
59
# File 'lib/xcode_summary/plugin.rb', line 57

def test_summary
  @test_summary
end

Instance Method Details

#pluginvoid

This method returns an undefined value.

Pick a Dangerfile plugin for a chosen request_source and cache it based on github.com/danger/danger/blob/master/lib/danger/plugin_support/plugin.rb#L31



138
139
140
141
# File 'lib/xcode_summary/plugin.rb', line 138

def plugin
  plugins = Plugin.all_plugins.select { |plugin| Dangerfile.essential_plugin_classes.include? plugin }
  @plugin ||= plugins.select { |p| p.method_defined? :html_link }.map { |p| p.new(@dangerfile) }.compact.first
end

#report(file_path) ⇒ void

This method returns an undefined value.

Reads a .xcresult and reports it.

Parameters:

  • file_path (String)

    Path for xcresult bundle.



148
149
150
151
152
153
154
155
# File 'lib/xcode_summary/plugin.rb', line 148

def report(file_path)
  if File.exist?(file_path)
    xcode_summary = XCResult::Parser.new(path: file_path)
    format_summary(xcode_summary)
  else
    fail 'summary file not found'
  end
end

#warning_error_count(file_path) ⇒ String

Reads a .xcresult and reports its warning and error count.

Parameters:

  • file_path (String)

    Path for xcresult bundle.

Returns:

  • (String)

    JSON string with warningCount and errorCount



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/xcode_summary/plugin.rb', line 161

def warning_error_count(file_path)
  if File.exist?(file_path)
    xcode_summary = XCResult::Parser.new(path: file_path)
    warning_count = 0
    error_count = 0
    xcode_summary.actions_invocation_record.actions.each do |action|
      warning_count += warnings(action).count
      error_count += errors(action).count
    end
    result = { warnings: warning_count, errors: error_count }
    result.to_json
  else
    fail 'summary file not found'
  end
end