codestats-metrics-reporter 0.1.12 → 0.1.13

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: c097d8266309dd3016a247a2321b54f82b7c534e
4
- data.tar.gz: 59e6935bc86dba55321f05e70dc172afb1d2af7f
3
+ metadata.gz: 9bb214d6a8a78f4c7139dd5516993f773857b677
4
+ data.tar.gz: ff3218028fcd4787d4c94dc508f42fe36d3be902
5
5
  SHA512:
6
- metadata.gz: 416a5ac7240d4e07a82d28244b0494706fab0313d0d98733d04a0e4c581055ac285dd6103059cd2933a4141b1f8754ab1e90fe9c3fcf660119ffef2dd5927afc
7
- data.tar.gz: 17c074610a5f9b1e396ec2ed98d394b39b75dbc4b183be35ddeb2d735c78960fe47db233df45b0bd471a66ed9d13795e39cc971696cbfb7cbe42f5fa7079c81c
6
+ metadata.gz: 34e752fb00081daf2dc05e1415700a37794cb2b0f769c18812ea50b6ce41cc0c5167c2255d20a2efaed67c39d65ee6738612e84391279d675567876dbafb15c7
7
+ data.tar.gz: c8f5db9ce8bfb915c501cabbbd8bc1de70eda0b97a535d2fc97d068acbb1b095a97a94181ec77aab31b6bd1751d5f2f935e3a21df14f067ee039f6fd597503ab
@@ -18,17 +18,27 @@ metrics:
18
18
  enabled: false
19
19
  minimum: 70
20
20
  slather:
21
- name: 'Slather'
21
+ name: 'Code Coverage (Slather)'
22
22
  enabled: false
23
23
  minimum: 70
24
24
  upload_report: true
25
- report_dir: 'coverage'
25
+ report_dir: 'slather-output'
26
+ uploader_key: <%= ENV['CODE_STATS_S3_KEY'] %>
27
+ uploader_secret: <%= ENV['CODE_STATS_S3_SECRET_KEY'] %>
28
+ uploader_region: <%= ENV['CODE_STATS_S3_REGION'] %>
29
+ uploader_bucket: <%= ENV['CODE_STATS_S3_BUCKET'] %>
30
+ swiftlint:
31
+ name: 'Code Quality (Swiftlint)'
32
+ enabled: false
33
+ minimum: 70
34
+ upload_report: true
35
+ report_dir: 'swiftlint-output'
26
36
  uploader_key: <%= ENV['CODE_STATS_S3_KEY'] %>
27
37
  uploader_secret: <%= ENV['CODE_STATS_S3_SECRET_KEY'] %>
28
38
  uploader_region: <%= ENV['CODE_STATS_S3_REGION'] %>
29
39
  uploader_bucket: <%= ENV['CODE_STATS_S3_BUCKET'] %>
30
40
  tailor:
31
- name: 'Code Quality'
41
+ name: 'Code Quality (Tailor)'
32
42
  enabled: false
33
43
  minimum: 70
34
44
  upload_report: true
@@ -6,6 +6,7 @@ require 'code_stats/metrics/reporter/cli'
6
6
  require 'code_stats/metrics/reporter/rubycritic'
7
7
  require 'code_stats/metrics/reporter/simplecov'
8
8
  require 'code_stats/metrics/reporter/slather'
9
+ require 'code_stats/metrics/reporter/swiftlint'
9
10
  require 'code_stats/metrics/reporter/tailor'
10
11
  require 'code_stats/metrics/reporter/karma_coverage'
11
12
  require 'code_stats/metrics/reporter/escomplex'
@@ -0,0 +1,77 @@
1
+ require 's3_uploader'
2
+ require 'pathname'
3
+ require 'json'
4
+
5
+ module CodeStats
6
+ module Metrics
7
+ module Reporter
8
+ class Swiftlint
9
+ class << self
10
+ def generate_data(metric, config_store)
11
+ @config_store = config_store
12
+ @metric = metric
13
+ {
14
+ metric_name: metric.data['name'],
15
+ value: parse_quality,
16
+ minimum: metric.data['minimum'],
17
+ url: url
18
+ }
19
+ end
20
+
21
+ private
22
+
23
+ def parse_quality
24
+ upload_report
25
+ code_quality
26
+ end
27
+
28
+ def code_quality
29
+ base_dir = Pathname.new(@metric.data['report_dir'])
30
+ html = File.read(base_dir.join('index.html'))
31
+
32
+ total_warnings = Oga.parse_html(html).xpath('html/body/table[2]/tbody/tr[2]/td[2]').text.to_i
33
+ total_errors = Oga.parse_html(html).xpath('html/body/table[2]/tbody/tr[3]/td[2]').text.to_i
34
+
35
+ total = 100
36
+ total -= total_errors * 100 # In case there are errors, code quality MUST be 0.
37
+ total -= total_warnings * 2 # Each warning substracts 2 from max.
38
+ [0, total].max
39
+ end
40
+
41
+ # Uploading methods
42
+
43
+ def upload_report
44
+ build_uploader.upload(File.realpath(@metric.data['report_dir']).to_s, bucket) if upload_report?
45
+ end
46
+
47
+ def build_uploader
48
+ S3Uploader::Uploader.new(s3_key: @metric.data['uploader_key'],
49
+ s3_secret: @metric.data['uploader_secret'],
50
+ destination_dir: "swiftlint/#{project}/#{id}",
51
+ region: @metric.data['uploader_region'])
52
+ end
53
+
54
+ def upload_report?
55
+ @metric.data['upload_report']
56
+ end
57
+
58
+ def url
59
+ "https://s3.amazonaws.com/#{bucket}/swiftlint/#{project}/#{id}/index.html"
60
+ end
61
+
62
+ def project
63
+ Ci.data(@config_store.ci)[:repository_name]
64
+ end
65
+
66
+ def id
67
+ Ci.data(@config_store.ci)[:branch] || Ci.data(@config_store.ci)[:pull_request]
68
+ end
69
+
70
+ def bucket
71
+ @metric.data['uploader_bucket']
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -1,7 +1,7 @@
1
1
  module CodeStats
2
2
  module Metrics
3
3
  module Reporter
4
- VERSION = '0.1.12'.freeze
4
+ VERSION = '0.1.13'.freeze
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codestats-metrics-reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esteban Pintos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-03 00:00:00.000000000 Z
11
+ date: 2017-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -159,6 +159,7 @@ files:
159
159
  - lib/code_stats/metrics/reporter/rubycritic.rb
160
160
  - lib/code_stats/metrics/reporter/simplecov.rb
161
161
  - lib/code_stats/metrics/reporter/slather.rb
162
+ - lib/code_stats/metrics/reporter/swiftlint.rb
162
163
  - lib/code_stats/metrics/reporter/tailor.rb
163
164
  - lib/code_stats/metrics/reporter/version.rb
164
165
  homepage: https://github.com/Wolox/codestats-metrics-reporter