linkmap 0.0.0 → 0.0.1

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 (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