javaclass 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +188 -194
- data/Readme.txt +33 -29
- data/examples/generate_class_lists.rb +16 -9
- data/history.txt +15 -4
- data/javaclass.gemspec +10 -8
- data/lib/generated/examples/chart_class_dependencies.txt +35 -0
- data/lib/generated/examples/chart_module_dependencies.txt +43 -0
- data/lib/generated/examples/check_interface_names.txt +36 -0
- data/lib/generated/examples/count_classes_in_modules.txt +31 -0
- data/lib/generated/examples/cumulative_dependencies.txt +28 -0
- data/lib/generated/examples/find_all_imported_types.txt +38 -0
- data/lib/generated/examples/find_incoming_dependency_graph.txt +73 -0
- data/lib/generated/examples/find_layers_of_modules.txt +70 -0
- data/lib/generated/examples/find_referenced_modules.txt +41 -0
- data/lib/generated/examples/find_unreferenced_classes.txt +66 -0
- data/lib/generated/examples/generate_class_lists.txt +53 -0
- data/lib/generated/examples/show_jar_api.txt +64 -0
- data/lib/generated/examples/simple_usage.txt +38 -0
- data/lib/javaclass/classfile/access_flag_constants.rb +32 -5
- data/lib/javaclass/classfile/access_flags.rb +39 -20
- data/lib/javaclass/classfile/attributes/attributes.rb +134 -0
- data/lib/javaclass/classfile/class_access_flags.rb +37 -0
- data/lib/javaclass/classfile/class_file_attributes.rb +62 -0
- data/lib/javaclass/classfile/class_version.rb +0 -1
- data/lib/javaclass/classfile/constant_pool.rb +17 -11
- data/lib/javaclass/classfile/constants/single_reference.rb +53 -0
- data/lib/javaclass/classfile/fields.rb +37 -0
- data/lib/javaclass/classfile/java_class_header.rb +22 -13
- data/lib/javaclass/classfile/java_class_header_shortcuts.rb +6 -2
- data/lib/javaclass/classfile/methods.rb +37 -0
- data/lib/javaclass/classlist/jar_searcher.rb +38 -4
- data/lib/javaclass/classpath/temporary_unpacker.rb +1 -1
- data/lib/javaclass/string_hexdump.rb +1 -1
- data/license.txt +7 -7
- data/test/data/access_flags/{AccessFlagsTestInner$1.class → AccessFlagsTestAnonym$1.class} +0 -0
- data/test/data/access_flags/{AccessFlagsTestInner.class → AccessFlagsTestAnonym.class} +0 -0
- data/test/data/access_flags/AccessFlagsTestAnonym.java +9 -0
- data/test/data/access_flags/AccessFlagsTestPublic_javap.txt +1 -0
- data/test/data/constant_pool/Java8_JavaFX_Animation$1_Tag15.class +0 -0
- data/test/data/constant_pool/Java9_Activation_module-info_Tag20.class +0 -0
- data/test/data/jar_searcher/JarClassListTest.jar +0 -0
- data/test/data/jar_searcher/PublicClass.java +44 -1
- data/test/data/jar_searcher/make.bat +1 -2
- data/test/{test_access_flags.rb → test_class_access_flags.rb} +91 -93
- data/test/test_class_file_attributes.rb +57 -0
- data/test/test_constant_pool.rb +31 -0
- data/test/test_jar_searcher.rb +40 -7
- data/test/test_javaclass_api.rb +2 -2
- data/test/test_string_hexdump.rb +4 -1
- data/test/ts_all_tests.rb +4 -2
- metadata +100 -116
- data/test/data/access_flags/AccessFlagsTestInner$2.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner.java +0 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1d2365f0669ad709753366f66070bd05668c73becda0c878e94d346337d1a3cb
|
4
|
+
data.tar.gz: 3157e8329a20c00a28e14f9c23c7b21e07984aef67ff83cbc8e0b6cff5ea1cae
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f0879048da8004e427b7d8d48125f13a041059e8e3ae537ab4a72b2a48b9ca012880ddfbe427d49d32c9dd5d205448e8f36d461a1194c17c9b3d6dbc4e094201
|
7
|
+
data.tar.gz: 548019c98321c52573b6c239b456c7a9fb048f2a3900ca6d5987a494d5568aeffc22923783b656a821092d05292f5bd7f6ec1b98620ff374b9244c4f1c8a08ed
|
data/Rakefile
CHANGED
@@ -1,194 +1,188 @@
|
|
1
|
-
require 'net/http'
|
2
|
-
require 'rubygems'
|
3
|
-
require 'rubygems/gem_runner' # install and uninstall
|
4
|
-
require 'rubygems/package_task'
|
5
|
-
require 'rake'
|
6
|
-
require 'rake/clean' # for clean/clobber
|
7
|
-
require 'rake/testtask'
|
8
|
-
require 'rake/packagetask'
|
9
|
-
require File.dirname(__FILE__) + '/dev/example_task'
|
10
|
-
|
11
|
-
# Test, package and publish functions.
|
12
|
-
# Author:: Peter Kofler
|
13
|
-
# See:: http://rake.rubyforge.org/files/doc/rakefile_rdoc.html
|
14
|
-
# Acknowledgement:: Building this Rake file was supported as System One Research Day. Thank you System One for funding Open Source :-)
|
15
|
-
|
16
|
-
RDOC_DIR = 'html'
|
17
|
-
RDOC_REPO = 'api'
|
18
|
-
|
19
|
-
gemspec = eval(IO.readlines('javaclass.gemspec').join)
|
20
|
-
full_gem_name = "#{gemspec.name}-#{gemspec.version}"
|
21
|
-
|
22
|
-
desc 'Validates the gemspec'
|
23
|
-
task :validate_gem do
|
24
|
-
gemspec.validate
|
25
|
-
end
|
26
|
-
|
27
|
-
desc 'Displays the current version'
|
28
|
-
task :version do
|
29
|
-
puts gemspec.version
|
30
|
-
end
|
31
|
-
|
32
|
-
# :test
|
33
|
-
Rake::TestTask.new do |t|
|
34
|
-
t.test_files = gemspec.test_files
|
35
|
-
t.warning = true
|
36
|
-
# t.verbose = false is default
|
37
|
-
end
|
38
|
-
|
39
|
-
begin
|
40
|
-
require 'rcov/rcovtask'
|
41
|
-
|
42
|
-
# :rcov
|
43
|
-
Rcov::RcovTask.new do |t|
|
44
|
-
t.test_files = gemspec.test_files
|
45
|
-
t.warning = true
|
46
|
-
t.rcov_opts << "--sort=coverage"
|
47
|
-
t.rcov_opts << "--only-uncovered"
|
48
|
-
end
|
49
|
-
|
50
|
-
rescue LoadError
|
51
|
-
# skip if not installed
|
52
|
-
warn("rcov not installed. coverage not available. #{$!}")
|
53
|
-
end
|
54
|
-
|
55
|
-
desc 'Find missing test methods with ZenTest'
|
56
|
-
task :zentest do
|
57
|
-
files = gemspec.files.find_all { |f| f =~ /^#{gemspec.require_path}.*\.rb$/ } + gemspec.test_files
|
58
|
-
output = `ruby -I#{gemspec.require_path} -e "require 'rubygems'; load(Gem.bin_path('ZenTest', 'zentest'))" #{files.join(' ')}`
|
59
|
-
puts output.gsub(/^#.*\n/, '') # skip all ZenTest comments
|
60
|
-
end
|
61
|
-
|
62
|
-
# :gem
|
63
|
-
Gem::PackageTask.new(gemspec) do |pkg|
|
64
|
-
pkg.need_zip = true
|
65
|
-
end
|
66
|
-
|
67
|
-
# :package, :clobber_package, :repackage
|
68
|
-
Rake::PackageTask.new(gemspec.name, gemspec.version) do |pkg|
|
69
|
-
#pkg.need_tar = true - no compress in tar on unxutils in Windows
|
70
|
-
#pkg.need_tar_gz = true - no compress in tar on unxutils in Windows
|
71
|
-
pkg.need_zip = true
|
72
|
-
pkg.package_files.include gemspec.files
|
73
|
-
end
|
74
|
-
|
75
|
-
desc 'Install the gem locally'
|
76
|
-
task :install_gem => :package do
|
77
|
-
Gem::GemRunner.new.run ['install', "pkg/#{full_gem_name}"]
|
78
|
-
end
|
79
|
-
|
80
|
-
desc 'Uninstall the gem'
|
81
|
-
task :uninstall_gem do
|
82
|
-
Gem::GemRunner.new.run ['uninstall', gemspec.name]
|
83
|
-
end
|
84
|
-
|
85
|
-
# Helper method to execute
|
86
|
-
# The +
|
87
|
-
def
|
88
|
-
puts `
|
89
|
-
end
|
90
|
-
|
91
|
-
desc 'Tag current version in
|
92
|
-
task :tag do
|
93
|
-
|
94
|
-
#
|
95
|
-
puts 'Tag created. Don\'t forget to push'
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
task :
|
113
|
-
task :
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
rdoc.
|
127
|
-
rdoc.
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
rdoc.rdoc_files.include(*
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
#
|
179
|
-
file
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
end
|
190
|
-
|
191
|
-
# :clean :clobber
|
192
|
-
CLOBBER.include(RDOC_REPO, 'ClassLists', 'fullClassList*.txt')
|
193
|
-
|
194
|
-
task :default => :test
|
1
|
+
require 'net/http'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rubygems/gem_runner' # install and uninstall
|
4
|
+
require 'rubygems/package_task'
|
5
|
+
require 'rake'
|
6
|
+
require 'rake/clean' # for clean/clobber
|
7
|
+
require 'rake/testtask'
|
8
|
+
require 'rake/packagetask'
|
9
|
+
require File.dirname(__FILE__) + '/dev/example_task'
|
10
|
+
|
11
|
+
# Test, package and publish functions.
|
12
|
+
# Author:: Peter Kofler
|
13
|
+
# See:: http://rake.rubyforge.org/files/doc/rakefile_rdoc.html
|
14
|
+
# Acknowledgement:: Building this Rake file was supported as System One Research Day. Thank you System One for funding Open Source :-)
|
15
|
+
|
16
|
+
RDOC_DIR = 'html'
|
17
|
+
RDOC_REPO = 'api'
|
18
|
+
|
19
|
+
gemspec = eval(IO.readlines('javaclass.gemspec').join)
|
20
|
+
full_gem_name = "#{gemspec.name}-#{gemspec.version}"
|
21
|
+
|
22
|
+
desc 'Validates the gemspec'
|
23
|
+
task :validate_gem do
|
24
|
+
gemspec.validate
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Displays the current version'
|
28
|
+
task :version do
|
29
|
+
puts gemspec.version
|
30
|
+
end
|
31
|
+
|
32
|
+
# :test
|
33
|
+
Rake::TestTask.new do |t|
|
34
|
+
t.test_files = gemspec.test_files
|
35
|
+
t.warning = true
|
36
|
+
# t.verbose = false is default
|
37
|
+
end
|
38
|
+
|
39
|
+
begin
|
40
|
+
require 'rcov/rcovtask'
|
41
|
+
|
42
|
+
# :rcov
|
43
|
+
Rcov::RcovTask.new do |t|
|
44
|
+
t.test_files = gemspec.test_files
|
45
|
+
t.warning = true
|
46
|
+
t.rcov_opts << "--sort=coverage"
|
47
|
+
t.rcov_opts << "--only-uncovered"
|
48
|
+
end
|
49
|
+
|
50
|
+
rescue LoadError
|
51
|
+
# skip if not installed
|
52
|
+
# warn("rcov not installed. coverage not available. #{$!}")
|
53
|
+
end
|
54
|
+
|
55
|
+
desc 'Find missing test methods with ZenTest'
|
56
|
+
task :zentest do
|
57
|
+
files = gemspec.files.find_all { |f| f =~ /^#{gemspec.require_path}.*\.rb$/ } + gemspec.test_files
|
58
|
+
output = `ruby -I#{gemspec.require_path} -e "require 'rubygems'; load(Gem.bin_path('ZenTest', 'zentest'))" #{files.join(' ')}`
|
59
|
+
puts output.gsub(/^#.*\n/, '') # skip all ZenTest comments
|
60
|
+
end
|
61
|
+
|
62
|
+
# :gem
|
63
|
+
Gem::PackageTask.new(gemspec) do |pkg|
|
64
|
+
pkg.need_zip = true
|
65
|
+
end
|
66
|
+
|
67
|
+
# :package, :clobber_package, :repackage
|
68
|
+
Rake::PackageTask.new(gemspec.name, gemspec.version) do |pkg|
|
69
|
+
#pkg.need_tar = true - no compress in tar on unxutils in Windows
|
70
|
+
#pkg.need_tar_gz = true - no compress in tar on unxutils in Windows
|
71
|
+
pkg.need_zip = true
|
72
|
+
pkg.package_files.include gemspec.files
|
73
|
+
end
|
74
|
+
|
75
|
+
desc 'Install the gem locally'
|
76
|
+
task :install_gem => :package do
|
77
|
+
Gem::GemRunner.new.run ['install', "pkg/#{full_gem_name}"]
|
78
|
+
end
|
79
|
+
|
80
|
+
desc 'Uninstall the gem'
|
81
|
+
task :uninstall_gem do
|
82
|
+
Gem::GemRunner.new.run ['uninstall', gemspec.name]
|
83
|
+
end
|
84
|
+
|
85
|
+
# Helper method to execute Git with the _params_ array.
|
86
|
+
# The +git+ executable must be in the path.
|
87
|
+
def git(params)
|
88
|
+
puts `git #{params.join(' ')}`
|
89
|
+
end
|
90
|
+
|
91
|
+
desc 'Tag current version in Git'
|
92
|
+
task :tag do
|
93
|
+
git ['tag', "#{full_gem_name}"]
|
94
|
+
# git ['push']
|
95
|
+
puts 'Tag created. Don\'t forget to push'
|
96
|
+
end
|
97
|
+
|
98
|
+
# internal - desc 'Release the gem to Rubygems'
|
99
|
+
task :release_rubygems => :package do
|
100
|
+
puts "Releasing #{full_gem_name} to Rubygems"
|
101
|
+
Gem::GemRunner.new.run ['push', "pkg/#{full_gem_name}.gem"]
|
102
|
+
end
|
103
|
+
|
104
|
+
desc 'Package and upload gem to Rubygems'
|
105
|
+
task :publish_gem => [:clobber_package, :example, :package, :release_rubygems]
|
106
|
+
|
107
|
+
# :example, :clobber_example, :reexample
|
108
|
+
example_task_lib = Rake::ExampleTask.new do |example|
|
109
|
+
example.example_files.include 'examples/**/*.rb'
|
110
|
+
end
|
111
|
+
task :clobber_rdoc => [:clobber_example]
|
112
|
+
task :rdoc => [:example]
|
113
|
+
task :package => [:example]
|
114
|
+
|
115
|
+
begin
|
116
|
+
require 'rdoc/task'
|
117
|
+
SomeRDocTask = RDoc::Task
|
118
|
+
rescue LoadError
|
119
|
+
require 'rake/rdoctask'
|
120
|
+
SomeRDocTask = Rake::RDocTask
|
121
|
+
end
|
122
|
+
|
123
|
+
# :rdoc, :clobber_rdoc, :rerdoc
|
124
|
+
SomeRDocTask.new do |rdoc|
|
125
|
+
rdoc.rdoc_dir = RDOC_DIR # 'html' is default anyway
|
126
|
+
rdoc.title = "#{full_gem_name} Documentation"
|
127
|
+
rdoc.main = 'Readme.txt'
|
128
|
+
|
129
|
+
# examples are generated later and not necessarily available at definition time
|
130
|
+
examples = example_task_lib.conversion_pairs.map { |a| a[1] }
|
131
|
+
|
132
|
+
rdoc.rdoc_files.include(*examples)
|
133
|
+
rdoc.rdoc_files.include('lib/**/*.rb', *gemspec.extra_rdoc_files)
|
134
|
+
end
|
135
|
+
|
136
|
+
# Helper method to add target="_parent" to all external links in _file_ html.
|
137
|
+
def add_href_parent(file)
|
138
|
+
lines = IO.readlines(file).collect do |line|
|
139
|
+
if line =~ /(href=(?:'|")https?:\/\/)/
|
140
|
+
"#{$`}target=\"_parent\" #{$1}#{$'}"
|
141
|
+
else
|
142
|
+
line
|
143
|
+
end
|
144
|
+
end
|
145
|
+
File.open(file, 'w') { |f| f.print lines.join }
|
146
|
+
end
|
147
|
+
|
148
|
+
desc 'Fix the RDoc hrefs in framesets'
|
149
|
+
task :fix_rdoc => [:rdoc] do
|
150
|
+
Dir["#{RDOC_DIR}/**/*.html"].each { |file| add_href_parent(file) }
|
151
|
+
end
|
152
|
+
|
153
|
+
# Helper method to add the gem version _dir_ into index _file_ to frameset links.
|
154
|
+
def add_frameset_version(file, dir)
|
155
|
+
lines = IO.readlines(file).collect do |line|
|
156
|
+
if line =~ /(frame src=")/
|
157
|
+
"#{$`}#{$1}#{dir}/#{$'}"
|
158
|
+
else
|
159
|
+
line
|
160
|
+
end
|
161
|
+
end
|
162
|
+
File.open(file, 'w') { |f| f.print lines.join }
|
163
|
+
end
|
164
|
+
|
165
|
+
desc 'Publish the RDoc files to repository'
|
166
|
+
task :publish_rdoc => [:clobber_rdoc, :fix_rdoc] do
|
167
|
+
puts "Releasing #{full_gem_name} API"
|
168
|
+
version_dir = "#{gemspec.version}"
|
169
|
+
|
170
|
+
FileUtils.rm_r RDOC_REPO rescue nil
|
171
|
+
FileUtils.mkdir RDOC_REPO
|
172
|
+
|
173
|
+
FileUtils.rm_r "#{RDOC_REPO}/#{version_dir}" rescue nil
|
174
|
+
FileUtils.cp_r RDOC_DIR, "#{RDOC_REPO}/#{version_dir}"
|
175
|
+
|
176
|
+
# modify index, update redirect in frameset
|
177
|
+
file = "#{RDOC_REPO}/index.html"
|
178
|
+
FileUtils.cp "#{RDOC_REPO}/#{version_dir}/index.html", file
|
179
|
+
add_frameset_version(file, version_dir)
|
180
|
+
|
181
|
+
puts 'API created. Copy to hosting\4_bitbucket.org\api'
|
182
|
+
puts 'API created. Don\'t forget to upload'
|
183
|
+
end
|
184
|
+
|
185
|
+
# :clean :clobber
|
186
|
+
CLOBBER.include(RDOC_REPO, 'ClassLists', 'fullClassList*.txt')
|
187
|
+
|
188
|
+
task :default => :test
|
data/Readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
javaclass-rb
|
2
|
-
by {Peter 'Code Cop' Kofler}[
|
2
|
+
by {Peter 'Code Cop' Kofler}[https://www.code-cop.org/]
|
3
3
|
|
4
|
-
* {Homepage (
|
4
|
+
* {Homepage (GitHub)}[https://github.com/codecop/javaclass-rb]
|
5
5
|
* email peter dot kofler at code minus cop dot org
|
6
6
|
|
7
7
|
== Description
|
@@ -27,52 +27,56 @@ which might be the base for some serious static code analysis tools. (I
|
|
27
27
|
sudo gem install javaclass
|
28
28
|
|
29
29
|
* {Gem Hosting}[http://rubygems.org/gems/javaclass]
|
30
|
-
* {Download of
|
30
|
+
* {Download of tar balls and gems}[https://www.code-cop.org/download/javaclass-rb/]
|
31
31
|
|
32
32
|
== Documentation
|
33
33
|
|
34
34
|
Module JavaClass is the entry point for basic functions. All advanced functions are
|
35
|
-
available in Object through the JavaClass::Dsl::Mixin. The main class or the parser
|
36
|
-
is JavaClass::ClassFile::JavaClassHeader which provides access to all information
|
37
|
-
of a Java class file.
|
35
|
+
available in Object through the JavaClass::Dsl::Mixin. The main class or the parser
|
36
|
+
is JavaClass::ClassFile::JavaClassHeader which provides access to all information
|
37
|
+
of a Java class file.
|
38
38
|
|
39
|
-
* {API RDoc}[
|
39
|
+
* {API RDoc}[https://www.code-cop.org/api/javaclass-rb/]
|
40
40
|
|
41
|
-
I tried hard to rdoc all classes and public methods, so just {read it}[
|
41
|
+
I tried hard to rdoc all classes and public methods, so just {read it}[https://www.code-cop.org/api/javaclass-rb/].
|
42
42
|
|
43
43
|
== Usage
|
44
44
|
|
45
|
-
See the various examples in the examples folder of the gem.
|
45
|
+
See the various examples in the examples folder of the gem.
|
46
46
|
|
47
47
|
* {Basic Usage}[link:/files/lib/generated/examples/simple_usage_txt.html]
|
48
|
-
*
|
49
|
-
* {
|
50
|
-
* {
|
51
|
-
* {
|
52
|
-
* {
|
53
|
-
*
|
54
|
-
* {
|
55
|
-
* {
|
56
|
-
* {
|
57
|
-
* {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
48
|
+
* Classes in modules/Jars, classpath
|
49
|
+
* {Number of classes in modules/JARs}[link:/files/lib/generated/examples/count_classes_in_modules_txt.html]
|
50
|
+
* {List content of a (Maven) JAR}[link:/files/lib/generated/examples/show_jar_api_txt.html]
|
51
|
+
* {Generate lists of JDK classes}[link:/files/lib/generated/examples/generate_class_lists_txt.html]
|
52
|
+
* {Check names of all interfaces}[link:/files/lib/generated/examples/check_interface_names_txt.html]
|
53
|
+
* Dependencies to other classes
|
54
|
+
* {All imported types}[link:/files/lib/generated/examples/find_all_imported_types_txt.html]
|
55
|
+
* {Cumulative dependencies of a class}[link:/files/lib/generated/examples/cumulative_dependencies_txt.html]
|
56
|
+
* {Find (un)referenced JARs}[link:/files/lib/generated/examples/find_referenced_modules_txt.html]
|
57
|
+
* {Find unused classes}[link:/files/lib/generated/examples/find_unreferenced_classes_txt.html]
|
58
|
+
* {Extract and chart dependencies between classes}[link:/files/lib/generated/examples/chart_class_dependencies_txt.html]
|
59
|
+
* {Extract and chart dependency info between modules}[link:/files/lib/generated/examples/chart_module_dependencies_txt.html]
|
60
|
+
* {Find classes that are accessed from outside the module}[link:/files/lib/generated/examples/find_incoming_dependency_graph_txt.html]
|
61
|
+
* {Based on dependencies, sort modules into layers}[link:/files/lib/generated/examples/find_layers_of_modules_txt.html]
|
62
|
+
|
63
|
+
There is some experimental logic to recognize Java class name literals in Ruby
|
64
|
+
which are mapped to JavaClass::JavaQualifiedName. Packages have to be suffixed
|
65
|
+
with ".*" to be recognized. See JavaClass::Dsl::JavaNameFactory for its usage.
|
62
66
|
|
63
67
|
== Dependencies
|
64
68
|
|
65
|
-
* Ruby 1.8.7 (also tested
|
66
|
-
* {rubyzip}[https://github.com/rubyzip/rubyzip] 0.9.1 (also tested
|
69
|
+
* Ruby 1.8.7 (also tested 1.9.3, 2.0, 2.1 to 2.7)
|
70
|
+
* {rubyzip}[https://github.com/rubyzip/rubyzip] 0.9.1 (also tested 0.9.6.1, 0.9.9, 1.0.0, 1.1.7, 1.3.0, 2.3.0)
|
67
71
|
* Originally Ruby 1.8.6 with rubyzip 0.9.1
|
68
72
|
|
69
73
|
== References
|
70
74
|
|
71
|
-
*
|
72
|
-
*
|
73
|
-
* {Similar Project by unageanu}[http://github.com/unageanu/javaclass], GitHub 2010.
|
75
|
+
* The Java class file lifestyle, JavaWorld 1996.
|
76
|
+
* The class File Format, The Java Virtual Machine Specification, Second Edition.
|
77
|
+
* {Similar Project by unageanu}[http://github.com/unageanu/javaclass], GitHub 2010.
|
74
78
|
|
75
79
|
== License
|
76
80
|
|
77
81
|
Typically the licenses listed for the project are that of the project itself, and not of dependencies.
|
78
|
-
* {BSD License}[http://www.opensource.org/licenses/bsd-license.php], it's enclosed in {license.txt}[link:/files/license_txt.html].
|
82
|
+
* {The 2-Clause BSD License}[http://www.opensource.org/licenses/bsd-license.php], it's enclosed in {license.txt}[link:/files/license_txt.html].
|