fastlane-plugin-code_static_analyzer 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31ca64424721af47394fb63b3f00532811b84bdf
4
- data.tar.gz: e12379d050bad5565564d5402ab6b7517b8594a9
3
+ metadata.gz: f27b577db79a18a272cb128f635addb0ac1d4740
4
+ data.tar.gz: 292c5593392ca861eb7915ce1cbdd5bc52f45e8d
5
5
  SHA512:
6
- metadata.gz: b7925823d710984f81d6b483aa41a010325475e68ecf9792fe6ce79a19e70de027170c7950d18565483b6ac16d6f29ef44b4a39b566cc2c687cd4d108c483b3b
7
- data.tar.gz: 5c3fde6b0c8e7179ca53ea4952ff8f1c7fdddc242d79e6d6a598e85f5c22f46fa7cf879d1f812e73ce096caf7ca1545f7c91ae11d916bdc288d1764fe4edac24
6
+ metadata.gz: be0c3524e9f856179ac50ef7116d22e1a9ca59e3eb6f7b223b789693d324c45e852d86f49d09c9950fa8c61bcdcc14d875adb668d2b10eb3aa9dcb551e306258
7
+ data.tar.gz: 11a075f75f5d5431ef10682cca0bb0f1ba8227f0f9e71a77af1dde540f5ae83bcc33fd8aaba73534a28bac8955d78d497aa456cb178bf274e199fdd200ee9472
data/README.md CHANGED
@@ -16,7 +16,8 @@ This plugins runs different Static Analyzers for checking your code on warnings,
16
16
  Each analyzer in this plugin generate separate report `codeAnalysResult_<name of analyzer>.xml` and
17
17
  save result status in shared values `<NAME>_ANALYZER_STATUS`: 0 - code is clear, any other value - code include warnings/errors.
18
18
  Finally you can check plugin return value (true='code is clear'/false) to decide what to do next. <br />
19
- All reports are generated in JUnit format for easier start-up at the CI servers.
19
+ All reports are generated in JUnit format for easier start-up at the CI servers.<br />
20
+ This plugin can be used in pair with CI static code analysis plugins. Check out the `Using CI plugins` section.
20
21
 
21
22
  ## Important
22
23
  - You can configure rubocop analyzer by creating configuration file `.rubocop.yml` in your project (more about rubocop configuration http://rubocop.readthedocs.io/en/latest/cops/)
@@ -25,7 +26,7 @@ All reports are generated in JUnit format for easier start-up at the CI servers.
25
26
  ### Specific for copy paste analyzer (CPD)
26
27
  - PMD have to be installed on your machine (http://pmd.sourceforge.net/snapshot/usage/installing.html)
27
28
  - [!]Pay attention on language parameter: if your code language is available in supported list you have to set this parameter.
28
-
29
+
29
30
  ## Actions
30
31
 
31
32
  `code_static_analyzer` - runs all configured analyzers together (Copy paste analyzer always runs).<br />
@@ -56,7 +57,8 @@ code_static_analyzer(
56
57
  xcode_project_name: 'path/to/TestProject',
57
58
  xcode_workspace_name: 'path/to/testWorkspace',
58
59
  xcode_targets: ['TPClientTarget','TPServerTarget'],
59
- ruby_files: 'fastlane/Fastfile'
60
+ ruby_files: 'fastlane/Fastfile',
61
+ disable_junit: 'all' # don't create any results in JUnit format
60
62
  )
61
63
  ````
62
64
  Parameter | Description
@@ -71,6 +73,7 @@ Parameter | Description
71
73
  `xcode_workspace_name`| *(optional)* Xcode workspace name in work directory. Set it if you use different project & workspace names
72
74
  `xcode_targets` | *(optional)* List of Xcode targets to inspect. By default used all targets which are available in project
73
75
  `ruby_files` | *(optional)* List of paths to ruby files to be inspected
76
+ `disable_junit` | *(optional)* List of analysers for which you want to disable results in JUnit format.<br />Supported analyzers: "xcodeWar", "rubocop", "CPD", "all"<br />By default all results will be created in JUnit format.
74
77
 
75
78
  ### `code_static_analyzer` other examples (full configuration):
76
79
  CPD:
@@ -93,7 +96,8 @@ code_static_analyzer(
93
96
  cpd_language: 'objectivec',
94
97
  cpd_files_to_inspect: %w('path/to/myFiles/' 'path/to/testFiles/'),
95
98
  cpd_files_to_exclude: %w('Pods' 'ThirdParty'),
96
- ruby_files: 'fastlane/Fastfile'
99
+ ruby_files: 'fastlane/Fastfile',
100
+ disable_junit: 'CPD' # results of rubocop analyzer - in JUnit format, CPD analyzer - not in JUnit format
97
101
  )
98
102
  ````
99
103
  CPD + Xcode project warnings:
@@ -110,24 +114,17 @@ code_static_analyzer(
110
114
  xcode_targets: ['TPClientTarget','TPServerTarget'],
111
115
  )
112
116
  ````
117
+ ## Using CI plugins
113
118
 
114
- ## Run tests for this plugin
115
-
116
- To run both the tests, and code style validation, run
117
-
118
- ```
119
- rake
120
- ```
121
-
122
- To automatically fix many of the styling issues, use
123
- ```
124
- rubocop -a
125
- ```
119
+ If you want to use CI static code analysis plugins pay attention on type of file which they use.
120
+ Commonly CI static code analysis plugins don't scan files in JUnit format, so you need to `disable usage of results in JUnit format` (especially for ruby analyzer).
121
+ After that each analyzer in this plugin will generate separate report(s):
122
+ CPD analyzer - `cpd.xml`; Ruby analyzer - `ruby.log`; Warning analyzer - `warnings_<target name>.log`
126
123
 
127
124
  ## Issues and Feedback
128
125
 
129
126
  - In some cases CPD can't recognize patterns in file/dir paths like `path/to/files/*.m`
130
- (about path you may read in CPD documentation: http://pmd.sourceforge.net/snapshot/usage/cpd-usage.html)<br />
127
+ (about path you may read in [CPD documentation](http://pmd.sourceforge.net/snapshot/usage/cpd-usage.html)).<br />
131
128
  For any other issues and feedback about this plugin, please submit it to this repository.
132
129
 
133
130
  ## Troubleshooting
@@ -59,7 +59,7 @@ module JunitParser
59
59
  end
60
60
 
61
61
  def self.construct_failure_mes(attributes, values)
62
- properties = xml_level(0).to_s
62
+ properties = ''
63
63
  attributes.each_with_index do |property, index|
64
64
  value = values[index]
65
65
  properties += format("#{xml_level(4)}%-18s: %s", property, value) unless value.nil?
@@ -104,34 +104,57 @@ module JunitParser
104
104
  def self.parse_xcode_log(file, project, is_warn)
105
105
  if is_warn
106
106
  error_text = ''
107
+ temp_testcase = ''
107
108
  File.open(file).each do |line|
108
- if line =~ /warning:|error:/
109
+ if line =~ /warning:|error:|BCEROR/
110
+ failure_type = get_failure_type(line)
109
111
  warning_params = line.split(':')
110
112
  if warning_params.count == 5
111
- error_text += construct_failure_mes(
112
- ['Error ClassType', 'Error in File', 'Error Line', 'Error Message'],
113
- [get_failure_type(warning_params[4]), warning_params[0].tr('<', '').tr('>', ''),
114
- "#{warning_params[1]}:#{warning_params[2]}", warning_params[4].tr("\n", '')]
113
+ error_text = construct_failure_mes(
114
+ ['Error ClassType', 'Error Message'],
115
+ [failure_type, warning_params[4].tr("\n", '')]
115
116
  )
117
+ testcase_name = project+':'+warning_params[0].tr('<', '').tr('>', '')+
118
+ ":#{warning_params[1]}:#{warning_params[2]}"
116
119
  else
117
- error_text += construct_failure_mes(
120
+ error_text = construct_failure_mes(
118
121
  ['Error ClassType', 'Error Message'],
119
- ['-W', line.tr("\n", '')]
122
+ [failure_type, line.tr("\n", '').gsub('warning:','')]
120
123
  )
124
+ testcase_name = project
125
+ testcase_name += ':project configuration' if line =~ /BCEROR/
126
+ file_info = check_for_file_info(warning_params)
127
+ testcase_name += ":#{file_info[0]}" unless file_info[0]==nil
128
+ testcase_name += ":#{file_info[1]}" unless file_info[1]==nil
121
129
  end
130
+ failures = add_failure('', '', error_text)
131
+ temp_testcase += add_failed_testcase(testcase_name, failures)
122
132
  end
123
- next unless line =~ /BCEROR/
124
- error_text += construct_failure_mes(['Error ClassType', 'Error in File', 'Error Message'],
125
- [get_failure_type(line), 'project configuration',
126
- line.tr("\n", '')])
127
133
  end
128
- failures = add_failure('', '', error_text)
129
- add_failed_testcase(project, failures)
134
+ temp_testcase
130
135
  else
131
136
  add_success_testcase(project)
132
137
  end
133
138
  end
134
-
139
+
140
+ def self.check_for_file_info(text_list)
141
+ result =[]
142
+ text_list.each_with_index do |text, i|
143
+ file = /([a-zA-Z0-9\.]*)?(\/[a-zA-Z0-9\._-]+)*(\.){1}[a-zA-Z0-9\._-]+/.match(text)
144
+ file = nil if file.to_s =~ /\.{2,}/
145
+ unless file==nil
146
+ next_value=text_list.to_a[i.to_i+1].nil? ? '' : text_list.to_a[i.to_i+1]
147
+ line = /[0-9]+/.match(next_value)
148
+ if line ==nil
149
+ result=[file]
150
+ else
151
+ result=[file, line]
152
+ end
153
+ break
154
+ end
155
+ end
156
+ result
157
+ end
135
158
  #####################################################
136
159
  # ============== Rubocop-json Parser ================
137
160
  #####################################################
@@ -24,7 +24,15 @@ module Fastlane
24
24
  xcode_project = params[:xcode_project_name]
25
25
  xcode_workspace = params[:xcode_workspace_name]
26
26
  xcode_targets = params[:xcode_targets]
27
- # use additional checks for optional parameters, but required in specific analyzer
27
+
28
+ # use additional checks for optional parameters, but required in specific analyzer
29
+ exclude_junit = params[:disable_junit]
30
+ if exclude_junit
31
+ exclude_junit.each do |exclude_from|
32
+ UI.error "disable_junit parameter is partly skipped: the analyzer '#{exclude_from}' is not supported. Supported analyzers: #{SUPPORTED_ANALYZER}, 'all'" unless SUPPORTED_ANALYZER.map(&:downcase).include? exclude_from.downcase or exclude_from == 'all'
33
+ end
34
+ exclude_junit = SUPPORTED_ANALYZER if exclude_junit[0] == 'all'
35
+ end
28
36
  analyzers.each do |analyzer|
29
37
  case analyzer.downcase
30
38
  when 'xcodewar'
@@ -43,8 +51,10 @@ module Fastlane
43
51
  sh "rm -rf #{clear_all_files}"
44
52
 
45
53
  # Run alyzers
54
+ use_junit = is_include(exclude_junit, "cpd") ? false : true
46
55
  status_cpd = Actions::CpdAnalyzerAction.run(
47
56
  result_dir: params[:result_dir],
57
+ use_junit_format: use_junit,
48
58
  tokens: params[:cpd_tokens],
49
59
  language: params[:cpd_language],
50
60
  cpd_files_to_inspect: params[:cpd_files_to_inspect],
@@ -53,24 +63,28 @@ module Fastlane
53
63
  analyzers.each do |analyzer|
54
64
  case analyzer.downcase
55
65
  when 'xcodewar'
66
+ use_junit = is_include(exclude_junit, "xcodewar") ? false : true
56
67
  if platform != "android"
57
68
  status_static = Actions::WarningAnalyzerAction.run(
58
69
  result_dir: params[:result_dir],
59
70
  xcode_project_name: xcode_project,
60
71
  xcode_workspace_name: xcode_workspace,
61
- xcode_targets: xcode_targets
72
+ xcode_targets: xcode_targets,
73
+ use_junit_format: use_junit
62
74
  )
63
75
  end
64
76
  when 'rubocop'
77
+ use_junit = is_include(exclude_junit, "rubocop") ? false : true
65
78
  status_rubocop = Actions::RubyAnalyzerAction.run(
66
79
  result_dir: params[:result_dir],
67
- ruby_files: params[:ruby_files]
80
+ ruby_files: params[:ruby_files],
81
+ use_junit_format: use_junit
68
82
  )
69
83
  end
70
84
  end
71
85
  # sh "rm -rf #{clear_temp_files}"
72
86
 
73
- create_analyzers_run_result("#{root_dir}#{params[:result_dir]}/") unless @xml_content.empty?
87
+ create_analyzers_run_result("#{root_dir}#{params[:result_dir]}/")
74
88
 
75
89
  if Actions::CodeStaticAnalyzerAction.status_to_boolean(status_cpd) &&
76
90
  Actions::CodeStaticAnalyzerAction.status_to_boolean(status_static) &&
@@ -127,6 +141,16 @@ module Fastlane
127
141
  end
128
142
  end
129
143
 
144
+ def self.is_include(list, value)
145
+ if list
146
+ list = list.map(&:downcase)
147
+ value = value.downcase
148
+ return (list.include? value) ? true : false
149
+ else
150
+ return false
151
+ end
152
+ end
153
+
130
154
  def self.is_pmd_installed
131
155
  @checked_pmd = false
132
156
  begin
@@ -243,6 +267,11 @@ module Fastlane
243
267
  UI.user_error!("The analyzer '#{run_analyzer}' is not supported. Supported analyzers: #{SUPPORTED_ANALYZER}, 'all'") unless SUPPORTED_ANALYZER.map(&:downcase).include? run_analyzer.downcase or run_analyzer == 'all'
244
268
  end
245
269
  end),
270
+ FastlaneCore::ConfigItem.new(key: :disable_junit,
271
+ env_name: "FL_CSA_DISABLED_JUNIT_RESULTS",
272
+ description: "List of analysers for which you want to disable results in JUnit format. Supported analyzers: #{SUPPORTED_ANALYZER}, 'all'",
273
+ optional: true,
274
+ type: Array),
246
275
  FastlaneCore::ConfigItem.new(key: :result_dir,
247
276
  env_name: "CSA_RESULT_DIR_NAME",
248
277
  description: "Directory's name for storing analysis results",
@@ -11,7 +11,6 @@ module Fastlane
11
11
  UI.header 'CPD analyzer' if Actions::CodeStaticAnalyzerAction.run_from_main_action
12
12
  Actions::CodeStaticAnalyzerAction.is_pmd_installed unless Actions::CodeStaticAnalyzerAction.checked_pmd
13
13
  work_dir = Actions::CodeStaticAnalyzerAction.work_dir
14
-
15
14
  # checking files for analysing
16
15
  files_to_exclude = params[:cpd_files_to_exclude]
17
16
  files_to_inspect = params[:cpd_files_to_inspect]
@@ -22,7 +21,7 @@ module Fastlane
22
21
  # prepare script and metadata for saving results
23
22
  result_dir_path = "#{work_dir}#{params[:result_dir]}"
24
23
  FileUtils.mkdir_p(result_dir_path) unless File.exist?(result_dir_path)
25
- temp_result_file = "#{result_dir_path}/temp_copypaste.xml"
24
+ temp_result_file = "#{result_dir_path}/cpd.xml"
26
25
  result_file = "#{result_dir_path}/codeAnalysResults_cpd.xml"
27
26
  tokens = params[:tokens]
28
27
  files = Actions::CodeStaticAnalyzerAction.add_root_path(work_dir, files_to_inspect, true)
@@ -52,9 +51,12 @@ module Fastlane
52
51
  status = 43
53
52
  else
54
53
  status = 0 if File.read(temp_result_file).empty?
55
- xml_content = JunitParser.parse_xml(temp_result_file)
56
- junit_xml = JunitParser.add_testsuite('copypaste', xml_content)
57
- JunitParser.create_junit_xml(junit_xml, result_file)
54
+ if params[:use_junit_format]
55
+ UI.message 'CPD analyzer generates result in JUnit format'
56
+ xml_content = JunitParser.parse_xml(temp_result_file)
57
+ junit_xml = JunitParser.add_testsuite('copypaste', xml_content)
58
+ JunitParser.create_junit_xml(junit_xml, result_file)
59
+ end
58
60
  end
59
61
  Actions.lane_context[SharedValues::CPD_ANALYZER_STATUS] = status
60
62
  end
@@ -83,6 +85,12 @@ module Fastlane
83
85
  optional: true,
84
86
  type: String,
85
87
  default_value: 'artifacts'),
88
+ FastlaneCore::ConfigItem.new(key: :use_junit_format,
89
+ env_name: "FL_CPD_ANALYZER_USE_JUNIT_RESULTS",
90
+ description: "Generate results in JUnit format.",
91
+ optional: true,
92
+ type: BOOL,
93
+ default_value: true),
86
94
  FastlaneCore::ConfigItem.new(key: :tokens,
87
95
  env_name: "FL_CPD_ANALYZER_TOKENS",
88
96
  description: "The min number of words in code that is detected as copy paste",
@@ -18,10 +18,15 @@ module Fastlane
18
18
  # prepare script and metadata for saving results
19
19
  result_dir_path = "#{work_dir}#{params[:result_dir]}"
20
20
  FileUtils.mkdir_p(result_dir_path) unless File.exist?(result_dir_path)
21
- temp_result_file = "#{result_dir_path}/temp_ruby.json"
22
21
  result_file = "#{result_dir_path}/codeAnalysResults_ruby.xml"
23
22
  files = Actions::CodeStaticAnalyzerAction.add_root_path(work_dir, files_to_inspect, true)
24
- run_script = "bundle exec rubocop -f j -a #{files}"
23
+ if params[:use_junit_format]
24
+ temp_result_file = "#{result_dir_path}/ruby.json"
25
+ run_script = "bundle exec rubocop -f j -a #{files}"
26
+ else
27
+ temp_result_file = "#{result_dir_path}/ruby.log"
28
+ run_script = "bundle exec rubocop -a #{files}"
29
+ end
25
30
  run_script_path = File.join CodeStaticAnalyzer::ROOT, "assets/run_script.sh"
26
31
  run_script = "#{run_script_path} \"#{run_script}\" '#{temp_result_file}'"
27
32
  # use analyzer
@@ -40,9 +45,12 @@ module Fastlane
40
45
  status = 43
41
46
  else
42
47
  status = 0 if File.read(temp_result_file).empty?
43
- xml_content = JunitParser.parse_json(temp_result_file)
44
- junit_xml = JunitParser.add_testsuite('rubocop', xml_content)
45
- JunitParser.create_junit_xml(junit_xml, result_file)
48
+ if params[:use_junit_format]
49
+ UI.message 'Ruby analyzer generates result in JUnit format'
50
+ xml_content = JunitParser.parse_json(temp_result_file)
51
+ junit_xml = JunitParser.add_testsuite('rubocop', xml_content)
52
+ JunitParser.create_junit_xml(junit_xml, result_file)
53
+ end
46
54
  end
47
55
  Actions.lane_context[SharedValues::RUBY_ANALYZER_STATUS] = status
48
56
  end
@@ -76,7 +84,13 @@ module Fastlane
76
84
  env_name: "FL_RUBY_ANALYZER_FILES_TO_INSPECT",
77
85
  description: "List of path (relative to work directory) to ruby files to be inspected",
78
86
  optional: true,
79
- type: Array)
87
+ type: Array),
88
+ FastlaneCore::ConfigItem.new(key: :use_junit_format,
89
+ env_name: "FL_RUBY_ANALYZER_USE_JUNIT_RESULTS",
90
+ description: "Generate results in JUnit format.",
91
+ optional: true,
92
+ type: BOOL,
93
+ default_value: true)
80
94
  ]
81
95
  end
82
96
 
@@ -31,7 +31,7 @@ module Fastlane
31
31
 
32
32
  status_static_arr = []
33
33
  xml_content = ''
34
- temp_result_file = "#{result_dir_path}/temp_warnings.log"
34
+ # temp_result_file = "#{result_dir_path}/warnings.log"
35
35
  result_file = "#{result_dir_path}/codeAnalysResults_warning.xml"
36
36
 
37
37
  # use analyzer and collect results
@@ -39,6 +39,7 @@ module Fastlane
39
39
  project_workspace = workspace if is_workspace
40
40
  Actions::CodeStaticAnalyzerAction.start_xml_content unless Actions::CodeStaticAnalyzerAction.run_from_main_action
41
41
  targets.each do |target|
42
+ temp_result_file = "#{result_dir_path}/warnings_#{target}.log"
42
43
  Formatter.xcode_format(target)
43
44
  run_script = "#{run_script_path} #{project_workspace} #{target} '#{temp_result_file}' #{is_workspace}"
44
45
  FastlaneCore::CommandExecutor.execute(command: run_script.to_s,
@@ -52,7 +53,7 @@ module Fastlane
52
53
  if Dir.glob(temp_result_file).empty?
53
54
  Actions::CodeStaticAnalyzerAction.add_xml_content("#{result_dir_path}/", 'iOS Warning', temp_result_file, '')
54
55
  Actions::CodeStaticAnalyzerAction.create_analyzers_run_result("#{result_dir_path}/") unless Actions::CodeStaticAnalyzerAction.run_from_main_action
55
- status_static_arr.push(1)
56
+ status_static_arr.push(2)
56
57
  else
57
58
  file = File.read(temp_result_file)
58
59
  UI.important "wrong profiles. Code isn't checked" if file =~ /BCEROR/
@@ -62,14 +63,17 @@ module Fastlane
62
63
  else
63
64
  status_static_arr.push(0)
64
65
  end
65
- xml_content += JunitParser.parse_xcode_log(temp_result_file, target, is_warnings)
66
+ xml_content += JunitParser.parse_xcode_log(temp_result_file, target, is_warnings) if params[:use_junit_format]
66
67
  end
67
68
  end
68
69
 
69
70
  # prepare results
70
- unless Dir.glob(temp_result_file).empty?
71
- junit_xml = JunitParser.add_testsuite('xcode warnings', xml_content)
72
- JunitParser.create_junit_xml(junit_xml, result_file)
71
+ if params[:use_junit_format]
72
+ UI.message 'Warning analyzer generates results in JUnit format'
73
+ unless status_static_arr.include? '2'
74
+ junit_xml = JunitParser.add_testsuite('xcode warnings', xml_content)
75
+ JunitParser.create_junit_xml(junit_xml, result_file)
76
+ end
73
77
  end
74
78
  status = if status_static_arr.any? { |x| x > 0 }
75
79
  1
@@ -98,29 +102,35 @@ module Fastlane
98
102
  # Define all options your action supports.
99
103
  [
100
104
  FastlaneCore::ConfigItem.new(key: :result_dir,
101
- env_name: "FL_WARNING_ANALYZER_RESULT_DIR",
102
- description: "Directory's name for storing analysis results",
103
- optional: true,
104
- type: String,
105
- default_value: 'artifacts'),
105
+ env_name: "FL_WARNING_ANALYZER_RESULT_DIR",
106
+ description: "Directory's name for storing analysis results",
107
+ optional: true,
108
+ type: String,
109
+ default_value: 'artifacts'),
110
+ FastlaneCore::ConfigItem.new(key: :use_junit_format,
111
+ env_name: "FL_WARNING_ANALYZER_USE_JUNIT_RESULTS",
112
+ description: "Generate results in JUnit format.",
113
+ optional: true,
114
+ type: BOOL,
115
+ default_value: true),
106
116
  FastlaneCore::ConfigItem.new(key: :xcode_project_name,
107
- env_name: "FL_WARNING_ANALYZER_PROJECT_NAME",
108
- description: "Xcode project name in work directory",
109
- optional: false,
110
- type: String,
111
- verify_block: proc do |value|
112
- UI.user_error!("No project name for WarningAnalyzerAction given, pass using `xcode_project_name` parameter") unless value and !value.empty?
113
- end),
117
+ env_name: "FL_WARNING_ANALYZER_PROJECT_NAME",
118
+ description: "Xcode project name in work directory",
119
+ optional: false,
120
+ type: String,
121
+ verify_block: proc do |value|
122
+ UI.user_error!("No project name for WarningAnalyzerAction given, pass using `xcode_project_name` parameter") unless value and !value.empty?
123
+ end),
114
124
  FastlaneCore::ConfigItem.new(key: :xcode_workspace_name,
115
- env_name: "FL_WARNING_ANALYZER_WORKSPACE_NAME",
116
- description: "Xcode workspace name in work directory. Set it if you use different project & workspace names",
117
- optional: true,
118
- type: String),
125
+ env_name: "FL_WARNING_ANALYZER_WORKSPACE_NAME",
126
+ description: "Xcode workspace name in work directory. Set it if you use different project & workspace names",
127
+ optional: true,
128
+ type: String),
119
129
  FastlaneCore::ConfigItem.new(key: :xcode_targets,
120
- env_name: "FL_WARNING_ANALYZER_TARGETS",
121
- description: "List of Xcode targets to inspect. By default used all project targets",
122
- optional: true,
123
- type: Array)
130
+ env_name: "FL_WARNING_ANALYZER_TARGETS",
131
+ description: "List of Xcode targets to inspect. By default used all project targets",
132
+ optional: true,
133
+ type: Array)
124
134
  ]
125
135
  end
126
136
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module CodeStaticAnalyzer
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-code_static_analyzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olga Kniazska
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-10 00:00:00.000000000 Z
11
+ date: 2017-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: crack