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 +2 -1
- data/Gemfile +6 -0
- data/README +5 -1
- data/bin/jsmetric +7 -3
- data/build +1 -1
- data/features/step_definitions/reporting_steps.rb +1 -1
- data/jsmetric.gemspec +0 -3
- data/lib/cc_report.rb +13 -9
- data/lib/report.rb +20 -3
- data/lib/version.rb +1 -1
- metadata +6 -52
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README
CHANGED
@@ -7,9 +7,13 @@ $ gem install jsmetric
|
|
7
7
|
|
8
8
|
*** Usage
|
9
9
|
|
10
|
-
Cyclometric
|
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
|
|
data/bin/jsmetric
CHANGED
@@ -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
|
-
|
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
|
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.
|
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|
|
data/jsmetric.gemspec
CHANGED
@@ -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
|
data/lib/cc_report.rb
CHANGED
@@ -2,19 +2,23 @@ require "complexity_analyser"
|
|
2
2
|
|
3
3
|
class CCReport
|
4
4
|
|
5
|
-
def
|
6
|
-
|
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
|
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
|
data/lib/report.rb
CHANGED
@@ -2,8 +2,25 @@ require "cc_report"
|
|
2
2
|
class Report
|
3
3
|
|
4
4
|
def self.for file_path
|
5
|
-
|
6
|
-
|
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
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jsmetric
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version:
|
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-
|
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: &
|
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: *
|
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: -
|
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: -
|
104
|
+
hash: -2362550404491173316
|
151
105
|
segments:
|
152
106
|
- 0
|
153
107
|
version: "0"
|