@@ -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="再次构建工程\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]
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="再次构建工程\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
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="再次构建工程\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="出现错误"]
318357 }
319358
320359.. _project-build-mini :
0 commit comments