包含状态机的文档C代码

问题描述 投票:0回答:1

我已经编写了包含状态机[1]的C代码。现在,我正在寻找一种生成html文件的方法,该文件记录该状态机,例如[2]。

我看过氧气[3]。它可以提取文本,调用图等,但是不能生成状态机图。我看过Graphviz [4]。它可以生成状态机图,但不能将文本和图合并到一个html文件中。我找到了Doxygen预处理器[5],声称可以记录状态机,但最近一次更新是从2009年开始的。

没有人知道一个可以从源代码中提取文本和图表,或者在代码中特制的注释并且正在积极开发的系统?

编辑1

我没有像我应该的那样清楚地表达我的问题。我想找出一个工作流程,使我能够记录和验证为基于微控制器的产品制作的C代码。

我希望使不具备编程知识的用户能够理解我将要在C代码中实现的内容,因此,我编写的C代码实际上就是用户想要的东西的可能性更大。] >

到目前为止,我想到了这个工作流程:

1]我和用户坐下来,讨论可能发生的所有故障情况,以及我的程序应如何应对这些情况。这存储在电子表格中。

2)我将步骤1中的电子表格转换为一个或多个状态机。这可以用笔和纸来完成。完成此操作后,我让用户检查状态机是否与电子表格一致。

3)我以机器可理解的形式编写状态机,然后让程序生成状态机的图形表示。我让用户检查此状态机是否与步骤2的版本相同。

4)我采用状态机的机器可理解的形式,并用它来为状态机的每个状态和转换编写单元测试。我让具有编程技能的同事检查单元测试是否与状态机一致。

5)我编写了C代码,并对其进行了调整,以使其通过所有单元测试。

6)根据步骤1中的情况测试成品。

在记下来的同时,我意识到在此过程中有很多手动工作可以自动完成。您知道可以做到这一点的工具吗?

SMC [6]由Fiddling Bits建议,看起来很有希望,但是我不确定它是否可以生成C文件,就像[1]下发布的文件一样。我也不确定是否可以像这样往返:我将状态机写入.sm文件中,让SMC生成C文件。我编辑C文件,让SMC更新.sm文件,编辑.sm文件,然后让SMC重新更新C文件。

[1] C代码

typedef enum
{
    stIDLE=0,
    stDONE
} TRXSTATES;

TRXSTATES theState = stIDLE;

void execute (void)
{
    switch (theState)
    {
        case stIDLE:
        {
            theState = stDONE
            break;
        }
        case stDONE:
        {
            break;
        }
    }
}

[[2]所需的html页面

Some smart text about this state machine
+--------+       +--------+
+ stIDLE + ----> + stDONE +
+--------+       +--------+

[3] http://www.doxygen.nl/index.html

[4] http://graphviz.org/

[5] https://sites.google.com/site/abudden/doxygen-preprocessor

[6] http://smc.sourceforge.net/

我已经编写了包含状态机[1]的C代码。现在,我正在寻找一种生成html文件的方法,该文件记录该状态机,例如[2]。我看过氧气[3]。它可以提取文本,...

c doxygen graphviz state-machine fsm
1个回答
0
投票

[一种可能的方法是使用plantumldoxygen中用文本编码图表。

图表示例:

© www.soinside.com 2019 - 2024. All rights reserved.