codegraph 0.7.4 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
- data/gemspec +4 -2
- data/lib/codegraph.rb +12 -9
- metadata +19 -4
data/gemspec
CHANGED
@@ -2,15 +2,17 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
spec = Gem::Specification.new do |s|
|
4
4
|
s.name = "codegraph"
|
5
|
-
s.version = "0.7.
|
5
|
+
s.version = "0.7.5"
|
6
6
|
s.date = Time.new.to_s
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.bindir = 'bin'
|
9
9
|
s.files = ["lib/codegraph.rb","bin/codegraph"] + ["gemspec","LICENSE"]
|
10
10
|
s.executables << 'codegraph'
|
11
11
|
s.add_dependency('rgl')
|
12
|
+
s.add_dependency('asciify')
|
12
13
|
s.rubyforge_project = "codegraph"
|
13
|
-
s.description = "Display functional dependencies in source code (C, Fortran, PHP, Perl)
|
14
|
+
s.description = "Display functional dependencies in source code (C, Fortran, PHP, Perl).\n" +
|
15
|
+
"Changes (#{s.version}): Use Asciify to get around non-ASCII chars"
|
14
16
|
s.summary = "Display functional dependencies in source code (C, Fortran, PHP, Perl)"
|
15
17
|
s.author = "Ralf Mueller"
|
16
18
|
s.email = "stark.dreamdetective@gmail.com"
|
data/lib/codegraph.rb
CHANGED
@@ -5,8 +5,10 @@ require 'rgl/dot'
|
|
5
5
|
require 'rgl/rdot'
|
6
6
|
require 'rgl/traversal'
|
7
7
|
require 'thread'
|
8
|
+
require 'asciify'
|
8
9
|
|
9
|
-
|
10
|
+
|
11
|
+
DEBUG = false
|
10
12
|
|
11
13
|
class FunctionGraph < RGL::DirectedAdjacencyGraph
|
12
14
|
attr_accessor :funx, :internal
|
@@ -40,6 +42,7 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
|
|
40
42
|
@@internal_funx = []
|
41
43
|
@@matchBeforFuncName = '[^A-z0-9_]\s*'
|
42
44
|
@@matchAfterFuncName = ' *\('
|
45
|
+
@@map = Asciify::Mapping.new(:default)
|
43
46
|
|
44
47
|
# Generate the codegraph storage directory
|
45
48
|
if not FileTest.directory?(@@codehomedir)
|
@@ -68,7 +71,7 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
|
|
68
71
|
funxFile = "funxnames"
|
69
72
|
ctagsKinds = '--c-kinds=f --fortran-kinds=fsp --php-kinds=f --perl-kinds=f'
|
70
73
|
|
71
|
-
puts "Processing #{file} ..." if
|
74
|
+
puts "Processing #{file} ..." if DEBUG
|
72
75
|
basefile = File.basename(file)
|
73
76
|
temfile = "_" + basefile
|
74
77
|
case File.extname(file)
|
@@ -86,14 +89,14 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
|
|
86
89
|
gen4ctags = "ctags -x #{ctagsKinds} #{codehomedir}/#{basefile} | sort -n -k 3"
|
87
90
|
command = [cppCommand,grep].join(";")
|
88
91
|
|
89
|
-
puts command if
|
92
|
+
puts command if DEBUG
|
90
93
|
system(command)
|
91
94
|
|
92
95
|
code = open(codehomedir+'/'+ File.basename(file)).readlines
|
93
96
|
funxLocations = IO.popen(gen4ctags).readlines.map {|l| l.split[0,4]}
|
94
97
|
funxLocations.each_with_index {|ary,i|
|
95
98
|
name, kind, line, file = ary
|
96
|
-
puts name if
|
99
|
+
puts name if DEBUG
|
97
100
|
line = line.to_i
|
98
101
|
startLineIndex = line - 1
|
99
102
|
endLineIndex = (i+1 < funxLocations.size) ? funxLocations[i+1][2].to_i - 2 : -1
|
@@ -123,10 +126,10 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
|
|
123
126
|
names = @funx.keys
|
124
127
|
@funx.each_pair {|name,body|
|
125
128
|
# threads << Threads.new(name,body,names) {|name,body|
|
126
|
-
puts "Add func: #{name}" if
|
129
|
+
puts "Add func: #{name}" if DEBUG
|
127
130
|
add_vertex(name)
|
128
131
|
(names - [name] + @@internal_funx).each { |func|
|
129
|
-
puts body if
|
132
|
+
puts body if DEBUG
|
130
133
|
add_edge("#{name}","#{func}") if/#@@matchBeforFuncName#{func}#@@matchAfterFuncName/.match(body)
|
131
134
|
}
|
132
135
|
}
|
@@ -243,8 +246,9 @@ class UpperFunctionGraph < SingleFunctionGraph
|
|
243
246
|
graph.funx.each_pair {|g,gbody|
|
244
247
|
# dont scan a function for itself
|
245
248
|
next if g == func
|
246
|
-
|
247
|
-
if
|
249
|
+
puts g if DEBUG
|
250
|
+
puts gbody if DEBUG
|
251
|
+
if/#@@matchBeforFuncName#{func}#@@matchAfterFuncName/.match(Asciify.new(@@map).convert(gbody))
|
248
252
|
graph.add_edge(g,func)
|
249
253
|
scan(graph,g)
|
250
254
|
end
|
@@ -274,4 +278,3 @@ class EightFunctionGraph < FunctionGraph
|
|
274
278
|
end
|
275
279
|
end
|
276
280
|
end
|
277
|
-
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 7
|
8
|
-
-
|
9
|
-
version: 0.7.
|
8
|
+
- 5
|
9
|
+
version: 0.7.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ralf Mueller
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-11 14:26:53 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -30,7 +30,22 @@ dependencies:
|
|
30
30
|
version: "0"
|
31
31
|
type: :runtime
|
32
32
|
version_requirements: *id001
|
33
|
-
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: asciify
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
46
|
+
description: |-
|
47
|
+
Display functional dependencies in source code (C, Fortran, PHP, Perl).
|
48
|
+
Changes (0.7.5): Use Asciify to get around non-ASCII chars
|
34
49
|
email: stark.dreamdetective@gmail.com
|
35
50
|
executables:
|
36
51
|
- codegraph
|