roodi 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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