The Ruby community maintain a style guide.
RuboCop is a static analysis tool for Ruby source code, which could automatically find violation for this style guide.
It's triggered by Arcanist at diff time or manually through arc lint --everything.
We need to upgrade code to pass linter checks:
1 | >>> Lint for tommy.rb: |
---|---|
2 | |
3 | |
4 | Warning (Style/FrozenStringLiteralComment) RuboCop |
5 | Style/FrozenStringLiteralComment: Missing magic comment `# |
6 | frozen_string_literal: true`. |
7 | |
8 | >>> 1 # ------------------------------------------------------------- |
9 | ^ |
10 | 2 # Tommy - Visualisation dashboard for Jenkins |
11 | 3 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
12 | 4 # Author: Arfon Smitn (Zooniverse) |
13 | |
14 | Warning (Metrics/AbcSize) RuboCop |
15 | Metrics/AbcSize: Assignment Branch Condition size for parse_project is |
16 | too high. [25.81/15] |
17 | |
18 | 52 ## |
19 | 53 # Parses a job element of the Jenkins API. |
20 | 54 # Returns a Project instance. |
21 | >>> 55 def self.parse_project(data) |
22 | ^ |
23 | 56 project = Project.new( |
24 | 57 name: data['displayName'].tr('-', ' '), |
25 | 58 last_build_number: data['builds'].first['number'], |
26 | |
27 | Warning (Metrics/MethodLength) RuboCop |
28 | Metrics/MethodLength: Method has too many lines. [24/10] |
29 | |
30 | 52 ## |
31 | 53 # Parses a job element of the Jenkins API. |
32 | 54 # Returns a Project instance. |
33 | >>> 55 def self.parse_project(data) |
34 | ^ |
35 | 56 project = Project.new( |
36 | 57 name: data['displayName'].tr('-', ' '), |
37 | 58 last_build_number: data['builds'].first['number'], |
38 | |
39 | Warning (Layout/EmptyLineAfterGuardClause) RuboCop |
40 | Layout/EmptyLineAfterGuardClause: Add empty line after guard clause. |
41 | |
42 | 74 'lastFailedBuild' => 'last_failed_url=' |
43 | 75 } |
44 | 76 urls.each do |api_property, local_property| |
45 | >>> 77 next if data[api_property].blank? |
46 | ^ |
47 | 78 project.send(local_property, data[api_property]['url']) |
48 | 79 end |
49 | 80 |
See also P204 for the output from rubocop tommy.b (the same, more compact).