The Educational Aspect of Static Analysis

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

很常见 新加入我们项目的程序员会问我们是否有自动格式化工具,以使Java代码看起来与Qulice的期望完全一样。(Qulice是我们使用的静态分析器。)我总是回答说,拥有这样的自动化代码整理工具只会有害,不会帮助项目及其成员改进和成长。以下是我这样认为的原因。

静态分析,以我们与只读主分支相结合的方式,是对您的拉取请求进行全自动、毫不妥协的审查,主要用于发现代码格式错误。假设我们希望整个代码库中的Java代码看起来像这样:

然而,您将其作为一个更大的任务进行重构,并像这样提交一个拉取请求:

对于你们中的一些人来说,这可能看起来并不是一个很大的区别,因为这两个代码片段都可以编译并且以完全相同的方式工作。然而,对于我们这些仓库的维护者来说,这是很重要的。我们确实希望我们的类始终是final的,我们希望它们是不可变的(因此所有属性也应该是final的),我们希望在所有属性引用之前都加上this.,而且我们希望代码的格式相同,因为我们相信代码的统一性会严重增加其可维护性。

当然,我们可以创建一个工具,你可以使用它来重新格式化代码,使其看起来符合我们的要求。但在那种情况下,你将永远不会了解项目对你的要求以及原因

你将不会了解我们规则背后的原因。你永远不会思考它们。你不会真正关心它们。但它们不仅仅涉及空格和括号的格式。在Qulice中有900多个这样的规则,其中一些是专门为我们所宣扬的面向对象哲学而设计的。

因此,简单地说,我们不希望你轻易通过静态分析阶段。我们希望你为了学习而受苦。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-17 at 17:17

sixnines availability badge   GitHub stars