Рубрики
Без рубрики

Как 4 строки кода Java оказываются в 518772 строках в процессе производства.

Несколько недель назад у меня была возможность выступить с докладом на голландской конференции Java Spring. T… Помеченный java, безопасность, качество кода.

Несколько недель назад у меня была возможность выступить с докладом на голландской конференции Java Spring. Разговор шел об управлении зависимостями Java.

Во время этого выступления я создал простое приложение Spring Boot и определил количество строк, добавленных моими зависимостями java, по сравнению с количеством строк, которые я написал сам. Это должно было показать, что ваши зависимости занимают большое место в вашем приложении и тоже требуют внимания. После презентации я опубликовал следующий твит, который привлек много внимания и побудил меня написать этот пост в блоге.

Получение количества строк, которые вносят мои зависимости от Java

Шаг 1: Создайте приложение Spring Boot

Прежде всего, я создал приложение весенней загрузки, используя Инициализацию весенней загрузки с web в качестве единственной зависимости.

Добавление зависимостей Java с помощью Spring Initializr По сути, это означает, что мой проект содержит spring-boot-starter-web в качестве единственной прямой зависимости.

Шаг 2: Создайте контроллер Rest

Затем я написал простейшую 4-строчную конечную точку ОТДЫХА, о которой вы могли подумать:

@RestController
public class Controller {

   @GetMapping("/hello")
   public String hello() {  return "hello"; }
}

Шаг 3: Создайте развертываемый jar

Файл jar, созданный на основе этого Java-проекта, представляет собой массивную банку, содержащую все банки, от которых зависит проект. Это связано с тем, что Spring Boot в основном включает сервер приложений вместе с самим приложением.

Шаг 4: Проанализируйте банку

Следующее, что я сделал, это создал простое приложение, которое использует созданный загрузочный файл Spring. Он распаковывает файл jar и все содержащиеся в нем зависимости. Все файлы классов в jars декомпилируются и подсчитываются строки кода.

Шаг 5: Соберите результаты

Написанных строк кода: 4 банки: 33 файла классов: 9917 Строк кода: 518772

Некоторые заметки о цифрах

Цифры, приведенные выше, далеки от точности. Белые линии и линии с одной скобкой опущены, поэтому они не были показаны при окончательном подсчете.

Спорно, нужно ли нам лучше анализировать эти строки и опускать еще больше, если мы хотим, чтобы цифры были более точными. Кроме того, разные декомпиляторы дадут вам разные результаты.

Я считаю это скорее псевдонаукой. Хотя цифры не точны, они показывают, какую большую роль играют зависимости в наших приложениях. Таково было мое намерение.

Позаботьтесь о своих зависимостях Java

Хорошо, цифры большие, но о чем на самом деле говорит нам этот пример? Прежде всего, использование Spring Boot для приложения hello world является излишеством. Во-вторых, Spring Boot – это сервер приложений, так что эти большие цифры ожидаемы, верно?

Все эти замечания верны. Я согласен, это была самая бесполезная конечная точка Rest, которую вы когда-либо могли написать. Однако это подчеркивает тот факт, что зависимости составляют большой процент двоичного файла, который мы запускаем в производство. Поскольку Spring Boot – это фреймворк, который используется множеством разработчиков Java, я намеренно выбрал его для этого примера.

Подумайте об этом. В этом примере написанные мной строки кода составляют гораздо меньше 1% от общего количества строк кода, которые мы запускаем в производство. Тем не менее, как команда, мы несем ответственность за все это. Если что-то пойдет не так с приложением, команда разработчиков должна решить эту проблему. Наличие таких вещей, как анализ кода, парное программирование и автоматический статический анализ, определенно помогает создать лучшую кодовую базу. Но как насчет 99% кода, который мы используем и от которого сильно зависим?

Очень важно заботиться о своих зависимостях и своевременно обновлять их. Импорт одного пакета приводит ко множеству зависимостей и множеству возможных факторов атаки. Создание стратегии управления зависимостями java о том, как выбираются, обновляются и удаляются зависимости, – это то, что должна учитывать каждая команда разработчиков. С точки зрения безопасности вы должны, по крайней мере, быть предупреждены, если одна из ваших зависимостей или переходных зависимостей имеет уязвимость.

Сканирование вашего приложения с помощью Snyk для обнаружения уязвимостей в ваших зависимостях с открытым исходным кодом может помочь вам в этом. Поскольку Snyk может использоваться на каждом этапе жизненного цикла разработки программного обеспечения (SDLC) и обладает высокой адаптивностью, он идеально подходит для автоматизации. Snyk не только обнаруживает уязвимости — он помогает обнаруживать уязвимости как можно раньше.

Вывод

Хорошей заботы о нашем коде не всегда достаточно — мы также должны следить за нашими зависимостями, поскольку они играют огромную роль в наших приложениях.

Сканируя ваши зависимости с помощью таких инструментов, как Snyk , уязвимости в ваших зависимостях не останутся незамеченными. Кроме того, реализация надежной стратегии управления зависимостями java имеет решающее значение для обеспечения того, чтобы ваше приложение было обслуживаемым, масштабируемым, предсказуемым и, самое главное, безопасным!

Оригинал: “https://dev.to/brianverm/how-4-lines-of-java-code-end-up-in-518772-lines-in-production-h7o”