jsmetric 0.1 → 0.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/.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"