jsmetric 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,4 +3,5 @@
3
3
  Gemfile.lock
4
4
  pkg/*
5
5
  .idea
6
- .DS_Store
6
+ .DS_Store
7
+ vendor/cache
data/Gemfile CHANGED
@@ -1,2 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
  gemspec
3
+
4
+ group :development do
5
+ gem 'rake', '~> 0.8.7'
6
+ gem 'rspec', '~> 2.4.0'
7
+ gem 'cucumber', '~> 0.10.0'
8
+ end
data/README CHANGED
@@ -7,9 +7,13 @@ $ gem install jsmetric
7
7
 
8
8
  *** Usage
9
9
 
10
- Cyclometric Complexity
10
+ Cyclometric complexity for a file:
11
11
  $ ./bin/jsmetric path_to_js_file
12
12
 
13
+ Cyclometric complexity for all .js files in a Directory
14
+ $ ./bin/jsmetric path_to_dir
15
+
16
+
13
17
 
14
18
  *** Backlog/Future Work
15
19
 
@@ -9,8 +9,12 @@ $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
9
9
 
10
10
  args = ARGV.dup
11
11
  ARGV.clear
12
- file_path = args.shift.strip rescue 'help'
12
+ begin
13
+ file_path = args.shift.strip
14
+ rescue
15
+ puts "Missing js file or directory as argument"
16
+ exit false
17
+ end
13
18
 
14
19
  require 'report'
15
- puts Report.for file_path
16
-
20
+ puts Report.for file_path
data/build CHANGED
@@ -1 +1 @@
1
- bundle install && bundle exec rake
1
+ bundle exec rake
@@ -5,7 +5,7 @@ end
5
5
  When /^the CC report target in run on it$/ do
6
6
  path = File.join(File.dirname(__FILE__),'..', "sample_js_files_for_test", @filename + ".js")
7
7
  contents = File.open(path, 'r') { |f| f.read }
8
- @results = CCReport.generate_for contents
8
+ @results = CCReport.new(contents).as_csv
9
9
  end
10
10
 
11
11
  Then /^the contents of the report are as follows$/ do |expected_report|
@@ -19,8 +19,5 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency('rspec', '2.4.0')
23
- s.add_dependency('rake', '0.8.7')
24
- s.add_dependency('cucumber', '0.10.0')
25
22
  s.add_dependency('therubyracer', '0.8.0')
26
23
  end
@@ -2,19 +2,23 @@ require "complexity_analyser"
2
2
 
3
3
  class CCReport
4
4
 
5
- def self.generate_for source
6
- analyser = ComplexityAnalyser.new
5
+ def initialize source
6
+ @output = ""
7
+ @analyser = ComplexityAnalyser.new
8
+ @source = source
9
+ end
10
+
11
+ def as_csv
7
12
  begin
8
- analyser.parse source
9
- output = "Name, CC"
10
- analyser.functions.each do |function|
11
- output += "\n#{function[:name]},#{function[:complexity]}"
13
+ @analyser.parse @source
14
+ @output += "Name, CC"
15
+ @analyser.functions.each do |function|
16
+ @output += "\n#{function[:name]},#{function[:complexity]}"
12
17
  end
13
18
  rescue
14
- output = "WARNING: Could not parse \n#{source} \n: SKIPPED"
19
+ @output = "WARNING: Could not parse \n#{source} \n: SKIPPED"
15
20
  end
16
-
17
- output
21
+ @output
18
22
  end
19
23
 
20
24
  end
@@ -2,8 +2,25 @@ require "cc_report"
2
2
  class Report
3
3
 
4
4
  def self.for file_path
5
- contents = File.open(file_path, 'r') { |f| f.read }
6
- CCReport.generate_for contents
5
+ output = ""
6
+ if (File.directory? file_path)
7
+ Dir.chdir(file_path) do
8
+ output += "\nDir: #{file_path}\n"
9
+ Dir.glob(File.join("**", "*.js")).each do |file|
10
+ output += "File: #{file}\n"
11
+ output += "\n" + Report.cc_report_for(file)
12
+ end
13
+ end
14
+ else
15
+ output += "\nFile: #{file_path}\n"
16
+ output += Report.cc_report_for file_path
17
+ end
18
+ output
7
19
  end
8
-
20
+
21
+ def self.cc_report_for file
22
+ contents = File.open(file, 'r') { |f| f.read }
23
+ CCReport.new(contents).as_csv
24
+ end
25
+
9
26
  end
@@ -1,3 +1,3 @@
1
1
  module Jsmetric
2
- VERSION = "0.1"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jsmetric
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: "0.1"
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Nigel Fernandes
@@ -10,45 +10,12 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-06 00:00:00 +10:00
13
+ date: 2011-05-07 00:00:00 +10:00
14
14
  default_executable:
15
15
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: rspec
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - "="
22
- - !ruby/object:Gem::Version
23
- version: 2.4.0
24
- type: :runtime
25
- prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - "="
33
- - !ruby/object:Gem::Version
34
- version: 0.8.7
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: cucumber
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
45
- version: 0.10.0
46
- type: :runtime
47
- prerelease: false
48
- version_requirements: *id003
49
16
  - !ruby/object:Gem::Dependency
50
17
  name: therubyracer
51
- requirement: &id004 !ruby/object:Gem::Requirement
18
+ requirement: &id001 !ruby/object:Gem::Requirement
52
19
  none: false
53
20
  requirements:
54
21
  - - "="
@@ -56,7 +23,7 @@ dependencies:
56
23
  version: 0.8.0
57
24
  type: :runtime
58
25
  prerelease: false
59
- version_requirements: *id004
26
+ version_requirements: *id001
60
27
  description: Cyclometric complexity analyser for Javascript
61
28
  email:
62
29
  - jsmetric@nigel.in
@@ -70,7 +37,6 @@ files:
70
37
  - .gitignore
71
38
  - .rvmrc
72
39
  - Gemfile
73
- - Gemfile.lock
74
40
  - README
75
41
  - Rakefile
76
42
  - bin/jsmetric
@@ -112,18 +78,6 @@ files:
112
78
  - spec/spec_helper.rb
113
79
  - tasks/dev.rb
114
80
  - tasks/run.rb
115
- - vendor/cache/builder-3.0.0.gem
116
- - vendor/cache/cucumber-0.10.0.gem
117
- - vendor/cache/diff-lcs-1.1.2.gem
118
- - vendor/cache/gherkin-2.3.3.gem
119
- - vendor/cache/json-1.4.6.gem
120
- - vendor/cache/rake-0.8.7.gem
121
- - vendor/cache/rspec-2.4.0.gem
122
- - vendor/cache/rspec-core-2.4.0.gem
123
- - vendor/cache/rspec-expectations-2.4.0.gem
124
- - vendor/cache/rspec-mocks-2.4.0.gem
125
- - vendor/cache/term-ansicolor-1.0.5.gem
126
- - vendor/cache/therubyracer-0.8.0.gem
127
81
  has_rdoc: true
128
82
  homepage: ""
129
83
  licenses: []
@@ -138,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
92
  requirements:
139
93
  - - ">="
140
94
  - !ruby/object:Gem::Version
141
- hash: -3687799591561362010
95
+ hash: -2362550404491173316
142
96
  segments:
143
97
  - 0
144
98
  version: "0"
@@ -147,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
101
  requirements:
148
102
  - - ">="
149
103
  - !ruby/object:Gem::Version
150
- hash: -3687799591561362010
104
+ hash: -2362550404491173316
151
105
  segments:
152
106
  - 0
153
107
  version: "0"