博客

使用 Sensei 的文档链接

November 9, 2020
Alan Richardson
双手在笔记本电脑键盘上打字,屏幕上显示绿色代码,文字内容为:通过 Sensei 掌握安全编码。

学习新库或在团队内分享最佳实践时,编写文档和创建示例往往是一大难题。

我们经常会创建一些小型示例项目,但在编写实际代码时却很少打开它们参考。

我常想,如果能直接链接到我们的示例或在线示例,并在需要时跳转到 URL 查看详细说明,那该多好。

在 Java 中,我们可以使用 JavaDoc 注释中的 see 标签:

/**
 * @see <a href="https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations">Junit 5 注解文档</a>
 */

第三方库中的这类 JavaDoc 非常有用,因为我们可以利用 IntelliJ 的“快速文档”功能来获取更详细的示例。

但众所周知,注释的更新往往滞后于代码,且网页文档的维护通常与库本身的维护脱节,有时甚至由完全不同的团队负责。

Sensei 如何提供帮助

Sensei 能够匹配库中的注解和方法,并提供指向 Wiki 或第三方教程网站的详细文档链接。

以 JUnit 的 @Test 注解为例。

其 JavaDoc 非常详尽,通过“快速文档”视图即可了解如何使用该注解。

但官网上的正式文档通常更易于阅读,且包含更多示例。

当团队开始学习一个新库时,拥有一套推荐的教程会非常有帮助。

Sensei 提供了一个 goto 操作,我们可以利用它打开 URL,从而链接到团队认为有用的外部网站和文档示例。

实现跳转 URL

要实现这一点,我会创建一个搜索规则,用于匹配 JUnit 的 @Test 注解。

search:
   annotation:
    owner:
      method: {}
    type: "org.junit.jupiter.api.Test"


然后,我会为每一个我觉得有用的 URL 添加 goto 操作。

例如:

以下示例将创建一个单一操作 JUnit 注解(学习) ,它会同时在浏览器中打开两个 URL。

availableFixes:
- name: "了解 JUnit 注解"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"=
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"

当我在 IntelliJ 中使用 Alt+Enter 激活它时,我会看到一个上下文菜单,从中可以选择跳转到文档。


Code editor context menu showing options related to Parameterized Annotations in Java code.

多个操作

我可以选择设置多个操作,这样每个 URL 或教程在 Alt+Enter 快速修复弹出菜单中都有各自的选项。

例如,对于 @Parameterized 注解,我可能希望链接到官方文档和一组在线示例代码。

我只需创建一个搜索该注解的配方:

search:
  annotation:
    owner:
      method: {}
    type: "org.junit.jupiter.params.ParameterizedTest"


并链接到我认定有用的站点:

availableFixes:
- name: "JUnit 注解(学习)"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"
- name: "什么是 JUnit 测试?(学习)"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"


两个链接随后都会出现在弹出对话框中。

谁会受益?

在学习和使用库时,我发现这很有用,特别是在领导团队并帮助他们采用新库时。

这对于创建库的团队也很有帮助,他们可以创建一套标准的文档配方,引导用户了解如何采用该库或使用其中的新功能。

如果代码维护和文档维护由不同的团队负责,这一点尤其有用。

你可以通过 IntelliJ 中的 `preferences > plugins` 安装 Sensei(只需搜索“sensei secure code”)。

本篇博文的所有代码均可在 Github 的 junitexamples 模块中找到:https://github.com/SecureCodeWarrior/sensei-blog-examples

 


标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。