codegraph 0.7.7 → 0.7.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/bin/codegraph +14 -20
  2. data/gemspec +3 -3
  3. data/lib/codegraph.rb +6 -10
  4. metadata +5 -5
data/bin/codegraph CHANGED
@@ -4,8 +4,7 @@ require "getoptlong"
4
4
 
5
5
  def show_usage
6
6
  puts <<-END
7
- Usage: #{__FILE__}:
8
- --help, -h guess what
7
+ Usage: codegraph --help, -h guess what
9
8
 
10
9
  --file-list, -F "<list>"
11
10
  fill the graph with every function,
@@ -14,9 +13,6 @@ Usage: #{__FILE__}:
14
13
  --function, -f "<funcname>"
15
14
  take the given func as the root knode
16
15
 
17
- --show-body, -s "<funcname>"
18
- display the function code in the terminal
19
-
20
16
  --upper-funx, -u "<funcname>"
21
17
  scan for all funx, which depends directly or
22
18
  indirectly on <funcname>
@@ -26,9 +22,6 @@ Usage: #{__FILE__}:
26
22
  <funcname> AND which call <funcname>
27
23
  (in)directly
28
24
 
29
- --exclude, -x "<list>"
30
- exclude a list of functions from the graph
31
-
32
25
  --depth, -d <integer>
33
26
  Set maximal Graph depth
34
27
 
@@ -54,12 +47,10 @@ end
54
47
  # Which options are availabile ------------------------------------------------
55
48
  options = GetoptLong.new(
56
49
  ["--help", "-h", GetoptLong::NO_ARGUMENT],
57
- ["--debug", "-y", GetoptLong::NO_ARGUMENT],
58
- # ["--local", "-l", GetoptLong::NO_ARGUMENT],
59
- # ["--source", "-s", GetoptLong::NO_ARGUMENT],
60
- # ["--with-internal", "-w", GetoptLong::NO_ARGUMENT],
50
+ ["--debug", "-y", GetoptLong::NO_ARGUMENT],
51
+ # ["--add", "-a", GetoptLong::REQUIRED_ARGUMENT],
61
52
  ["--function", "-f", GetoptLong::REQUIRED_ARGUMENT],
62
- ["--show-body", "-s", GetoptLong::REQUIRED_ARGUMENT],
53
+ # ["--show-body", "-s", GetoptLong::REQUIRED_ARGUMENT],
63
54
  ["--upper-funx", "-u", GetoptLong::REQUIRED_ARGUMENT],
64
55
  ["--8-funx", "-8", GetoptLong::REQUIRED_ARGUMENT],
65
56
  ["--file-list", "-F", GetoptLong::REQUIRED_ARGUMENT],
@@ -69,8 +60,8 @@ options = GetoptLong.new(
69
60
  ["--to-png", "-P", GetoptLong::REQUIRED_ARGUMENT],
70
61
  ["--to-jpg", "-J", GetoptLong::REQUIRED_ARGUMENT],
71
62
  ["--to-dot", "-D", GetoptLong::REQUIRED_ARGUMENT],
72
- ["--to-txt", "-T", GetoptLong::NO_ARGUMENT],
73
- ["--exclude", "-x", GetoptLong::REQUIRED_ARGUMENT],
63
+ ["--to-txt", "-T", GetoptLong::NO_ARGUMENT]
64
+ # ["--exclude", "-x", GetoptLong::REQUIRED_ARGUMENT],
74
65
  )
75
66
  options.ordering = GetoptLong::RETURN_IN_ORDER
76
67
  # Default values --------------------------------------------------------------
@@ -81,8 +72,9 @@ internal = false
81
72
  filename = ""
82
73
  dotfile = ""
83
74
  function = ""
84
- depth = nil
85
- exclude = Array.new
75
+ depth = nil
76
+ adds = Array.new
77
+ excludes = Array.new
86
78
  files = Array.new
87
79
  debug = false
88
80
  # option parsing --------------------------------------------------------------
@@ -122,8 +114,10 @@ options.each do |opt, arg|
122
114
  filename = arg
123
115
  when "--to-txt"
124
116
  output = "txt"
117
+ when "--add"
118
+ adds = arg.split(/ /)
125
119
  when "--exclude"
126
- exclude = arg.split(/ /)
120
+ excludes = arg.split(/ /)
127
121
  when "--debug"
128
122
  debug = true
129
123
  else
@@ -156,10 +150,10 @@ end
156
150
  g.debug = debug
157
151
 
158
152
  # Include the internal functions of the language?
159
- g.internal = internal
153
+ g.adds = adds
160
154
 
161
155
  # Creates the Knodes/Edges of the graph
162
- g.fill(files,exclude)
156
+ g.fill(files,excludes)
163
157
 
164
158
  # Remove edges
165
159
  g.limit(depth) if depth
data/gemspec CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  spec = Gem::Specification.new do |s|
4
4
  s.name = "codegraph"
5
- s.version = "0.7.7"
5
+ s.version = "0.7.8"
6
6
  s.date = Time.new.to_s
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.bindir = 'bin'
@@ -11,8 +11,8 @@ spec = Gem::Specification.new do |s|
11
11
  s.add_dependency('rgl')
12
12
  s.add_dependency('asciify')
13
13
  s.rubyforge_project = "codegraph"
14
- s.description = "Display functional dependencies in source code (C, Fortran, PHP, Perl).\n" +
15
- "Changes (#{s.version}): --debug opton added"
14
+ s.description = "Display functional dependencies in source code (C, Fortran, PHP, Perl).\n"
15
+ # "Changes (#{s.version}):"
16
16
  s.summary = "Display functional dependencies in source code (C, Fortran, PHP, Perl)"
17
17
  s.author = "Ralf Mueller"
18
18
  s.email = "stark.dreamdetective@gmail.com"
data/lib/codegraph.rb CHANGED
@@ -7,7 +7,7 @@ require 'thread'
7
7
  require 'asciify'
8
8
 
9
9
  class FunctionGraph < RGL::DirectedAdjacencyGraph
10
- attr_accessor :funx, :internal, :debug
10
+ attr_accessor :funx, :adds, :excludes, :debug
11
11
 
12
12
  # Theses Parameters are used by interactive representation and for the file
13
13
  # generation function to_dot and to_type. They can only be given for the
@@ -35,7 +35,6 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
35
35
 
36
36
  @@home = `echo $HOME`.chomp
37
37
  @@codehomedir = "#{@@home}/.codegraph"
38
- @@internal_funx = []
39
38
  @@matchBeforFuncName = '[^A-z0-9_]\s*'
40
39
  @@matchAfterFuncName = ' *\('
41
40
  @@map = Asciify::Mapping.new(:default)
@@ -51,8 +50,6 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
51
50
  # the following attribute will hold the functionnames and their bodies
52
51
  @funx = Hash.new
53
52
  @lock = Mutex.new
54
- # Should the internal functions be displayed?
55
- @internal = false
56
53
  end
57
54
 
58
55
  # Generates the necessary files:
@@ -124,7 +121,7 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
124
121
  # threads << Threads.new(name,body,names) {|name,body|
125
122
  puts "Add func: #{name}" if @debug
126
123
  add_vertex(name)
127
- (names - [name] + @@internal_funx).each { |func|
124
+ (names - [name] + @adds).each { |func|
128
125
  puts body if @debug
129
126
  add_edge("#{name}","#{func}") if/#@@matchBeforFuncName#{func}#@@matchAfterFuncName/.match(body)
130
127
  }
@@ -213,10 +210,10 @@ class SingleFunctionGraph < FunctionGraph
213
210
  @scannednames << f
214
211
  body = graph.funx[f]
215
212
  # scan for any other function in the body of f
216
- (names - [f] + @@internal_funx).each {|g|
213
+ (names - [f] + @adds).each {|g|
217
214
  if /#@@matchBeforFuncName#{g}#@@matchAfterFuncName/.match(body)
218
215
  graph.add_edge(f,g)
219
- # unless its not an internal function, go downstairs
216
+ # go downstairs for all functions from the scanned files
220
217
  scan(graph,g) if names.include?(g)
221
218
  end
222
219
  }
@@ -231,11 +228,10 @@ class UpperFunctionGraph < SingleFunctionGraph
231
228
  def scan(graph,func)
232
229
  if @scannednames.include?(func)
233
230
  else
234
- if not (graph.funx.keys + @@internal_funx).include?(func)
235
- puts "Function '#{func}' not found. If this is an internal function, " +
231
+ if not (graph.funx.keys + @adds).include?(func)
232
+ warn "Function '#{func}' not found. If this is an internal function, " +
236
233
  "please try again with the '-w' option to include the internal " +
237
234
  "funx before scanning."
238
- #system("rm ~/.codegraph/all.#{ng} ~/.codegraph/code-names")
239
235
  exit
240
236
  end
241
237
  @scannednames << func
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 7
8
- - 7
9
- version: 0.7.7
8
+ - 8
9
+ version: 0.7.8
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-14 12:02:48 +01:00
17
+ date: 2011-01-18 14:41:19 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -43,9 +43,9 @@ dependencies:
43
43
  version: "0"
44
44
  type: :runtime
45
45
  version_requirements: *id002
46
- description: |-
46
+ description: |
47
47
  Display functional dependencies in source code (C, Fortran, PHP, Perl).
48
- Changes (0.7.7): --debug opton added
48
+
49
49
  email: stark.dreamdetective@gmail.com
50
50
  executables:
51
51
  - codegraph