将C++头文件转换为PlantUML

hpp2plantuml的Python项目详细描述


动机

本工具的目的是将C++头文件转换成UML表示 在PlantUML语法中,可用于使用PlantUML生成图。在

PlantUML是一个使用 表达性语言。在

此包从C++头文件生成TutUML文本输入。它 雄心有限,但它应该为简单类产生合理的转换 层次结构。它旨在支持:

  • 具有属性(privatemethodprotected)的方法的类成员 基本限定符(static,abstract)
  • 继承关系
  • 聚合关系(非常基本的支持)。在
  • 依赖关系

包依赖于CppHeaderParser包解析C++头 文件夹。在

用法

hpp2plantuml包可以从命令行使用,也可以用作中的模块 其他应用。在

命令行

命令行用法是(hpp2plantuml --help):

usage: hpp2plantuml [-h] -i HEADER-FILE [-o FILE] [-d] [-t JINJA-FILE]
                    [--version]

hpp2plantuml tool.

optional arguments:
  -h, --help            show this help message and exit
  -i HEADER-FILE, --input-file HEADER-FILE
                        input file (must be quoted when using wildcards)
  -o FILE, --output-file FILE
                        output file
  -d, --enable-dependency
                        Extract dependency relationships from method arguments
  -t JINJA-FILE, --template-file JINJA-FILE
                        path to jinja2 template file
  --version             show program's version number and exit

使用-i选项添加输入文件。输入可以是完整的文件路径或 包括通配符。注意,使用通配符时需要双引号。 使用-o选项选择输出文件。输出是一个文本文件 遵循PlantUML语法。在

例如,下面的命令将为PlantUML生成一个输入文件 (output.puml)来自多个头文件。在

^{pr2}$

要定制输出PlantUML文件,可以使用模板(使用-t 参数):

hpp2plantuml -i File_1.hpp -i "include/Helper_*.hpp" -o output.puml -t template.puml

这将使用template.puml文件作为模板。模板跟随jinja 语法。例如,要在PlantUML输出中添加前导码,模板 文件可能包含:

{% extends 'default.puml' %}

{% block preamble %}
title "This is a title"
skinparam backgroundColor #EEEBDC
skinparam handwritten true
{% endblock %}

这将从默认模板继承并仅覆盖前导码。在

模块

要用作模块,只需import hpp2plantumlCreatePlantUMLFile 然后可以使用函数从一组输入文件创建一个PlantUML文件。 或者,Diagram对象可以直接用于构建内部 对象(来自文件或字符串)。Diagram.render()方法可用于 生成字符串输出,而不是写入文本文件。查看API 文档以获取更多详细信息。在

安装

使用pip

该软件包在PyPi上可用,可以使用pip安装:

pip install hpp2plantuml
{id10}$

来源

代码使用setuptools,因此可以使用以下方法构建:

python setup.py install

要生成文档,请运行:

python setup.py sphinx

要运行测试,请运行:

python setup.py test

完整的文档可通过以下方式获得:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将HashMap<String,Object>从一个活动传递到另一个活动   java如何手动加密socket连接的流量?   java正则表达式生成一个不正确的结果   Java方法引用具有泛型参数的方法   java app setBackground()错误:不兼容的类型:int无法转换为Drawable   java是启动Spring引导而不是SpringApplication的其他方法。跑   无法打开java类路径资源[org/quartz/impl/jdbcjobstore/tables_h2.sql],因为它不存在   spring使用Java,如何确定来自tomcat Web服务器的出站服务调用?   java获取多个同名的XML元素JAXB   java使用Ant从同一代码库构建Swing和Android应用程序   JComponent的java重绘方法不起作用   java目标不可访问,标识符“beanName”解析为null   smtp是否有支持esmtp管道的java api?   java如何在Spring中自动连接业务对象   java在Hibernate中没有其他保存实体的方法吗?   针对两个客户机的SpringJavaWeb应用程序项目开发   使用split的java标记化输入