Skip to content

Commit 68995e8

Browse files
committed
Redesign autofix graphs
1 parent 9a30d0b commit 68995e8

File tree

1 file changed

+57
-18
lines changed

1 file changed

+57
-18
lines changed

pyarmor/learn/zh/commands.rst

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ Pyarmor 目前实现三种自动修改模式
188188
- :ref:`模式 3: 使用最麻烦,但是能够重命名绝大部分属性,一般必须要人工修改规则 <g-project-rft-autofix-3>`
189189

190190
.. graphviz::
191-
:caption: 自动修正模式一重构复杂脚本
191+
:caption: 重构复杂脚本自动修正模式一
192192
:align: center
193193
:name: g-project-rft-autofix-1
194194

@@ -208,7 +208,7 @@ Pyarmor 目前实现三种自动修改模式
208208
label="工程的重构选项\n存放在 .pyarmor/config 中"]
209209
autofix [shape=component
210210
style="filled"
211-
fillcolor="wheat"
211+
fillcolor="tan"
212212
label="生成重构规则\n所有未知属性都不进行重命名\n保存规则到 .pyarmor/project/rft_autofix.rules"]
213213

214214
p1 [label="应用重构规则"]
@@ -224,10 +224,22 @@ Pyarmor 目前实现三种自动修改模式
224224
p1 -> rules [arrowtail=curve dir=back]
225225

226226
rft -> loop -> autofix
227+
228+
rebuild [style="filled,rounded"
229+
fillcolor="wheat"
230+
label="再次构建工程\npyarmor build --rft"]
231+
test [label="运行重构后的脚本\npython dist/foo.py"]
232+
fb [label="是否出现 AttributeError?"]
233+
f2 [label="把该名称人工增加到排除列表\npyarmor 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]
227239
}
228240

229241
.. graphviz::
230-
:caption: 自动修正模式二重构复杂脚本
242+
:caption: 重构复杂脚本自动修正模式二
231243
:align: center
232244
:name: g-project-rft-autofix-2
233245

@@ -248,32 +260,46 @@ Pyarmor 目前实现三种自动修改模式
248260
p1 [label="应用重构规则"]
249261
rft [label="尝试重构脚本\n记录不知道如何处理的属性\n生成未知属性表"]
250262

251-
u1 [label="读取所有内置类型\n例如 int, list 等的属性"]
252-
u2 [label="读取重构选项 external_types\n得到所有外部导入类型的属性"]
263+
u1 [label="读取所有内置类型\n例如 int, list 等的属性\n读取重构选项 external_types\n得到所有外部导入类型的属性"]
253264
un [label="合并内置和外部类型的属性\n生成外部属性表"]
254265
u1 -> un
255-
u2 -> un
256266

257267
autofix [shape=component
258268
style="filled"
259-
fillcolor="wheat"
269+
fillcolor="tan"
260270
label="生成重构规则\n未知属性和外部属性的交集都不进行重命名\n其他未知属性都进行重命名\n保存规则到 .pyarmor/project/rft_autofix.rules"]
261271
un -> autofix
262272

263273
build -> join1
264274
join1 -> conf [dir=none]
265275
join1 -> items [label="得到工程中的脚本列表"]
266276
items -> p1
267-
rank=same { p1 -> rft }
277+
rank=same { p1 -> rft [dir=normal] }
268278
p1 -> rules [arrowtail=curve dir=back]
269-
rules -> u2 [arrowhead=curve]
270279
rft -> autofix
271280

272-
rank=same { rft -> un [style=invis] }
281+
rebuild [style="filled,rounded"
282+
fillcolor="wheat"
283+
label="再次构建工程\npyarmor build --rft"]
284+
test [label="运行重构后的脚本\npython dist/foo.py"]
285+
fb [label="是否出现 AttributeError?"]
286+
f1 [label="如果该名称是混淆后的名称\n在 .pyarmor/project/rft_autofix.rules 搜索该名称\n找到原来的名称"]
287+
f2 [label="把原来的名称人工增加到排除列表\npyarmor 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那么将该属性增加到配置文件中\npyarmor env -p push external_attrs XXXX"]
291+
f6 [label="重新开始修正循环\npyarmor 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
273299
}
274300

275301
.. graphviz::
276-
:caption: 自动修正模式三重构复杂脚本
302+
:caption: 重构复杂脚本自动修正模式三
277303
:align: center
278304
:name: g-project-rft-autofix-3
279305

@@ -299,12 +325,12 @@ Pyarmor 目前实现三种自动修改模式
299325

300326
autofix [shape=component
301327
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"]
308334

309335
build -> join1
310336
join1 -> conf [dir=none]
@@ -313,8 +339,21 @@ Pyarmor 目前实现三种自动修改模式
313339
rank=same { p1 -> rft }
314340
p1 -> rules [arrowtail=curve dir=back]
315341
rft -> n1 -> autofix
316-
rank=same { rft -> n2 }
342+
rft -> n2 [tailport=e]
317343
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="再次构建工程\npyarmor build --rft"]
352+
test [label="运行重构后的脚本\npython dist/foo.py"]
353+
fb [label="是否出现 AttributeError?"]
354+
355+
autofix -> rebuild -> test -> fb
356+
fb -> m1 [label="出现错误"]
318357
}
319358

320359
.. _project-build-mini:

0 commit comments

Comments
 (0)