首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止PlantUML创建错误映像?

如何防止PlantUML创建错误映像?
EN

Stack Overflow用户
提问于 2021-06-16 11:58:26
回答 1查看 516关注 0票数 1

当PlantUML控制台工具在图中遇到语法错误时,它会生成一个具有错误跟踪的映像,如下所示:

是否有一种方法可以禁用生成错误映像并可能将跟踪输出到stderr中?

我使用以下PlantUML CLI从几个源文件生成图像:

代码语言:javascript
运行
复制
$ plantuml diag1.puml diag2.puml diag3.puml

这些图表中有些可能有错误的语法,我需要跳过错误的语法。

我可以解析stderr并从中得到错误的图表名称,但这是最后的方法。我认为,对于提到的行为,应该有一个本地的选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-17 17:33:27

更新07.07.2021

由于Plantuml版本的1.2021.8,有一个新的选项-noerror,它正是这样做的:跳过错误的图表并将错误的信息写入stderr。

代码语言:javascript
运行
复制
$ plantuml -noerror diag1.puml diag2.puml diag3.puml
Error line 5 in file: diag2.puml
Some diagram description contains errors

只生成了两幅图像。

专业提示: Plantuml有一个很棒的论坛,创建者会迅速响应所有问题,并在几天内将更改推入新版本。

旧答案

似乎在正常模式下是不可能的,但在-pipe模式下是可能的。所寻求的参数是-pipeNoStderr

如果您在控制台中以管道模式运行PlantUML,您可以键入图表代码,在每个图表之后,它将立即输出图像的二进制代码。您还可以在脚本中使用它输入stdin中的代码,并在stdout中获得结果。

你应该像这样经营计划:

代码语言:javascript
运行
复制
$ plantuml -pipe -pipeNoStderr -pipedelimitor ___sep___

在此:

  • -pipe意味着在管道模式下启动计划。它将接受stdin中的图表代码,立即处理它并以二进制格式返回标准输出结果;
  • -pipeNoStderr告诉plantuml不要渲染错误的图像。相反,它将以文本格式返回错误跟踪;
  • 如果您将多个图表源发送到管道中,-pipedelimitor会告诉plantuml在图之间添加分隔符。这样你就可以确定一个图像结束和另一个图像开始的地方;
  • ___sep___是我为分隔符选择的字符串,它可能是您喜欢的任何东西,但是足够独特。

管道工作流迫使我完全重写生成图表的工具。Python中的具体示例超出了这个问题的范围,但一般步骤如下:

  1. 收集要呈现的所有图表源。
  2. 检查每个源从@startuml开始,以@enduml结束(否则这种错误的源可能损坏相邻的关系图)。
  3. 将所有源放入一个string变量中,用几行换行符分隔。
  4. 在管道模式下运行Plantuml子进程。
  5. 将组合的源字符串提供给它。
  6. 从stdout获得响应并将其拆分为分隔符(在我的例子中是___sep___)
  7. 循环遍历结果列表,并提醒用户注意以ERROR开头的元素,并以二进制格式保存不以二进制格式保存的元素。

这篇文章帮了大忙。它在JavaScript上有一个示例项目,它以异步方式解决了这个问题(与我不同)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68002244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档