roodi 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,11 +1,24 @@
1
- = 1.1.0
1
+ = 1.1.1
2
+
3
+ * I'd initially published to Rubyforge under a 1.0.0 gem, and I've since tried to retrospectively fix up the version number system. It turns out that Rubyforge caches old gems permanently, so I have to re-start at a larger number again.
4
+ * class name check no longer gets confused about scoped class names like Module::Classname.
5
+
6
+ = 0.5
7
+
8
+ * expanded regex matching for method name check.
9
+ * suppressed noisy output from ParseTree using facets API.
10
+ * updated dependencies and version as a result of facets change.
11
+ * made Roodi tolerant of being asked to parse files which aren't really Ruby files.
12
+ * updated the documentation with usage examples.
13
+
14
+ = 0.4
2
15
 
3
16
  * Added support back in for line numbers in error messages.
4
17
  * Re-enabled MethodLineCountCheck as part of the default check set.
5
18
 
6
- = 1.0.0
19
+ = 0.3
7
20
 
8
- * First release of Roodi.
21
+ * First version of Roodi to be published to Rubyforge.
9
22
 
10
23
  = 0.2
11
24
 
data/README.txt CHANGED
@@ -1,11 +1,35 @@
1
1
  = roodi
2
2
 
3
- * http://www.rubyforge.org/
3
+ * http://roodi.rubyforge.org
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
7
  Roodi stands for Ruby Object Oriented Design Inferometer. It parses your Ruby code and warns you about design issues you have based on the checks that is has configured.
8
8
 
9
+ == INSTALL:
10
+
11
+ * sudo gem install roodi
12
+
13
+ == SYNOPSIS:
14
+
15
+ To check one or more files using the default configuration that comes with Roodi, use:
16
+ roodi [patterns]
17
+
18
+ === EXAMPLE USAGE
19
+
20
+ Check all ruby files in a rails app:
21
+ roodi "rails_app/**/*.rb"
22
+
23
+ Check one controller and one model file in a rails app:
24
+ roodi app/controller/sample_controller.rb app/models/sample.rb
25
+
26
+ Check one controller and all model files in a rails app:
27
+ roodi app/controller/sample_controller.rb "app/models/*.rb"
28
+
29
+
30
+ If you're writing a check, it is useful to see the structure of a file the way that Roodi tokenizes it (via ParesTree). Use:
31
+ roodi-describe [filename]
32
+
9
33
  == SUPPORTED CHECKS:
10
34
 
11
35
  * ClassNameCheck - Check that class names match convention.
@@ -16,14 +40,6 @@ Roodi stands for Ruby Object Oriented Design Inferometer. It parses your Ruby c
16
40
  * MethodNameCheck - Check that method names match convention.
17
41
  * MethodLineCountCheck - Check that the number of lines in a method is below the threshold.
18
42
 
19
- == SYNOPSIS:
20
-
21
- * TBD. See the Rakefile in this project for an example of how to get started if you're on the bleeding edge.
22
-
23
- == INSTALL:
24
-
25
- * sudo gem install roodi
26
-
27
43
  == LICENSE:
28
44
 
29
45
  (The MIT License)
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ require 'roodi'
8
8
 
9
9
  Hoe.new('roodi', Roodi::VERSION) do |p|
10
10
  p.developer('Marty Andrews', 'marty@cogentconsulting.com.au')
11
- p.extra_deps = ['ParseTree']
11
+ p.extra_deps = ['ParseTree', 'facets']
12
12
  p.remote_rdoc_dir = ''
13
13
  end
14
14
 
@@ -8,8 +8,9 @@ module Roodi
8
8
  end
9
9
 
10
10
  def evaluate(node)
11
+ class_name = node[1].class == Symbol ? node[1] : node[1].last
11
12
  pattern = /^[A-Z][a-zA-Z0-9]*$/
12
- add_error "Class name \"#{node[1]}\" should match pattern #{pattern.inspect}" unless node[1].to_s =~ pattern
13
+ add_error "Class name \"#{node[1]}\" should match pattern #{pattern.inspect}" unless class_name.to_s =~ pattern
13
14
  end
14
15
  end
15
16
  end
@@ -8,7 +8,7 @@ module Roodi
8
8
  end
9
9
 
10
10
  def evaluate(node)
11
- pattern = /^[a-z<>=\[\]]+[a-z0-9_<>=\[\]]*[=!\?]?$/
11
+ pattern = /^[_a-z<>=\[\]|+-\/\*`]+[_a-z0-9_<>=~@\[\]]*[=!\?]?$/
12
12
  add_error "Method name \"#{node[1]}\" should match pattern #{pattern.inspect}" unless node[1].to_s =~ pattern
13
13
  end
14
14
  end
@@ -19,8 +19,13 @@ module Roodi
19
19
 
20
20
  def check(filename, content)
21
21
  @checks ||= load_checks
22
- node = @parser.parse(content, filename)
23
- node.accept(IteratorVisitor.new(CheckingVisitor.new(@checks)))
22
+ begin
23
+ node = @parser.parse(content, filename)
24
+ node.accept(IteratorVisitor.new(CheckingVisitor.new(@checks)))
25
+ rescue Exception => e
26
+ # puts e
27
+ puts "#{filename} looks like it's not a valid Ruby file. Skipping..."
28
+ end
24
29
  end
25
30
 
26
31
  def check_content(content)
@@ -1,10 +1,20 @@
1
1
  require 'rubygems'
2
2
  require 'parse_tree'
3
+ require 'facets'
4
+
3
5
 
4
6
  module Roodi
5
7
  module Core
6
8
  class Parser
7
9
  def parse(content, filename)
10
+ silence_stream(STDERR) do
11
+ return silent_parse(content, filename)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def silent_parse(content, filename)
8
18
  @parser ||= ParseTree.new(true)
9
19
  node = @parser.parse_tree_for_string(content, filename)
10
20
  sexp = VisitableSexp.from_array node
data/lib/roodi.rb CHANGED
@@ -2,5 +2,5 @@ require 'roodi/checks'
2
2
  require 'roodi/core'
3
3
 
4
4
  module Roodi
5
- VERSION = '1.1.0'
5
+ VERSION = '1.1.1'
6
6
  end
@@ -14,6 +14,18 @@ describe Roodi::Checks::ClassNameCheck do
14
14
  @roodi.errors.should be_empty
15
15
  end
16
16
 
17
+ it "should be able to parse scoped class names" do
18
+ content = <<-END
19
+ class MyScope::GoodClassName
20
+ def method
21
+ end
22
+ end
23
+ END
24
+ # @roodi.print_content(content)
25
+ @roodi.check_content(content)
26
+ @roodi.errors.should be_empty
27
+ end
28
+
17
29
  it "should reject class names with underscores" do
18
30
  content = <<-END
19
31
  class Bad_ClassName
@@ -147,7 +147,7 @@ describe Roodi::Checks::MethodNameCheck do
147
147
  END
148
148
  @roodi.check_content(content)
149
149
  errors = @roodi.errors
150
- errors.should_not be_empty
151
- errors[0].should eql("dummy-file.rb:1 - Method name \"badMethodName\" should match pattern /^[a-z<>=\\[\\]]+[a-z0-9_<>=\\[\\]]*[=!\\?]?$/")
150
+ errors.should_not be_empty
151
+ errors[0].should eql("dummy-file.rb:1 - Method name \"badMethodName\" should match pattern /^[_a-z<>=\\[\\]|+-\\/\\*`]+[_a-z0-9_<>=~@\\[\\]]*[=!\\?]?$/")
152
152
  end
153
153
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roodi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marty Andrews
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-09 00:00:00 +10:00
12
+ date: 2008-09-11 00:00:00 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,6 +22,16 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "0"
24
24
  version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: facets
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
25
35
  - !ruby/object:Gem::Dependency
26
36
  name: hoe
27
37
  type: :development
@@ -78,7 +88,7 @@ files:
78
88
  - spec/checks/method_name_check_spec.rb
79
89
  - spec/spec_helper.rb
80
90
  has_rdoc: true
81
- homepage: http://www.rubyforge.org/
91
+ homepage: http://roodi.rubyforge.org
82
92
  post_install_message:
83
93
  rdoc_options:
84
94
  - --main