如何创建一个 git 钩子来强制我编写 javadoc 注释?

How can I create a git hook that forces me to write javadoc comments?

有没有办法让我以某种方式解析我的 java 代码文件并查找 java 文档注释?我想确保我已经为 class 和 class 的每个方法(或所有内容)编写了 java 文档。这可能吗?

一个严肃的non-answer:做做这个。有主见的解释将随之而来;但我的所有意见都源于围绕这些主题的大量经验。

重点是:迟早(更早!)你会 运行 进入你真的很想把你的改变变成 git 的情况。知道您需要 javadoc 才能做到这一点,您将开始放下虚拟内容,例如:

/** just to make the commit hook happy; @TODO: replace with real content */

我向您保证:您迟早会发现大量这样的@TODOS 在您的代码库中腐烂了数天、数周、数月。因为最终,将新功能提供给支付你薪水的客户比修复你在某个地方得到的那 15 个 @TODO 更重要。我说15了吗?啊,那是上周。现在我们有 25...(LeBlanc's law later equals never kicks in!保证)

换句话说:如果您希望在所有地方都有javadoc,但您的纪律不是"good enough" 今天 在没有这种强制执行的情况下实现这一目标;那么这将导致 low-quality javadoc.

除此之外:在专注于 "clean code" 实践多年之后,我今天认为:单独使用 javadoc 不是 答案。虽然我在一家大型企业工作,团队遍布全球。

恰恰相反。当人们受过编写 "readable" 代码的培训时,他们实际上通常不需要任何(或只需要一点点)javadoc 就可以到达那里。因为那时他们的设计和命名技巧达到了无需太多 javadoc 即可轻松阅读代码的水平。

如果人们没有接受过有关此技能的培训,他们往往会创建无用的 javadoc。我无法告诉你我多久告诉人们禁用那个在生成新 class 时创建绝对无用的 @author 标签的 eclipse 模板。你猜怎么着:仍然有无数次 eclipse-generated javadocs ......在生成后从未 被任何开发人员触及。

长话短说:创建有用的 javadoc 需要大量的纪律和技巧。如果您已经缺乏纪律,那么执行 "some javadoc must be there" 规则将 不会 提高您的代码质量!

最后:我并不是说不应该完全研究这些事情。但我宁愿建议

  1. 定义应该如何编写 javadoc 的通用指南;哪些信息是强制性的;什么样的元素需要javadoc
  2. 在此基础上,找到自动检查的方法
  3. 然后定期收集此类信息(例如在夜间构建期间)并密切关注此类统计数据