@@ -188,7 +188,7 @@ Pyarmor 目前实现三种自动修改模式
188
188
- :ref: `模式 3: 使用最麻烦,但是能够重命名绝大部分属性,一般必须要人工修改规则 <g-project-rft-autofix-3 >`
189
189
190
190
.. graphviz ::
191
- :caption: 自动修正模式一重构复杂脚本
191
+ :caption: 重构复杂脚本自动修正模式一
192
192
:align: center
193
193
:name: g-project-rft-autofix-1
194
194
@@ -208,7 +208,7 @@ Pyarmor 目前实现三种自动修改模式
208
208
label="工程的重构选项\n 存放在 .pyarmor/config 中"]
209
209
autofix [shape=component
210
210
style="filled"
211
- fillcolor="wheat "
211
+ fillcolor="tan "
212
212
label="生成重构规则\n 所有未知属性都不进行重命名\n 保存规则到 .pyarmor/project/rft_autofix.rules"]
213
213
214
214
p1 [label="应用重构规则"]
@@ -224,10 +224,22 @@ Pyarmor 目前实现三种自动修改模式
224
224
p1 -> rules [arrowtail=curve dir=back]
225
225
226
226
rft -> loop -> autofix
227
+
228
+ rebuild [style="filled,rounded"
229
+ fillcolor="wheat"
230
+ label="再次构建工程\n pyarmor build --rft"]
231
+ test [label="运行重构后的脚本\n python dist/foo.py"]
232
+ fb [label="是否出现 AttributeError?"]
233
+ f2 [label="把该名称人工增加到排除列表\n pyarmor env -p push rft:exclude_names xxxx"]
234
+
235
+ autofix -> rebuild -> test -> fb
236
+
237
+ fb -> f2 [label="提示名称 xxxx 错误"]
238
+ f2 -> rebuild [label="循环修正,直到没有错误" headport=3 tailport=e]
227
239
}
228
240
229
241
.. graphviz ::
230
- :caption: 自动修正模式二重构复杂脚本
242
+ :caption: 重构复杂脚本自动修正模式二
231
243
:align: center
232
244
:name: g-project-rft-autofix-2
233
245
@@ -248,32 +260,46 @@ Pyarmor 目前实现三种自动修改模式
248
260
p1 [label="应用重构规则"]
249
261
rft [label="尝试重构脚本\n 记录不知道如何处理的属性\n 生成未知属性表"]
250
262
251
- u1 [label="读取所有内置类型\n 例如 int, list 等的属性"]
252
- u2 [label="读取重构选项 external_types\n 得到所有外部导入类型的属性"]
263
+ u1 [label="读取所有内置类型\n 例如 int, list 等的属性\n 读取重构选项 external_types\n 得到所有外部导入类型的属性"]
253
264
un [label="合并内置和外部类型的属性\n 生成外部属性表"]
254
265
u1 -> un
255
- u2 -> un
256
266
257
267
autofix [shape=component
258
268
style="filled"
259
- fillcolor="wheat "
269
+ fillcolor="tan "
260
270
label="生成重构规则\n 未知属性和外部属性的交集都不进行重命名\n 其他未知属性都进行重命名\n 保存规则到 .pyarmor/project/rft_autofix.rules"]
261
271
un -> autofix
262
272
263
273
build -> join1
264
274
join1 -> conf [dir=none]
265
275
join1 -> items [label="得到工程中的脚本列表"]
266
276
items -> p1
267
- rank=same { p1 -> rft }
277
+ rank=same { p1 -> rft [dir=normal] }
268
278
p1 -> rules [arrowtail=curve dir=back]
269
- rules -> u2 [arrowhead=curve]
270
279
rft -> autofix
271
280
272
- rank=same { rft -> un [style=invis] }
281
+ rebuild [style="filled,rounded"
282
+ fillcolor="wheat"
283
+ label="再次构建工程\n pyarmor build --rft"]
284
+ test [label="运行重构后的脚本\n python dist/foo.py"]
285
+ fb [label="是否出现 AttributeError?"]
286
+ f1 [label="如果该名称是混淆后的名称\n 在 .pyarmor/project/rft_autofix.rules 搜索该名称\n 找到原来的名称"]
287
+ f2 [label="把原来的名称人工增加到排除列表\n pyarmor env -p push rft:exclude_names xxxx"]
288
+ f3 [label="高级修正方法"]
289
+ f4 [label="查看日志文件(Emacs org-mode)\n .pyarmor/rft_autofix.2.org"]
290
+ f5 [label="浏览日志中已经重命名的属性名称\n 如果该属性属于外部类型\n 那么将该属性增加到配置文件中\n pyarmor env -p push external_attrs XXXX"]
291
+ f6 [label="重新开始修正循环\n pyarmor build --autofix 2"
292
+ style="filled,rounded"
293
+ fillcolor="wheat"]
294
+ autofix -> rebuild -> test -> fb
295
+ fb -> f1 [label="提示名称 xxxx 错误"]
296
+ f1 -> f2 [label="简单修正方法"]
297
+ f2 -> rebuild [label="循环修正,直到没有错误" tailport=e]
298
+ f1 -> f3 -> f4 -> f5 -> f6
273
299
}
274
300
275
301
.. graphviz ::
276
- :caption: 自动修正模式三重构复杂脚本
302
+ :caption: 重构复杂脚本自动修正模式三
277
303
:align: center
278
304
:name: g-project-rft-autofix-3
279
305
@@ -299,12 +325,12 @@ Pyarmor 目前实现三种自动修改模式
299
325
300
326
autofix [shape=component
301
327
style="filled"
302
- fillcolor="wheat "
303
- label="生成重构规则\n 所有内部属性名称都会进行重命名 \n 保存规则到 .pyarmor/project/rft_autofix.rules"]
304
- autolog [shape=component
305
- style="filled"
306
- fillcolor="wheat "
307
- label="生成未知属性所在文件和行号 \n 保存到 .pyarmor/project/rft_autofix.log \n 用户需要根据日志人工生成重构规则 "]
328
+ fillcolor="tan "
329
+ label="生成重构规则,保存到 \n .pyarmor/project/rft_autofix.rules\n 所有内部属性名称都会进行重命名 "]
330
+ autolog [shape=box
331
+ style="filled,rounded "
332
+ fillcolor="tan "
333
+ label="生成修正记录表 \n .pyarmor/project/rft_autofix.3.org "]
308
334
309
335
build -> join1
310
336
join1 -> conf [dir=none]
@@ -313,8 +339,21 @@ Pyarmor 目前实现三种自动修改模式
313
339
rank=same { p1 -> rft }
314
340
p1 -> rules [arrowtail=curve dir=back]
315
341
rft -> n1 -> autofix
316
- rank=same { rft -> n2 }
342
+ rft -> n2 [tailport=e]
317
343
n2 -> autolog
344
+
345
+ m1 [label="浏览修正记录表\n 根据修正记录表的内容\n 人工生成重构规则"]
346
+ autolog -> m1
347
+ m1 -> autofix [label="增加重构规则"]
348
+
349
+ rebuild [style="filled,rounded"
350
+ fillcolor="wheat"
351
+ label="再次构建工程\n pyarmor build --rft"]
352
+ test [label="运行重构后的脚本\n python dist/foo.py"]
353
+ fb [label="是否出现 AttributeError?"]
354
+
355
+ autofix -> rebuild -> test -> fb
356
+ fb -> m1 [label="出现错误"]
318
357
}
319
358
320
359
.. _project-build-mini :
0 commit comments