当PlantUML控制台工具在图中遇到语法错误时,它会生成一个具有错误跟踪的映像,如下所示:
是否有一种方法可以禁用生成错误映像并可能将跟踪输出到stderr中?
我使用以下PlantUML CLI从几个源文件生成图像:
$ plantuml diag1.puml diag2.puml diag3.puml
这些图表中有些可能有错误的语法,我需要跳过错误的语法。
我可以解析stderr并从中得到错误的图表名称,但这是最后的方法。我认为,对于提到的行为,应该有一个本地的选择。
发布于 2021-06-17 17:33:27
更新07.07.2021
由于Plantuml版本的1.2021.8,有一个新的选项-noerror
,它正是这样做的:跳过错误的图表并将错误的信息写入stderr。
$ 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中获得结果。
你应该像这样经营计划:
$ plantuml -pipe -pipeNoStderr -pipedelimitor ___sep___
在此:
-pipe
意味着在管道模式下启动计划。它将接受stdin中的图表代码,立即处理它并以二进制格式返回标准输出结果;-pipeNoStderr
告诉plantuml不要渲染错误的图像。相反,它将以文本格式返回错误跟踪;-pipedelimitor
会告诉plantuml在图之间添加分隔符。这样你就可以确定一个图像结束和另一个图像开始的地方;___sep___
是我为分隔符选择的字符串,它可能是您喜欢的任何东西,但是足够独特。管道工作流迫使我完全重写生成图表的工具。Python中的具体示例超出了这个问题的范围,但一般步骤如下:
@startuml
开始,以@enduml
结束(否则这种错误的源可能损坏相邻的关系图)。string
变量中,用几行换行符分隔。___sep___
)ERROR
开头的元素,并以二进制格式保存不以二进制格式保存的元素。这篇文章帮了大忙。它在JavaScript上有一个示例项目,它以异步方式解决了这个问题(与我不同)。
https://stackoverflow.com/questions/68002244
复制相似问题