forked from 4D-JP/code-audit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparse_verify_log.txt
311 lines (245 loc) · 11.1 KB
/
parse_verify_log.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
//change these if necessary
$verificationLogFilePath:=Get 4D file(Verification log file)
$lang:=Get database localization(Default localization)
$verificationLogFilePath:=System folder(Desktop)+"TelemasV11_Verify_Log_2019-08-28 12-50-42.xml"
Case of
: (Is macOS)
$resourcesPath:=Application file+Folder separator+"Contents"+Folder separator+"Resources"+Folder separator
: (Is Windows)
$resourcesPath:=Path to object(Application file).parentFolder+"Resources"+Folder separator
Else
$resourcesPath:=""
End case
$r:=Get localized string(":8009,19")
$xlfPath:=$resourcesPath+$lang+".lproj"+Folder separator+"DataToolLog"+Uppercase($lang)+".xlf"
ASSERT(Test path name($xlfPath)=Is a document)
$dom:=DOM Parse XML source($xlfPath)
$labels:=New object
If (OK=1)
ARRAY TEXT($groups;0)
$group:=DOM Find XML element($dom;"xliff/file/body/group";$groups)
For ($i;1;Size of array($groups))
$group:=$groups{$i}
$id:=""
DOM GET XML ATTRIBUTE BY NAME($group;"id";$id)
$o:=New object
$labels[$id]:=$o
ARRAY TEXT($transUnits;0)
$transUnit:=DOM Find XML element($group;"group/trans-unit";$transUnits)
For ($ii;1;Size of array($transUnits))
$transUnit:=$transUnits{$ii}
$id:=""
DOM GET XML ATTRIBUTE BY NAME($transUnit;"id";$id)
$target:=DOM Find XML element($transUnit;"trans-unit/target")
If (OK=1)
$value:=""
DOM GET XML ELEMENT VALUE($target;$value)
$o[$id]:=$value
End if
End for
End for
DOM CLOSE XML($dom)
End if
//8009:Verify steps
$labels["Additional errors"]:=$labels["8009"]["1"]
$labels["Checking tables"]:=$labels["8009"]["2"]
$labels["Checking indexes"]:=$labels["8009"]["3"]
$labels["Move original"]:=$labels["8009"]["4"]
$labels["Move the new file to the original location"]:=$labels["8009"]["5"]
$labels["Move original index"]:=$labels["8009"]["6"]
$labels["Move the new index file to the original location"]:=$labels["8009"]["7"]
$labels["Verify the internal database of the structure"]:=$labels["8009"]["8"]
$labels["Check Bittables for segments"]:=$labels["8009"]["9"]
$labels["Initialization of the resources for the verify operation"]:=$labels["8009"]["10"]
$labels["Move original log file"]:=$labels["8009"]["11"]
$labels["Opening the database in maintenance mode"]:=$labels["8009"]["12"]
$labels["Additional warnings"]:=$labels["8009"]["13"]
//8010:Verify Application Progress
$labels["Check Database Methods"]:=$labels["8010"]["1"]
$labels["Check Project Methods"]:=$labels["8010"]["2"]
$labels["Check Trigger Methods"]:=$labels["8010"]["3"]
$labels["Check Project Forms"]:=$labels["8010"]["4"]
$labels["Check Table Forms"]:=$labels["8010"]["5"]
$labels["Check User and Group information"]:=$labels["8010"]["6"]
$labels["Check Orphan Methods"]:=$labels["8010"]["7"]
$labels["Check the folders of the Explorer"]:=$labels["8010"]["8"]
$labels["Check help tips"]:=$labels["8010"]["9"]
$labels["Check menu bars and menus"]:=$labels["8010"]["10"]
$labels["Check lists"]:=$labels["8010"]["11"]
$labels["Check Orphan Forms"]:=$labels["8010"]["12"]
$labels["Check Picture Library"]:=$labels["8010"]["13"]
$labels["Check Tables And Fields Names"]:=$labels["8010"]["14"]
//8011:Verify Application Errors
//33:{Name} refers to a deprecated picture. Picture library ID = {Name2}, Name = {Name3}.
//34:Deprecated picture: ID = {Name}, Name = {Name2}.
//35:{Name} uses a deprecated picture format: PICT.
//36:{Name} uses a deprecated picture format for printing on platform {Name2}: PICT.
//37:Deprecated picture for printing on platform {Name3}: ID = {Name} Name = {Name2}.
//38:{Name} refers to a deprecated picture for printing on platform {Name4}. Picture library ID = {Name2}, Name = {Name3}.
$regex:=New object
//make regex from xliff string
//{Name} は古い形式のピクチャー(PICT)を使用しています。
//(.+)\\s*は古い形式のピクチャー\\(PICT\\)を使用しています。
$str:=$labels["8011"]["35"]
$str:=Replace string($str;"(PICT)";"\\(PICT\\)";*)
$str:=Replace string($str;"{Name}";"(.+)";*)
$regex["deprecated picture format"]:=$str
$str:=$labels["8011"]["34"]
$str:=Replace string($str;"{Name}";"(.+)";*)
$str:=Replace string($str;"{Name2}";"(.+)";*)
$regex["deprecated picture"]:=$str
$log:=New object
$log.libraryPict:=New collection
$log.tableFormPict:=New object
$log.projectFormPict:=New object
If (Test path name($verificationLogFilePath)=Is a document)
$dom:=DOM Parse XML source($verificationLogFilePath)
If (OK=1)
ARRAY TEXT($steps;0)
$step:=DOM Find XML element($dom;"verifylog/step";$steps)
For ($i;1;Size of array($steps))
$step:=$steps{$i}
$title:=""
DOM GET XML ATTRIBUTE BY NAME($step;"title";$title)
Case of
: ($title=$labels["Opening the database in maintenance mode"]) //メンテナンスモードでデータベースを開く
: ($title=$labels["Verify the internal database of the structure"]) //ストラクチャーの内部データベースを検査
: ($title=$labels["Check Tables And Fields Names"]) //テーブル名とフィールド名を検査
: ($title=$labels["Check Project Methods"])\
| ($title=$labels["Check Trigger Methods"])\
| ($title=$labels["Check Database Methods"])
ARRAY TEXT($steps2;0)
$step2:=DOM Find XML element($step;"step/step";$steps2)
$lines:=New collection
For ($ii;1;Size of array($steps2))
$step2:=$steps2{$ii}
$title:=""
DOM GET XML ATTRIBUTE BY NAME($step2;"title";$title) //method name
$info:=""
ARRAY LONGINT($pos;0)
ARRAY LONGINT($len;0)
DOM GET XML ELEMENT VALUE(DOM Find XML element($step2;"step/info");$info)
If (Match regex(":\\s*(\\d+)\\s*lines$";$info;1;$pos;$len))
$lines.push(Num(Substring($info;$pos{1};$len{1})))
End if
End for
: ($title=$labels["Check Project Forms"]) | ($title=$labels["Check Table Forms"])
ARRAY TEXT($steps2;0)
$step2:=DOM Find XML element($step;"step/step";$steps2)
$lines:=New collection
For ($ii;1;Size of array($steps2))
$step2:=$steps2{$ii}
$formName:=""
DOM GET XML ATTRIBUTE BY NAME($step2;"title";$formName)
ARRAY TEXT($steps3;0)
$step3:=DOM Find XML element($step2;"step/step";$steps3)
For ($iii;1;Size of array($steps3))
$step3:=$steps3{$iii}
$objectName:=""
DOM GET XML ATTRIBUTE BY NAME($step3;"title";$objectName)
$info:=""
ARRAY LONGINT($pos;0)
ARRAY LONGINT($len;0)
DOM GET XML ELEMENT VALUE(DOM Find XML element($step3;"step/info");$info)
If (Match regex(":\\s*(\\d+)\\s*lines$";$info;1;$pos;$len))
$lines.push(Num(Substring($info;$pos{1};$len{1})))
End if
End for
ARRAY TEXT($warnings;0)
$warning:=DOM Find XML element($step2;"step/warning";$warnings)
For ($iii;1;Size of array($warnings))
$warning:=$warnings{$iii}
$value:=""
ARRAY LONGINT($pos;0)
ARRAY LONGINT($len;0)
DOM GET XML ELEMENT VALUE($warning;$value)
If (Match regex($regex["deprecated picture format"];$value;1;$pos;$len))
$name:=Substring($value;$pos{1};$len{1})
Case of
: ($title=$labels["Check Project Forms"])
If (Match regex(".([^.]+)\\.Page(\\d+)\\.([^.]+)";$name;1;$pos;$len))
$formName:=Substring($name;$pos{1};$len{1})
$pageNumber:=Substring($name;$pos{2};$len{2})
$objectName:=Substring($name;$pos{3};$len{3})
If ($log.projectFormPict[$formName]=Null)
$log.projectFormPict[$formName]:=New object
End if
If ($log.projectFormPict[$formName][$pageNumber]=Null)
$log.projectFormPict[$formName][$pageNumber]:=New collection
End if
($log.projectFormPict[$formName][$pageNumber]).push($objectName)
End if
: ($title=$labels["Check Table Forms"])
If (Match regex("\\[([^]]+)\\]\\.([^.]+)\\.Page(\\d+)\\.([^.]+)";$name;1;$pos;$len))
$tableName:=Substring($name;$pos{1};$len{1})
$formName:=Substring($name;$pos{2};$len{2})
$pageNumber:=Substring($name;$pos{3};$len{3})
$objectName:=Substring($name;$pos{4};$len{4})
If ($log.tableFormPict[$tableName]=Null)
$log.tableFormPict[$tableName]:=New object
End if
If ($log.tableFormPict[$tableName][$formName]=Null)
$log.tableFormPict[$tableName][$formName]:=New object
End if
If ($log.tableFormPict[$tableName][$formName][$pageNumber]=Null)
$log.tableFormPict[$tableName][$formName][$pageNumber]:=New collection
End if
($log.tableFormPict[$tableName][$formName][$pageNumber]).push($objectName)
End if
End case
End if
End for
End for
: ($title=$labels["Check Orphan Methods"]) //リンクのないメソッドを検査
ARRAY TEXT($warnings;0)
$warning:=DOM Find XML element($step;"step/warning";$warnings)
: ($title=$labels["Check Picture Library"]) //ピクチャーライブラリを検査
ARRAY TEXT($warnings;0)
$warning:=DOM Find XML element($step;"step/warning";$warnings)
For ($ii;1;Size of array($warnings))
$warning:=$warnings{$ii}
$value:=""
ARRAY LONGINT($pos;0)
ARRAY LONGINT($len;0)
DOM GET XML ELEMENT VALUE($warning;$value)
If (Match regex($regex["deprecated picture"];$value;1;$pos;$len))
$id:=Substring($value;$pos{1};$len{1})
$name:=Substring($value;$pos{2};$len{2})
$log.libraryPict.push(New object("id";$id;"name";$name))
End if
End for
: ($title=$labels["Check Orphan Forms"]) //リンクのないフォームを検査
ARRAY TEXT($warnings;0)
$warning:=DOM Find XML element($step;"step/warning";$warnings)
Else
End case
End for
DOM CLOSE XML($dom)
End if
End if
$lines:=New collection
C_TEXT($formName;$pageNumber;$objectName)
For each ($formName;$log.projectFormPict)
For each ($pageNumber;$log.projectFormPict[$formName])
For each ($objectName;$log.projectFormPict[$formName][$pageNumber])
$lines.push(New collection($formName;$pageNumber;$objectName).join("\t"))
End for each
End for each
End for each
//$lines:=New collection
//C_TEXT($tableName;$formName;$pageNumber;$objectName)
//For each ($tableName;$log.tableFormPict)
//For each ($formName;$log.tableFormPict[$tableName])
//For each ($pageNumber;$log.tableFormPict[$tableName][$formName])
//For each ($objectName;$log.tableFormPict[$tableName][$formName][$pageNumber])
//$lines.push(New collection($tableName;$formName;$pageNumber;$objectName).join("\t"))
//End for each
//End for each
//End for each
//End for each
//$lines:=New collection
//C_OBJECT($libraryPict)
//For each ($libraryPict;$log.libraryPict)
//$lines.push(New collection($libraryPict.id;$libraryPict.name).join("\t"))
//End for each
SET TEXT TO PASTEBOARD($lines.join("\r";ck ignore null or empty))