java-checkstyle 1.0.0 → 1.0.3

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: 726ce64842d1a5659c871c86418aa4b0672a3e5c
4
- data.tar.gz: 8c825774132b66642463a447e35027fe14a28d7d
3
+ metadata.gz: 4e339fa95b5ee175c07cf559479c5895eacc8ddf
4
+ data.tar.gz: a8e505970de9afb9051819568191d160bb57fb54
5
5
  SHA512:
6
- metadata.gz: b28d57af8e812686bd780159407c651fe09f2a460d3779324ac87a5e7d2eb628250f3142996b2cc2b7f0d15c16712134d7aff2047b43250e743d1acfeb14a688
7
- data.tar.gz: 80e93ca8085577907461404de4de41bfc369412cb15118f6a48d7139b71ecad1472983ff108b7200c759f6490a51e8614b75eff4c19b0041181f23dc7b44357b
6
+ metadata.gz: 544ed8c52e58bf1950ee606da1df6623d68a08e1fc0bafea8cffa2620a7a5a488e89baa8e82889a6c4b54723b22affcfd956345d27cf55ade03eeb2c2d20d010
7
+ data.tar.gz: 2b0befcd3dffc6f711299134aa1bd00bd3373f0307e81dcefa405f08f06c9e2783417100911e8d7bc22be4e7764eb8737b0df763ef90d3cc62428edd75b40153
data/README.md CHANGED
@@ -4,13 +4,15 @@
4
4
  [![Code Climate](https://codeclimate.com/github/CristianOliveiraDaRosa/java-checkstyle/badges/gpa.svg)](https://codeclimate.com/github/CristianOliveiraDaRosa/java-checkstyle)
5
5
  [![Test Coverage](https://codeclimate.com/github/CristianOliveiraDaRosa/java-checkstyle/badges/coverage.svg)](https://codeclimate.com/github/CristianOliveiraDaRosa/java-checkstyle/coverage)
6
6
 
7
- Useful pre-commit hook for linting Java code. It uses as default [The Google Style Guide](https://google.github.io/styleguide/javaguide.html)
7
+ Useful git pre-commit hook for linting Java code.
8
8
 
9
- It uses the famous [Checkstyle](http://checkstyle.sourceforge.net/) linter as a plugin for [pre-commit](https://github.com/jish/pre-commit).
9
+ It uses as default [The Google Style Guide](https://google.github.io/styleguide/javaguide.html)
10
+ and the famous [Checkstyle](http://checkstyle.sourceforge.net/) linter as a plugin for [pre-commit](https://github.com/jish/pre-commit).
10
11
 
11
12
  ## Demo
12
13
 
13
14
  ![My awesome change has been catch. Oh boy!](https://raw.githubusercontent.com/CristianOliveiraDaRosa/java-checkstyle/master/readmedemo.png)
15
+ [Don't you know who is Leeroy Jenkins?](https://www.youtube.com/watch?v=mLyOj_QD4a4)
14
16
 
15
17
  ## Installation
16
18
 
@@ -23,6 +25,9 @@ First install the gems.
23
25
 
24
26
  gem install java-checkstyle
25
27
 
28
+ ##### (optional) If you use RVM
29
+ Take a look here [Install with RVM](https://github.com/jish/pre-commit#rvm)
30
+
26
31
  ### Configuring
27
32
  Use the pre-commit command to generate a stub pre-commit hook.
28
33
  Inside folder of your git repo:
@@ -47,7 +52,7 @@ pre-commit enable yaml checks checkstyle
47
52
 
48
53
  ### Result
49
54
  Every time you try to commit some java code with style errors it will validate
50
- before.
55
+ for you ensuring that your code will be always awesome.
51
56
 
52
57
  ---
53
58
  #### Detailed version to install.
@@ -55,21 +60,6 @@ Still don't work? Try the detailed version [here](https://github.com/CristianOli
55
60
 
56
61
  ---
57
62
 
58
- ## Installing with RVM
59
-
60
- If you are using rvm you need to install pre-commit into the ```default``` gemset, because it does not use the ```current``` environment
61
-
62
- $ rvm default do gem install pre-commit
63
-
64
- Alternatively you can configure pre-commit to use the ```current``` rvm gemset
65
-
66
- $ git config pre-commit.ruby "rvm `rvm current` do ruby"
67
-
68
- More details about this part see on:
69
- [pre-commit](https://github.com/jish/pre-commit)
70
-
71
- And your pre-commit hook has been configured.
72
-
73
63
  ## Checkstyle Guide
74
64
 
75
65
  It uses as default [The Google Style Guide](https://google.github.io/styleguide/javaguide.html).
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'pre-commit/checkstyle/version'
4
+ require './lib/plugins/pre-commit/checkstyle/version.rb'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "java-checkstyle"
@@ -1,5 +1,5 @@
1
1
  ##
2
- # This a fork version of the original
2
+ # This is a fork version of the original
3
3
  # checkstyle:
4
4
  # https://github.com/secondrotation/pre-commit-checkstyle
5
5
  #
@@ -10,7 +10,10 @@ module PreCommit
10
10
  # Allen Madsen (Original Version 0.0.1)
11
11
  # Cristian Oliveira
12
12
  # Alex Rocha
13
+ #
14
+ # Main file: checks/checkstyle.rb
15
+
13
16
  module Checkstyle
14
- VERSION = '1.0.0'
17
+ VERSION = '1.0.3'
15
18
  end
16
19
  end
@@ -0,0 +1,18 @@
1
+ module Domain
2
+ ##
3
+ # Represents a file with style errors.
4
+ #
5
+ class BadFile
6
+ attr_reader :name, :errors
7
+
8
+ ##
9
+ # Instanciate a default bad file.
10
+ #
11
+ # @param [String] The File name
12
+ # @param [Array] The errors
13
+ def initialize(name, errors)
14
+ @name = name
15
+ @errors = errors
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,25 @@
1
+ module Domain
2
+ ##
3
+ # Represents the Checkstyle
4
+ # @param [Array] of bad files
5
+ class Checkstyle
6
+ attr_reader :bad_files
7
+
8
+ def initialize(bad_files)
9
+ @bad_files = bad_files
10
+ end
11
+
12
+ ##
13
+ # A good checkstyle means no errors.
14
+ #
15
+ def good?
16
+ @bad_files.nil? || @bad_files.empty?
17
+ end
18
+
19
+ ##
20
+ # Factory for Checkstyle without errors
21
+ def self.good
22
+ Domain::Checkstyle.new(nil)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,48 @@
1
+ require 'crack'
2
+ require_relative '../domain/checkstyle'
3
+ require_relative '../domain/bad_file'
4
+
5
+ module PreCommit
6
+ module Message
7
+ ##
8
+ # Responsible for extract error messages from terminal output
9
+ class Extractor
10
+ ##
11
+ # Extract data from a XML formatted +output+
12
+ #
13
+ # @param output [String] Xml formatted ouput
14
+ # @return [Hash]
15
+ def extract(output)
16
+ return Domain::Checkstyle.good if output.nil? || output.empty?
17
+ xml_data = Crack::XML.parse(xml_content(output))
18
+
19
+ files = xml_data['checkstyle']['file']
20
+
21
+ Domain::Checkstyle.new(extract_bad_file(files))
22
+ end
23
+
24
+ private
25
+
26
+ def xml_content(raw_output)
27
+ raw_output[/<(.*)>/m]
28
+ end
29
+
30
+ def extract_bad_file(xml_files)
31
+ return [create_bad_file(xml_files)] unless xml_files.is_a? Array
32
+
33
+ xml_files.reduce([]) { |a, e| a.push(create_bad_file(e)) }
34
+ end
35
+
36
+ def create_bad_file(file)
37
+ Domain::BadFile.new(file['name'], extract_errors(file['error']))
38
+ end
39
+
40
+ def extract_errors(xml_errors)
41
+ return [] if xml_errors.nil? || xml_errors.empty?
42
+ return [xml_errors] unless xml_errors.is_a? Array
43
+
44
+ xml_errors
45
+ end
46
+ end
47
+ end
48
+ end
@@ -10,37 +10,32 @@ module PreCommit
10
10
  # @return [String] formatted output (may return nil)
11
11
  # @raise ArgumentError when input is empty
12
12
  #
13
- def format(errors)
14
- throw ArgumentError.new if errors.nil? || errors.empty?
13
+ def format(checkstyle)
14
+ throw ArgumentError.new if checkstyle.nil?
15
+ return nil if checkstyle.good?
15
16
 
16
- files = errors['checkstyle']['file']
17
-
18
- return nil if files.empty?
19
- return format_single(files) unless files.is_a? Array
20
-
21
- format_multiple(files)
17
+ format_multiple(checkstyle.bad_files)
22
18
  end
23
19
 
24
20
  private
25
21
 
26
- def line(error)
27
- " line: #{error['line']}:#{error['column']}"\
28
- " error: #{error['message']}\n"
22
+ def format_multiple(files)
23
+ files.reduce('') { |a, e| a + format_single(e) }
24
+ end
25
+
26
+ def format_single(bad_file)
27
+ "File errors: #{bad_file.name} \n" + format_errors(bad_file.errors)
29
28
  end
30
29
 
31
30
  def format_errors(errors)
32
- return line(errors) unless errors.is_a? Array
33
31
  errors.reduce('') do |out, error|
34
32
  out + line(error)
35
33
  end
36
34
  end
37
35
 
38
- def format_single(file)
39
- "File errors: #{file['name']} \n" + format_errors(file['error'])
40
- end
41
-
42
- def format_multiple(files)
43
- files.reduce('') { |a, e| a + format_single(e) }
36
+ def line(error)
37
+ " line: #{error['line']}:#{error['column']}"\
38
+ " error: #{error['message']}\n"
44
39
  end
45
40
  end
46
41
  end
@@ -10,7 +10,7 @@ module Support
10
10
  # @return [String] formatted path
11
11
  def self.relative_to(file)
12
12
  File.expand_path(
13
- "../../../../pre-commit/support/checkstyle/#{file}",
13
+ "../../../../resources/checkstyle/#{file}",
14
14
  __FILE__
15
15
  )
16
16
  end
Binary file
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'plugins/pre_commit/checks/checkstyle'
2
+ require 'plugins/pre-commit/checks/checkstyle'
3
3
 
4
4
  describe PreCommit::Checks::Checkstyle do
5
5
  let(:config) {double(PreCommit::Configuration, get: '')}
@@ -1,34 +1,44 @@
1
1
  require 'spec_helper'
2
- require 'plugins/pre_commit/message/extractor'
2
+ require 'plugins/pre-commit/message/extractor'
3
+ require 'plugins/pre-commit/domain/checkstyle'
4
+ require 'plugins/pre-commit/domain/bad_file'
5
+
3
6
  ##
4
7
  # Tests for PreCommit::Message::Extractor
5
8
  describe PreCommit::Message::Extractor do
6
9
  let(:extractor) { PreCommit::Message::Extractor.new }
7
10
 
8
- context "empty output" do
9
- it "should return empty file for nil output" do
11
+ context "When nil output" do
12
+ it "should be good" do
10
13
  result = extractor.extract nil
11
- expect(result['checkstyle']['file']).to be_empty
14
+ expect(result).to be_good
12
15
  end
16
+ end
13
17
 
14
- it "should return empty file for empty output" do
18
+ context "When empty output" do
19
+ it "should be good" do
15
20
  result = extractor.extract ''
16
- expect(result['checkstyle']['file']).to be_empty
21
+ expect(result).to be_good
17
22
  end
18
23
  end
19
24
 
20
- context "has one bad file" do
25
+ context "When has one bad file" do
21
26
  # given
22
27
  let(:output) { IO.read(fixture_file("output_one_bad_file.log")) }
23
28
 
29
+ it "should not be good" do
30
+ result = extractor.extract output
31
+ expect(result).to_not be_good
32
+ end
33
+
24
34
  it "should contain one single file" do
25
35
  result = extractor.extract output
26
- expect(result['checkstyle']['file']).to be_a Hash
36
+ expect(result.bad_files).to be_a Array
27
37
  end
28
38
 
29
39
  it "should contain its errors" do
30
40
  result = extractor.extract output
31
- expect(result['checkstyle']['file']['error'].size).to eq 2
41
+ expect(result.bad_files[0].errors.size).to eq 2
32
42
  end
33
43
 
34
44
  it "should extract error details" do
@@ -49,23 +59,28 @@ describe PreCommit::Message::Extractor do
49
59
  ]
50
60
 
51
61
  result = extractor.extract output
52
- errors = result['checkstyle']['file']['error']
62
+ errors = result.bad_files[0].errors
53
63
  expect(errors).to eq expected
54
64
  end
55
65
  end
56
66
 
57
- context "has multiple bad files" do
67
+ context "When has multiple bad files" do
58
68
  let(:output) { IO.read(fixture_file("output_two_bad_files.log")) }
59
69
 
70
+ it "should not be good" do
71
+ result = extractor.extract output
72
+ expect(result).to_not be_good
73
+ end
74
+
60
75
  it "should extract multiple files" do
61
76
  result = extractor.extract output
62
- expect(result['checkstyle']['file']).to be_a Array
77
+ expect(result.bad_files).to be_a Array
63
78
  end
64
79
 
65
80
  it "should extract their errors" do
66
81
  result = extractor.extract output
67
- expect(result['checkstyle']['file'][0]['error'].size).to eq 2
68
- expect(result['checkstyle']['file'][1]['error'].size).to eq 2
82
+ expect(result.bad_files[0].errors.size).to eq 2
83
+ expect(result.bad_files[1].errors.size).to eq 2
69
84
  end
70
85
 
71
86
  it "should extract error details" do
@@ -86,8 +101,8 @@ describe PreCommit::Message::Extractor do
86
101
  ]
87
102
 
88
103
  result = extractor.extract output
89
- errors = result['checkstyle']['file'][0]['error']
90
- expect(errors).to eq expected
104
+
105
+ expect(result.bad_files[0].errors).to eq expected
91
106
  end
92
107
  end
93
108
  end
@@ -1,67 +1,54 @@
1
1
  require 'spec_helper'
2
- require 'plugins/pre_commit/message/formatter'
2
+ require 'plugins/pre-commit/message/formatter'
3
+ require 'plugins/pre-commit/domain/checkstyle'
4
+ require 'plugins/pre-commit/domain/bad_file'
5
+
3
6
  ##
4
7
  # Tests for PreCommit::Message::Formatter
5
8
  describe PreCommit::Message::Formatter do
6
9
  let(:formatter) { PreCommit::Message::Formatter.new }
7
10
 
11
+ let(:file_error) {
12
+ Domain::BadFile.new('/some/path/file_name.java',
13
+ [{
14
+ "line"=>"1",
15
+ "severity"=>"error",
16
+ "message"=>"some error message",
17
+ "source"=>"com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"
18
+ }])
19
+ }
20
+
21
+ let(:file_error_2) {
22
+ Domain::BadFile.new('/some/path/file_name2.java',
23
+ [{
24
+ "line"=>"11",
25
+ "column"=>"40",
26
+ "severity"=>"error",
27
+ "message"=>"some error message",
28
+ "source"=>"com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"
29
+ }])
30
+
31
+ }
32
+
8
33
  context "When has empty input" do
9
34
  it {expect{ formatter.format(nil) }.to raise_error(ArgumentError)}
10
- it {expect{ formatter.format('') }.to raise_error(ArgumentError)}
11
35
  end
12
36
 
13
37
  context "When has no errors" do
14
- let(:errors) { { 'checkstyle' => { 'file' => [] } } }
15
- it { expect(formatter.format(errors)).to be_nil }
38
+ let(:good) { Domain::Checkstyle.good }
39
+ it { expect(formatter.format(good)).to be_nil }
16
40
  end
17
41
 
18
42
  context "When has one file" do
19
- let(:errors) do
20
- { 'checkstyle' => {
21
- 'file' => {
22
- 'name' => '/some/path/file_name.java',
23
- 'error' => [{
24
- "line"=>"1",
25
- "column"=>"40",
26
- "severity"=>"error",
27
- "message"=>"some error message",
28
- "source"=>"com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"
29
- }]
30
- }
31
- }
32
- }
33
- end
43
+ let(:errors) { Domain::Checkstyle.new( [ file_error ] ) }
34
44
 
35
45
  it{ expect(formatter.format(errors)).to include "File errors: /some/path/file_name.java"}
36
- it{ expect(formatter.format(errors)).to include " line: 1:40 error: some error message"}
46
+ it{ expect(formatter.format(errors)).to include " line: 1: error: some error message"}
37
47
  end
38
48
 
39
49
  context "When has more than one file" do
40
50
  let(:errors) do
41
- { 'checkstyle' => {
42
- 'file' => [
43
- {
44
- 'name' => '/some/path/file_name.java',
45
- 'error' => [{
46
- "line"=>"1",
47
- "severity"=>"error",
48
- "message"=>"some error message",
49
- "source"=>"com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"
50
- }]
51
- },
52
- {
53
- 'name' => '/some/path/file_name2.java',
54
- 'error' => [{
55
- "line"=>"11",
56
- "column"=>"40",
57
- "severity"=>"error",
58
- "message"=>"some error message",
59
- "source"=>"com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck"
60
- }]
61
- }
62
- ]
63
- }
64
- }
51
+ Domain::Checkstyle.new( [ file_error, file_error_2 ] )
65
52
  end
66
53
 
67
54
  it{ expect(formatter.format(errors)).to include "File errors: /some/path/file_name.java"}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: java-checkstyle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Madsen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-10-12 00:00:00.000000000 Z
13
+ date: 2015-10-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pre-commit
@@ -107,13 +107,15 @@ files:
107
107
  - Rakefile
108
108
  - demo.png
109
109
  - java-checkstyle.gemspec
110
- - lib/plugins/pre_commit/checks/checkstyle.rb
111
- - lib/plugins/pre_commit/message/extractor.rb
112
- - lib/plugins/pre_commit/message/formatter.rb
113
- - lib/plugins/pre_commit/support/path.rb
114
- - lib/pre-commit/checkstyle/version.rb
115
- - lib/pre-commit/support/checkstyle/checkstyle-6.11-all.jar
116
- - lib/pre-commit/support/checkstyle/google_checks.xml
110
+ - lib/plugins/pre-commit/checks/checkstyle.rb
111
+ - lib/plugins/pre-commit/checkstyle/version.rb
112
+ - lib/plugins/pre-commit/domain/bad_file.rb
113
+ - lib/plugins/pre-commit/domain/checkstyle.rb
114
+ - lib/plugins/pre-commit/message/extractor.rb
115
+ - lib/plugins/pre-commit/message/formatter.rb
116
+ - lib/plugins/pre-commit/support/path.rb
117
+ - lib/resources/checkstyle/checkstyle-6.11-all.jar
118
+ - lib/resources/checkstyle/google_checks.xml
117
119
  - readmedemo.png
118
120
  - spec/fixtures/bad.java
119
121
  - spec/fixtures/bad2.java
@@ -145,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
147
  version: '0'
146
148
  requirements: []
147
149
  rubyforge_project:
148
- rubygems_version: 2.4.3
150
+ rubygems_version: 2.4.8
149
151
  signing_key:
150
152
  specification_version: 4
151
153
  summary: Checkstyle linter plugin for pre-commit
@@ -160,3 +162,4 @@ test_files:
160
162
  - spec/plugins/pre_commit/message/extractor_spec.rb
161
163
  - spec/plugins/pre_commit/message/formatter_spec.rb
162
164
  - spec/spec_helper.rb
165
+ has_rdoc:
@@ -1,27 +0,0 @@
1
- require 'crack'
2
-
3
- module PreCommit
4
- module Message
5
- ##
6
- # Responsible for extract error messages from terminal output
7
- class Extractor
8
- EMPTY = { 'checkstyle' => { 'file' => [] } }
9
-
10
- ##
11
- # Extract data from a XML formatted +output+
12
- #
13
- # @param output [String] Xml formatted ouput
14
- # @return [Hash]
15
- def extract(output)
16
- return EMPTY if output.nil? || output.empty?
17
- Crack::XML.parse(xml_content(output))
18
- end
19
-
20
- private
21
-
22
- def xml_content(raw_output)
23
- raw_output[/<(.*)>/m]
24
- end
25
- end
26
- end
27
- end