linkmap 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/linkmap.rb +82 -11
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65483982ddf191a00195c9d3ffa802429f89ccfe
4
- data.tar.gz: ca585f0610fe4a0ba9c237bd42a63111d7aa96cc
3
+ metadata.gz: d39688a87ec74b520430b6bf205c24fa557f2155
4
+ data.tar.gz: b5ec195a7d09daf3c2b76f5d24ad9ecb3883146b
5
5
  SHA512:
6
- metadata.gz: c59b1dde441330e18cef352800e452629070ba3a5fc81e21ad796fdc541295711986992d16e405d85041d62ce12c4c8f672f4287af96519027eef62bf43b6059
7
- data.tar.gz: 81ad75701e37342279ae0f296249c951c7f7c7a6d3c54f4bb7e1777049c73a4ac8573a42818fe9ab404b2b78afe4fb004b548d10172dbe5e30ee5b206739c9ab
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 = fileArray.sort{|x,y| y.size <=> x.size}
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
- destFile.puts "各模块体积大小"
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
- fileArray.each do |linkFile|
99
- array = linkFile.name.split("/")
100
- line = array[array.size-1]
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 += "#{linkFile.size/1024.0}K"
103
- # puts "#{line}"
135
+ line += getFileSize fileModule.size
104
136
  destFile.puts line
105
- totalSize += linkFile.size
106
137
  end
107
- destFile.puts "总体积: #{totalSize/(1024.0*1024.0)}M"
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 = []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linkmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - siyou325