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 - это статический анализатор, который мы используем.) Я всегда отвечаю, что наличие такого автоматизированного инструмента для полировки кода только навредило бы и не помогло бы проекту и его участникам улучшиться и развиться. Вот почему я так думаю.

Статический анализ, так, как мы его проводим в сочетании с нередактируемой веткой master, является полностью автоматизированным и безкомпромиссным обзором вашего запроса на включение, преимущественно предназначенным для выявления ошибок форматирования кода. Предположим, мы хотим, чтобы весь Java-код в нашем репозитории выглядел так:

Однако, вы рефакторите его в рамках более крупной задачи и отправляете запрос на слияние, как показано ниже:

Для некоторых из вас это может не показаться большой разницей, поскольку оба фрагмента кода компилируются без проблем и работают одинаково. Однако для нас, сопровождающих репозиторий, это важно. Мы хотим, чтобы наши классы всегда были final, чтобы они были неизменяемыми (так что все атрибуты также должны быть final), мы хотим префиксировать все ссылки на атрибуты с this., и мы хотим, чтобы код был отформатирован таким же образом, поскольку мы считаем, что единообразие кода серьезно повышает его поддерживаемость.

Конечно, мы могли бы создать инструмент, который вы могли бы использовать для переформатирования кода так, чтобы он выглядел так, как мы хотим. Но в таком случае вы никогда не узнаете, что проект хочет от вас и почему.

Вы не будете знать обоснования наших правил. Вы никогда не задумаетесь о них. Вам они не будут действительно важны. Но они относятся не только к форматированию пробелов и скобок. В Qulice их более 900, и некоторые из них были разработаны специально для объектно-ориентированной философии, которую мы проповедуем на нашем сайте.

Таким образом, просто говоря, мы не хотим, чтобы вам было легко пройти статический анализ. Мы хотим, чтобы вы страдали, чтобы научиться.

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

sixnines availability badge   GitHub stars