linkmap 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/linkmap.rb +82 -11
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d39688a87ec74b520430b6bf205c24fa557f2155
|
4
|
+
data.tar.gz: b5ec195a7d09daf3c2b76f5d24ad9ecb3883146b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71bd7a931d58a39c06b605706252c54c99bbcdd5e5456fdde68489358a27648ee813e9a1c01c0af762a9c014f92c78c4e44e2c55ae2bfea938e15fbae7cef766
|
7
|
+
data.tar.gz: 7dae4e4eb92dd87250bf0b704ab3c03cd69f5ce12f4ddc472d8985763c0235cebc4702f6d041cf7f3397d44b19a5d8b3cf1bd919262aa1b4dd993cd4ae033d7a
|
data/lib/linkmap.rb
CHANGED
@@ -31,6 +31,7 @@ module LinkMap
|
|
31
31
|
@reachSections = false
|
32
32
|
|
33
33
|
@fileMap = Hash.new
|
34
|
+
@moduleMap = Hash.new
|
34
35
|
end
|
35
36
|
|
36
37
|
def run(argv)
|
@@ -79,40 +80,94 @@ module LinkMap
|
|
79
80
|
end
|
80
81
|
|
81
82
|
fileArray = @fileMap.values
|
82
|
-
fileArray
|
83
|
-
|
83
|
+
fileArray.each do |linkFile|
|
84
|
+
array = linkFile.name.split("/")
|
85
|
+
line = array[array.size-1]
|
86
|
+
if index=line.index("(") != nil
|
87
|
+
index = line.index("(")
|
88
|
+
moduleName = line[0, index]
|
89
|
+
elsif index=line.index("tbd") != nil
|
90
|
+
moduleName = "system"
|
91
|
+
else
|
92
|
+
moduleName = "other"
|
93
|
+
end
|
94
|
+
# puts moduleName
|
95
|
+
if !@moduleMap.has_key?(moduleName)
|
96
|
+
fileModule = FileModule.new()
|
97
|
+
fileModule.name = moduleName
|
98
|
+
@moduleMap.store(moduleName, fileModule)
|
99
|
+
else
|
100
|
+
fileModule = @moduleMap.fetch(moduleName)
|
101
|
+
end
|
102
|
+
fileModule.size = fileModule.size.to_i+linkFile.size.to_i
|
103
|
+
fileModule.moduleFiles.push(linkFile)
|
104
|
+
end
|
105
|
+
|
106
|
+
#创建输出文件
|
84
107
|
array = filename.split("/")
|
85
108
|
destFileName = array[array.size-1]
|
86
109
|
destFileName = "analize_#{destFileName}"
|
87
110
|
array.delete_at(array.size-1)
|
88
111
|
array.push(destFileName)
|
89
112
|
destFileName = array.join("/")
|
90
|
-
|
91
113
|
if File::file?(destFileName)
|
92
114
|
File::delete(destFileName)
|
93
115
|
end
|
94
116
|
destFile = File.new(destFileName, "w");
|
95
117
|
|
96
|
-
|
118
|
+
#输出modules
|
119
|
+
moduleArray = @moduleMap.values
|
120
|
+
moduleArray = moduleArray.sort{|x,y| y.size <=> x.size}
|
121
|
+
moduleArray.delete(@moduleMap.fetch("system"))
|
122
|
+
moduleArray.insert(0, @moduleMap.fetch("system"))
|
123
|
+
moduleArray.delete(@moduleMap.fetch("other"))
|
124
|
+
moduleArray.push(@moduleMap.fetch("other"))
|
125
|
+
|
97
126
|
totalSize = 0
|
98
|
-
|
99
|
-
|
100
|
-
|
127
|
+
moduleArray.each do |fileModule|
|
128
|
+
totalSize += fileModule.size
|
129
|
+
end
|
130
|
+
destFile.puts "总体积: #{getFileSize totalSize}"
|
131
|
+
|
132
|
+
moduleArray.each do |fileModule|
|
133
|
+
line = fileModule.name
|
101
134
|
line += "\t"
|
102
|
-
line +=
|
103
|
-
# puts "#{line}"
|
135
|
+
line += getFileSize fileModule.size
|
104
136
|
destFile.puts line
|
105
|
-
totalSize += linkFile.size
|
106
137
|
end
|
107
|
-
destFile.puts "
|
138
|
+
destFile.puts "\n"
|
108
139
|
|
140
|
+
#输出各个module
|
141
|
+
moduleArray.each do |fileModule|
|
142
|
+
fileArray = fileModule.moduleFiles.sort{|x,y| y.size <=> x.size}
|
143
|
+
line = "==== #{fileModule.name} ==="
|
144
|
+
destFile.puts line
|
145
|
+
fileArray.each do |linkFile|
|
146
|
+
array = linkFile.name.split("/")
|
147
|
+
line = array[array.size-1]
|
148
|
+
line += "\t"
|
149
|
+
line += "#{getFileSize linkFile.size}"
|
150
|
+
destFile.puts line
|
151
|
+
totalSize += linkFile.size
|
152
|
+
end
|
153
|
+
destFile.puts ""
|
154
|
+
end
|
109
155
|
destFile.close
|
156
|
+
|
110
157
|
puts("success!")
|
111
158
|
puts("result saved in:#{destFileName}")
|
112
159
|
else
|
113
160
|
puts "\t#{argv[1]} is not a file name"
|
114
161
|
end
|
115
162
|
end
|
163
|
+
|
164
|
+
def getFileSize(size)
|
165
|
+
if size < 1024*1024
|
166
|
+
"#{size/1024.0}K"
|
167
|
+
else
|
168
|
+
"#{size/(1024.0*1024.0)}M"
|
169
|
+
end
|
170
|
+
end
|
116
171
|
|
117
172
|
end
|
118
173
|
|
@@ -126,6 +181,22 @@ module LinkMap
|
|
126
181
|
|
127
182
|
end
|
128
183
|
|
184
|
+
class FileModule
|
185
|
+
|
186
|
+
attr_accessor :name
|
187
|
+
attr_accessor :size
|
188
|
+
attr_accessor :moduleFiles
|
189
|
+
|
190
|
+
@name
|
191
|
+
@size
|
192
|
+
@moduleFiles
|
193
|
+
|
194
|
+
def initialize()
|
195
|
+
@moduleFiles = Array.new
|
196
|
+
end
|
197
|
+
|
198
|
+
end
|
199
|
+
|
129
200
|
# argv = ["a", "/Users/wangbin/Desktop/My/linkmap/babyShow-LinkMap-normal-armv7.txt"]
|
130
201
|
# argv = ["a", "b"]
|
131
202
|
# argv = []
|