面向所有人的设计文档工具
artifact-p的Python项目详细描述
工件py:工件的重新映射 < Buff行情>
注意:这是阿尔法。它可以工作,但可能有很多错误和丢失 功能。
这是在python中重新实现工件。它将成为 将其放入构建系统所必需的工件。没有功能丰富的cli,没有web ui。 只是解析和导出json/markdown/etc。
同时,这并不是一个严格的重写。这是一个重新构想和意志 可能会指导Artifact3.0的开发。
使用pip install artifact py安装。它应该在Python2.7+和3+中工作
与工件的区别
主要区别是:
- 用python而不是rust编写,以便更容易地包含在遗留构建中 系统。
- 使用新的标记属性格式 特别是此项目不依赖于任何特定的 降价实施。
- 删除
.art/settings.toml
,替换为 降价文件。 - CMDLine工具的大规模简化。将来可能会改进cli。
- 一些小的调整来简化工件的指定和链接方式。
- 标记可以导出到的适当位置 更改。
- 工件现在由头中的锚指定。按惯例
看起来像是我的规范(spc mine){spc mine}。这个
{spc mine}
是用于创建 参考文献。(spc矿山)是按照惯例的,这样人类就可以看到 头指定了一个工件。- 注意:
anchor_txt
还支持html锚<;a id="spc mine"/>;
, 这在github中是必需的
- 注意:
- 工件属性由一个封闭的代码块指定。请参见spc设计 例如。
- 删除
[[req foo]
引用。相反,您只需对代码使用[req foo]
或[@req foo]
。 当您运行art export--format md-i
时,它们将去掉看起来像art foo.bar
并在文档底部插入正确的链接。 (即[@req foo]:url/to/code.py
- 通过
[[req foo.subsystem]]
。只需在属性中用partof指定它们, 并用[@req foo.subsystem]
链接到设计文档中的代码 - 对Graphviz没有特殊支持。
- 没有将工件的关系导出到标记文件本身。 在作者看来,这通常只是增加了混乱,而不是 特别有用。
总的来说,这种设计与标准的降价更为紧密地结合在一起 规范。它让人感觉更干净,并允许从 "任意"设计文档到一个具有丰富的源代码链接和 其他设计。
仍需添加的功能:
- 目前只支持一个标记文件。我也想重新想象一下 在添加更多文件之前,可以集成多个文件/etc。
- linting—当前不存在linter
- 工件json中的
文本
字段。它不需要任何实现细节 以后可能会添加。 - 稳定的json输出格式。它仍在不断变化。
贡献
有关出资条件,请参见许可证。
代码是用python编写的。使用以下方法进行测试:
# create the python virtualenv's locally
make init
# run tests against python3
make test3
# run all checks required to ship
make check
< H1> DESign(spc设计)subparts:-artifact-settings-code-lint-tst-unittests
所有属性和设置都是用anchor_txt代码块指定的。
文档中的任何位置都会这样指定设置:
```yaml @
artifact:
root_dir: ./
code_paths:
- src/
```
像这样的工件属性:
```yaml @
partof:
- SPC-other
subparts:
- function
- tst-unit
```
设置(spc design.settings)
工件从标记设计文档注入。所有 使用锚文本格式提供设置/属性。设置 通过将以下内容添加到 在文档中:
根目录:创建路径时的根目录。这将影响 其他路径设置用作参考。
代码路径
:指向要查找代码的文件或目录的路径。 有关详细信息,请参见代码链接。排除代码路径
:搜索工件时要排除的路径。
工件(spc design.artifact)
工件是可以链接到 文档和源代码。它具有以下属性:
名称
:定义如何链接它。名称定义在 锚头({req foo}
)- 有三种类型的工件:req(需求)、spc(规范)。 TST(测试)
部分的
:此项目所属的其他项目。子部分
:可以在代码中链接的工件片段。完成
:强制将工件视为指定和测试的工件
代码链接(spc design.code)
工件在代码中的链接方式是:
- 定义工件名称或子部分
- 在设置中指定代码路径
- 在表单代码中的任意位置放置标记:
spc foo
spc foo.bar
工件将在代码路径和
如果工件在代码中链接,则会将其标记为指定的/已测试的。
lints(spc design.lint)
< Buff行情>注意:这尚未实现
代码:[@spc design.lint]
lint命令将在设计文档中找到错误,以及错误的原因 反映在代码中:
不存在的链接的一部分。
- a
req
或spc
是partof
atst
- 额外的代码链接
- 具有被指定为"完成"的工件,具有impl
- 文本中的工件或类似子部分的链接(即
[req不存在]
) 不存在。 - 未更新设计文档(运行
artifact export--format md-我
要修复。 - 在代码中找到的链接,其前缀不是
doc_url
。 (即工件期望代码中的链接看起来像myurl.com/design\req foo
)
多项目设计(spc design.multi)
< Buff行情>尚未实施,仅在设计阶段
代码:[@spc design.multi]
Artifact以前的设计没有支持多种不同的设计, 尤其是在规模上。此重写/重新维护将构建以下原则:
- "module/package/submodule/etc"的设计包含在单个文件中。
此链接指向该设计的"少量"源代码,并指定
在该文件的
工件
属性中。 - 可以通过设置中的"引用"对象链接到其他设计文件。
它们的指定类似于
other_design:path/to/other/file
- 然后将自动生成内联链接,以便您可以使用
[其他设计spc foo]
链接到其他文档。- 指定和测试的比率不受这些链接的影响。
因为这些设计只是连接在一起(不依赖于 完成率),每个设计都可以独立计算, 元数据序列化,以便其他项目可以链接到它。
单元测试(spc design.tst unit tests)
单元测试提供了几乎完整的覆盖范围。几乎所有的功能 使用数据驱动的方法进行测试。有一个降价文件 同名的yaml文件。yml文件的预期值在 正在分析降价文件。
还测试了:
- 导出项目将生成预期的降价文件
许可证
源代码是根据
- apache许可证,2.0版,(license-apache或 http://www.apache.org/licenses/license-2.0)
- 麻省理工学院许可证(license-mit或 http://opensource.org/licenses/mit)
由您选择。
除非您明确说明,否则任何有意提交的出资 对于您在apache-2.0许可证中定义的工作,应 按上述方式获得双重许可,无需附加任何条款或条件。
元数据
artifact:root_dir:'./'code_paths:-artifact_py/-tests/exclude_code_paths:-tests/artifacts_only/-tests/projects/-tests/test_code.pycode_url:"https://github.com/vitiral/artifact_py/blob/master/{file}#L{line}"