codegraph 0.7.8 → 0.7.11

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.
Files changed (4) hide show
  1. data/bin/codegraph +118 -158
  2. data/gemspec +1 -1
  3. data/lib/codegraph.rb +4 -14
  4. metadata +3 -3
@@ -1,175 +1,135 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "codegraph"
3
- require "getoptlong"
3
+ require "optparse"
4
4
 
5
- def show_usage
6
- puts <<-END
7
- Usage: codegraph --help, -h guess what
8
-
9
- --file-list, -F "<list>"
10
- fill the graph with every function,
11
- that has a definiton inside the given files
12
-
13
- --function, -f "<funcname>"
14
- take the given func as the root knode
5
+ # Which options are availabile ------------------------------------------------
6
+ # Default settings
7
+ $options = {
8
+ :files => [],
9
+ :mode => nil,
10
+ :output => "",
11
+ :function => "",
12
+ :depth => nil,
13
+ :adds => [],
14
+ :excludes => [],
15
+ :debug => false
16
+ }
17
+ def parse(args)
18
+ OptionParser.new do |opts|
19
+ opts.banner = "Usage: codegraph [options]"
20
+ opts.on("-y", "--debug","Work in debuging mode") do |debug|
21
+ $options[:debug] = debug
22
+ end
23
+ opts.on( "-a","--add f1,f2,f3",Array,"Add function for scanning") do |adds|
24
+ $options[:adds] = adds
25
+ end
26
+ opts.on("-f", "--function FUNCTION") do |func|
27
+ $options[:function] = func
28
+ $options[:mode] = 'single'
29
+ end
30
+ opts.on( "-s","--show-body","Display function body") do |show|
31
+ $options[:mode] = 'show'
32
+ end
33
+ opts.on("-u", "--upper-funx FUNCTION") do |func|
34
+ $options[:function] = func
35
+ $options[:mode] = 'upper'
36
+ end
37
+ opts.on("-8", "--8-funx FUNCTION") do |func|
38
+ $options[:function] = func
39
+ $options[:mode] = 8
40
+ end
41
+ opts.on("-F", "--file-list file0,file1,file3", Array,"List of files (alternative \"file0 file1 file3\")") do |filelist|
42
+ filelist.each do |filedesc|
43
+ unless File.exist?(filedesc)
44
+ $options[:files] << Dir.glob(File.expand_path(filedesc))
45
+ else
46
+ $options[:files] = filelist
47
+ end
48
+ end
49
+ $options[:files].flatten!
50
+ end
51
+ opts.on("-d", "--depth DEPTH","Set the maximum depth of the graph") do |depth|
52
+ $options[:depth] = depth
53
+ end
54
+ opts.on("-p", "--to-ps FILE", "Write Postscripts output file") do |ofile|
55
+ $options[:ofile] = ofile
56
+ $options[:output] = 'ps'
57
+ end
58
+ opts.on("-S", "--to-svg FILE", "Write Scalable Vector Graphic output file") do |ofile|
59
+ $options[:ofile] = ofile
60
+ $options[:output] = 'svg'
61
+ end
62
+ opts.on("-P", "--to-png FILE", "Write Portable Network Graphic output file") do |ofile|
63
+ $options[:ofile] = ofile
64
+ $options[:output] = 'png'
65
+ end
66
+ opts.on("-J", "--to-jpg FILE", "Write JPEG output file") do |ofile|
67
+ $options[:ofile] = ofile
68
+ $options[:output] = 'jpg'
69
+ end
70
+ opts.on("-D", "--to-dot FILE", "Write dot output file") do |ofile|
71
+ $options[:ofile] = ofile
72
+ $options[:output] = 'dot'
73
+ end
74
+ opts.on("-T", "--to-txt","Write to stdout") do
75
+ $options[:output] = 'txt'
76
+ end
77
+ opts.on("-V", "--version","Print version") do
78
+ puts Codegraph::VERSION
79
+ exit
80
+ end
81
+ opts.on_tail("-h", "--help","Showthis message") do
82
+ puts opts
83
+ exit
84
+ end
85
+ end.parse(args)
15
86
 
16
- --upper-funx, -u "<funcname>"
17
- scan for all funx, which depends directly or
18
- indirectly on <funcname>
19
-
20
- --8-funx, -8 "<funcname>"
21
- scan for all funx, which depends (in)directly
22
- <funcname> AND which call <funcname>
23
- (in)directly
24
-
25
- --depth, -d <integer>
26
- Set maximal Graph depth
27
-
28
- --to-ps, -p <filename>
29
- create a postscript file from the graph
30
-
31
- --to-svg, -S <filename>
32
- create a SVG file from the graph
33
-
34
- --to-png, -P <filename>
35
- create a PNG file from the graph
36
-
37
- --to-jpg, -J <filename>
38
- create a JPG file from the graph
39
-
40
- --to-dot, -D <filename>
41
- creates a <filename>.dot-file
42
-
43
- --to-txt, -T
44
- writes the relations to stdout
45
- END
87
+ if $options[:files].flatten.empty?
88
+ warn 'Please use -F do define input files! Use -h for further help.'
89
+ exit
90
+ end
91
+ $options
46
92
  end
47
- # Which options are availabile ------------------------------------------------
48
- options = GetoptLong.new(
49
- ["--help", "-h", GetoptLong::NO_ARGUMENT],
50
- ["--debug", "-y", GetoptLong::NO_ARGUMENT],
51
- # ["--add", "-a", GetoptLong::REQUIRED_ARGUMENT],
52
- ["--function", "-f", GetoptLong::REQUIRED_ARGUMENT],
53
- # ["--show-body", "-s", GetoptLong::REQUIRED_ARGUMENT],
54
- ["--upper-funx", "-u", GetoptLong::REQUIRED_ARGUMENT],
55
- ["--8-funx", "-8", GetoptLong::REQUIRED_ARGUMENT],
56
- ["--file-list", "-F", GetoptLong::REQUIRED_ARGUMENT],
57
- ["--depth", "-d", GetoptLong::REQUIRED_ARGUMENT],
58
- ["--to-ps", "-p", GetoptLong::REQUIRED_ARGUMENT],
59
- ["--to-svg", "-S", GetoptLong::REQUIRED_ARGUMENT],
60
- ["--to-png", "-P", GetoptLong::REQUIRED_ARGUMENT],
61
- ["--to-jpg", "-J", GetoptLong::REQUIRED_ARGUMENT],
62
- ["--to-dot", "-D", GetoptLong::REQUIRED_ARGUMENT],
63
- ["--to-txt", "-T", GetoptLong::NO_ARGUMENT]
93
+ options = parse(ARGV)
94
+ pp options if $options[:debug]
64
95
  # ["--exclude", "-x", GetoptLong::REQUIRED_ARGUMENT],
65
- )
66
- options.ordering = GetoptLong::RETURN_IN_ORDER
67
- # Default values --------------------------------------------------------------
68
- filelist = ""
69
- mode = "multiple"
70
- output = ""
71
- internal = false
72
- filename = ""
73
- dotfile = ""
74
- function = ""
75
- depth = nil
76
- adds = Array.new
77
- excludes = Array.new
78
- files = Array.new
79
- debug = false
80
- # option parsing --------------------------------------------------------------
81
- options.each do |opt, arg|
82
- case opt
83
- when "--file-list"
84
- filelist = arg
85
- files = Dir.glob(filelist.split(' '))
86
- when "--function"
87
- mode = "single"
88
- function = arg
89
- when "--show-body"
90
- mode = "show"
91
- function = arg
92
- when "--upper-funx"
93
- mode = "upper"
94
- function = arg
95
- when "--8-funx"
96
- mode = 8
97
- function = arg
98
- when "--depth"
99
- depth = arg.to_i
100
- when "--to-ps"
101
- output = "ps"
102
- filename = arg
103
- when "--to-svg"
104
- output = "svg"
105
- filename = arg
106
- when "--to-png"
107
- output = "png"
108
- filename = arg
109
- when "--to-jpg"
110
- output = "jpg"
111
- filename = arg
112
- when "--to-dot"
113
- output = "dot"
114
- filename = arg
115
- when "--to-txt"
116
- output = "txt"
117
- when "--add"
118
- adds = arg.split(/ /)
119
- when "--exclude"
120
- excludes = arg.split(/ /)
121
- when "--debug"
122
- debug = true
123
- else
124
- show_usage
125
- exit
126
- end
127
- end
128
- options.terminate
129
- # script controlling ----------------------------------------------------------
130
- # Is the filelist correct?
131
- if files.size == 0
132
- puts 'Please use --file-list "<list>"'
133
- show_usage
134
- exit
135
- end
136
-
96
+ #)
137
97
  # What kind of graph should be generated?
138
- case mode
139
- when "upper"
140
- g = UpperFunctionGraph.new(function)
141
- when "single","show"
142
- g = SingleFunctionGraph.new(function)
143
- when 8
144
- g = EightFunctionGraph.new(function)
145
- else
146
- g = FunctionGraph.new
98
+ case $options[:mode]
99
+ when "upper"
100
+ g = UpperFunctionGraph.new($options[:function])
101
+ when "single","show"
102
+ g = SingleFunctionGraph.new($options[:function])
103
+ when 8
104
+ g = EightFunctionGraph.new($options[:function])
105
+ else
106
+ g = FunctionGraph.new
147
107
  end
148
108
 
149
109
  # Set debug mode
150
- g.debug = debug
110
+ g.debug = $options[:debug]
151
111
 
152
- # Include the internal functions of the language?
153
- g.adds = adds
112
+ # Include additional functions?
113
+ g.adds = $options[:adds]
154
114
 
155
115
  # Creates the Knodes/Edges of the graph
156
- g.fill(files,excludes)
116
+ g.fill($options[:files],$options[:excludes])
157
117
 
158
118
  # Remove edges
159
- g.limit(depth) if depth
119
+ g.limit($options[:depth]) if $options[:depth]
160
120
 
161
121
  # What sort of output should be created?
162
- case output
163
- when "ps", "svg", "png", "jpg"
164
- g.to_type(filename,output)
165
- when "dot"
166
- g.to_dot(filename)
167
- when "txt"
168
- g.to_txt
169
- else
170
- if mode == "show"
171
- puts g.display_functionbody(function)
172
- else
173
- g.display
174
- end
175
- end
122
+ case $options[:output]
123
+ when "ps", "svg", "png", "jpg"
124
+ g.to_type($options[:filename],$options[:output])
125
+ when "dot"
126
+ g.to_dot($options[:filename])
127
+ when "txt"
128
+ g.to_txt
129
+ else
130
+ if $options[:mode] == "show"
131
+ puts g.display_functionbody($options[:function])
132
+ else
133
+ g.display
134
+ end
135
+ end
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.8"
5
+ s.version = "0.7.11"
6
6
  s.date = Time.new.to_s
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.bindir = 'bin'
@@ -6,6 +6,10 @@ require 'rgl/traversal'
6
6
  require 'thread'
7
7
  require 'asciify'
8
8
 
9
+ module Codegraph
10
+ VERSION = '0.7.11'
11
+ end
12
+
9
13
  class FunctionGraph < RGL::DirectedAdjacencyGraph
10
14
  attr_accessor :funx, :adds, :excludes, :debug
11
15
 
@@ -19,20 +23,6 @@ class FunctionGraph < RGL::DirectedAdjacencyGraph
19
23
  'label' => '',
20
24
  'fontsize' => '12'}
21
25
 
22
- # Hash of supported langs and the ctags marker for functions
23
- Types = {"php" => "f",
24
- "perl" => "s",
25
- "c" => "f",
26
- "f" => "fs",
27
- "sh" => "f"}
28
-
29
- # Hash of how ctags calls function for each lang
30
- Funx = {"php" => "function",
31
- "perl" => "subroutine",
32
- "c" => "function",
33
- "f" => "subroutine",
34
- "sh" => "function"}
35
-
36
26
  @@home = `echo $HOME`.chomp
37
27
  @@codehomedir = "#{@@home}/.codegraph"
38
28
  @@matchBeforFuncName = '[^A-z0-9_]\s*'
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 7
8
- - 8
9
- version: 0.7.8
8
+ - 11
9
+ version: 0.7.11
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-18 14:41:19 +01:00
17
+ date: 2011-02-14 14:51:03 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency