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

LGPL-3.0+

710KB
6.5K SLoC

Rust 5.5K SLoC // 0.1% comments Elm 689 SLoC // 0.1% comments Shell 147 SLoC // 0.2% comments JavaScript 55 SLoC // 0.1% comments

包含 (ZIP 文件,1KB) zipthis.zip

Build Status

rst:为开发者量身定制的需求跟踪工具

rst 是一个为开发者量身定制的 需求跟踪 工具。它是 "需求、规范和测试" 的缩写。

rst 发音类似于 "wrist"

教程

安装后,在命令行上运行 rst -h 查看帮助信息。运行 rst tutorial 将启动交互式教程。

目的

需求和管理文档可能是编写高质量软件最重要的组件。没有它们,开发并维护你打算创建的产品可能会非常困难。然而,没有开源工具(或者任何专有工具)可以使这个过程变得简单、容易和有趣。rst 通过为你提供一个

  1. 简单的基于文本的格式来编写你的需求(TOML),这使得使用标准版本控制工具(git、hg 等)和代码审查
  2. 工作流程跟踪你的需求变得容易,并提供了 Web-ui 以便团队协作和展示。
  3. 用户界面既熟悉又实用——帮助开发者跟踪从需求到设计、实现和测试的进度

很难保持文档更新,尤其是在它不能帮助核心开发者跟踪其进度时。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”程序并想跟踪需求,这个过程是这样的。

  • 在空文件夹中mkdircd
  • 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 ls example

  • 运行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