12 个版本
使用旧的 Rust 2015
0.3.7 | 2016年11月30日 |
---|---|
0.3.6 | 2016年11月30日 |
0.2.6 | 2016年11月27日 |
0.2.1 | 2016年8月12日 |
0.1.5 | 2016年8月10日 |
#15 in #cmd-line
710KB
6.5K SLoC
包含 (ZIP 文件,1KB) zipthis.zip
rst:为开发者量身定制的需求跟踪工具
rst 是一个为开发者量身定制的 需求跟踪 工具。它是 "需求、规范和测试" 的缩写。
rst 发音类似于 "wrist"
教程
安装后,在命令行上运行 rst -h
查看帮助信息。运行 rst tutorial
将启动交互式教程。
目的
需求和管理文档可能是编写高质量软件最重要的组件。没有它们,开发并维护你打算创建的产品可能会非常困难。然而,没有开源工具(或者任何专有工具)可以使这个过程变得简单、容易和有趣。rst 通过为你提供一个
- 简单的基于文本的格式来编写你的需求(TOML),这使得使用标准版本控制工具(git、hg 等)和代码审查
- 工作流程跟踪你的需求变得容易,并提供了 Web-ui 以便团队协作和展示。
- 用户界面既熟悉又实用——帮助开发者跟踪从需求到设计、实现和测试的进度
很难保持文档更新,尤其是在它不能帮助核心开发者跟踪其进度时。rst 的目标是填补这个差距,为你提供一个简单的工具,你可以用它来跟踪项目完整性和测试覆盖率。
如果你喜欢或使用 rst,请在 github 上给它打星⭐,并向朋友和同事提及它。我相信需求跟踪需要像版本控制和单元测试那样成为第二本能。我希望通过构建更好的软件,我们可以使世界变得更美好。
如果你发现错误或有任何建议,请在此处打开一个问题: 错误跟踪器
测试版通知
rst 目前仍处于测试版,功能尚未完全完善。cmdline和文本格式的API预计将稳定,但作者保留在改进可用性的情况下更改任何需要更改内容的权利。
未来的改进包括
- 额外的命令行工具
- 导出:将工件导出为json、csv、html和其他格式
- 测试跟踪:具有数据库后端的REST API用于跟踪测试执行,以及用于查看测试执行的cmdline实用程序和webui。(目前rst仅支持跟踪实现,而非执行)
- Web UI目前为只读模式。不久将能够进行编辑。
安装
rst是为linux、mac和windows编译的。您可以在GitHub发布页面找到发行版。
对于Linux和Mac,只需下载并解压缩tar包,使用tar -zxvf RELEASE.tar.gz
。然后将它放在您的PATH中。
对于Windows,只需下载zip文件,解压缩它,并通过git-bash或其他Linux模拟器运行./rst.exe
。对于Windows 10,*windows-gnu.zip似乎效果最佳。
使用cargo安装
- 首先,使用rustup安装rust和cargo
- 如果您需要web-ui,也请通过下载或通过您的包管理器安装node.js
- 如果您需要web-ui,请运行
npm install -g elm webpack
- 克隆源代码并cd:
git clone https://github.com/vitiral/rst.git; cd rst
- 编译代码:
cargo build --release --features web
注意:如果您只想有命令行界面,可以省略"--features web"。
注意:在Windows上,您需要手动编译javascript代码。只需
cd web-ui; npm run build
即可编译。
超简单教程
要获取完整的教程,请安装rst并运行
rst tutorial
如果我用Python编写一个“hello world”程序并想跟踪需求,这个过程是这样的。
- 在空文件夹中
mkdir
和cd
rst init
- 使用
vim reqs/design.toml
编写我的需求和设计
# reqs/design.toml
[REQ-purpose]
text = '''
we need to be able to say hello to both the world and aliens
'''
[REQ-world]
partof = "REQ-purpose"
text = '''
there **shall** be way to say hello to the world. All of it.
'''
[SPC-world]
text = '''
The hello-world function shall say hello by printing it on
the cmdline
'''
[TST-world]
text = '''
To make this testable, there will be an intermediary
function that can test it before printing.
'''
[REQ-aliens]
partof = "REQ-purpose"
text = '''
there **shall also** be a way to say hello to aliens, but
that will be harder
'''
[SPC-aliens]
text = '''
I think we should use SETI or something
'''
好了,我们现在已经编写了需求和设计,让我们开始编码吧!
mkdir src
- 使用
vim src/hello.py
编写我的程序
#!/usr/bin/python2
def _hello_world():
''' an intermediary function to allow for testing '''
return "hello world!"
def test_greeting():
''' test that the greeting works as expected
partof: #TST-world '''
assert _hello_world() == "hello world!"
def hello_world():
''' say hello to the world
partof: #SPC-world '''
print _hello_world()
if __name__ == '__main__':
test_greeting()
hello_world()
python2 src/hello.py
:它说hello world!这是好的设计:)- 使用
vim ~/.rst/settings.toml
并将"{repo}/src"
添加到code_paths
- 运行
rst ls
以显示这个可爱的状态报告
- 运行
rst check
以验证没有错误 - 运行
rst server
以在服务器上托管我的需求并通过我的浏览器查看
如您所见,我们已经完成了向世界打招呼的规格和测试,但还没有向外星人。如果外星人到来,知道你是否可以说“你好”会很好——rst可以帮助你做到这一点!
未来开发
以下是尚未开始的项目快照(0.1.0)
$ rst ls -c '<' -T
- REQ-1-interop:rst 将为其他工具提供与其数据交互的简单方法
- REQ-1-scale:rst 将能够处理从小型项目到一个庞大的多项目多文件夹项目的缩放。
- REQ-2-interop
- REQ-2-interop-json:rst 将为其他工具提供json导出工具。
- REQ-2-performance:rst 将旨在在内存和CPU使用方面尽可能高效。
- REQ-2-performance-store:rst 将使用序列化文件来加速数据处理。一旦文件被处理,它将可以从文件中加载而不是重新解析。
- REQ-2-ui-markdown:当向用户显示时,所有文本字段都将以简单的markdown格式处理。
如果你想查看大部分已完成但尚未测试的项目,克隆此仓库并运行
rst ls -c '>50' -t '<99' -T
许可
rst文件格式(toml文件的格式、工件名称等)受CC0(创意共享公共领域)许可证的许可。任何人都可以出于任何原因使用此格式,甚至无需归因(虽然归因是受欢迎的!)
rst库和web-ui受LGPLv3+许可,除非其头部有其他声明。有关更多信息,请参阅LICENSE.txt。
依赖
~8–18MB
~257K SLoC