Pull to refresh

Вышло обновление ESLint 9.0

Reading time2 min
Views4.3K

Разработчики линтера ESLint рассказали о релизе версии 9.0. Команда проекта исправила известные ошибки и добавила новые функции. Кроме того, линтер теперь не поддерживает работу с Node.js 18.18.0 и 19.

Читать далее
Total votes 3: ↑2.5 and ↓0.5+2
Comments7

Партнёрская программа Минкомсвязи России

Reading time4 min
Views718
Все организации, которым нужно привлечь кого-то к сотрудничеству, создают партнёрские программы. Суть таких программ зависит от типа сотрудничества – кому-то требуется «привязать» разработчиков к своим технологиям, а кто-то хочет замкнуть производителей программного обеспечения на его потребителей. Мне кажется, что нашему Министерству связей и массовых коммуникаций могла бы пригодиться партнёрская программа.

Вы слышали про ЛИНТЕР? Многие без колебаний ответят: «Нет». Если же спросить так: «Вы слышали про Oracle?», утвердительных ответов будет значительно больше. А тем временем, есть коммерческая отечественная СУБД, называемая ЛИНТЕР и ведущая свою историю с начала 80-х годов прошлого века. Сегодня ЛИНТЕР управляет движением самолётов, ЛИНТЕР пропускает людей в метро, ЛИНТЕР качает нефть, ловит преступников, контролирует космическое пространство, защищает атомные реакторы, хранит музыку в домашних кинотеатрах и сотовых телефонах, работает на российских подводных лодках и много ещё где.

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments26

Линтеры в Go. Как их готовить. Денис Исаев

Reading time16 min
Views37K

Предлагаю ознакомиться с расшифровкой доклада Дениса Исаева jirfag "Линтеры в Go. Как их готовить."


В go 50+ линтеров: в чем их профит и как эффективно встроить их в процесс разработки? Доклад будет полезен как тем, кто еще не использует линтеры, так и тем, кто уже применяет их: я раскрою малоизвестные трюки и практики работы с линтерами.



Кому интересно, прошу под кат.

Total votes 19: ↑18 and ↓1+17
Comments4

Blameless environment: никто не должен писать качественный код

Reading time13 min
Views17K
На РИТ++ Никита Соболев (sobolevn) выступил, как он сам назвал это, с проповедью на тему качества кода и процессов в компании. Особо впечатлительных просим налить себе ромашкового чаю, но отойти от экранов не предлагаем. Вы можете не соглашаться ни с одним из тезисов, настаивать, что трёп о сериалах — залог здоровой атмосферы в коллективе, и утверждать, что вам не нужны строгие рамки линтера и CI, чтобы писать хороший код. Но если вы хоть раз винили окружающих в неудачах на работе, вам стоит прочитать или посмотреть рассказ Никиты.

Работали ли вы когда-нибудь на плохой работе?

Я работал и долго. Моя компания была ужасна. Все было очень плохо, за что ни возьмись — все из рук вон. У нас были отвратительные процессы, ненавистные клиенты и неумелые разработчики. С этим ничего нельзя было поделать. Когда все так плохо, просто не знаешь, за что взяться, с чего начать. Чувствуешь себя жалким винтиком, который не может ни на что влиять.



Когда я говорю, все плохо, я имею в виду, что у нас был:

  • плохой код — никто не думал о качестве кода, никто не мог даже сформулировать, что такое качество кода.
  • плохие процессы.
  • мы не могли нормально общаться,
  • мы не делали то, что хотел клиент.

Да, это была аутсорс-разработка, но не это делало её плохой. Люди сделали ее такой.
Читать дальше →
Total votes 53: ↑44 and ↓9+35
Comments51

О линтерах, качестве кода, качестве вообще и управлении качеством

Reading time7 min
Views19K
Бойтесь своих желаний, они могут исполниться.
Народная мудрость.

Одна пара пожелала пожениться и обрести вечное счастье. Я взорвал их машину у церкви сразу после венчания.
One Wish Grant, фильм Трасса 60.

image

Ещё одна философская заметка про управление, а данном случае качеством, состоит из трёх частей: очень абстрактной, в меру абстрактной, конкретной и отдельного вывода. Содержит критику существующей практики применения линтеров.
Читать дальше →
Total votes 43: ↑34 and ↓9+25
Comments23

Повышаем качество кода с Dart Code Metrics

Reading time8 min
Views7K

Dart Code Metrics — это инструмент статического анализа кода, который позволяет собирать метрики по коду и предоставляет дополнительные правила для анализатора. Основная задача — помогать разработчикам следить за качеством кода и улучшать его. В этой статье мы хотим поделиться возможностями инструмента с сообществом. Он помог нам в Wrike решить часть проблем на фронтенде, и, надеемся, поможет и вам.

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments2

Dart Code Metrics 4.0: команды, поддержка монорепозиториев и новые правила

Reading time8 min
Views2.6K

В предыдущей статье мы анонсировали Dart Code Metrics — инструмент статического анализа кода. Сегодня я расскажу про новые возможности, которые появились в Dart Code Metrics с выходом очередного мажорного обновления. Поговорим про появление команд, поддержку монорепозиториев, улучшения в интеграции с CI/CD, и, конечно же, про новые правила для анализатора. Теперь у инструмента появился сайт с документацией, его можно найти здесь.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments4

Холиварный рассказ про линтеры 

Reading time20 min
Views61K
Все мы пишем код. Много кода. Само собой, бывают ошибки. Иногда это просто кривой код, а иногда цена ошибки — взорванный космический корабль. Конечно, никто не делает намеренных косяков, все в меру возможностей стараются следить за качеством, но без инструментов статического анализа вряд ли можно быть уверенным, что всё идеально.

Линтеры помогают приводить код к единому стилю и избегать ошибок. Правда, только в том случае, если вы готовы к страданиям, а не отмахиваетесь в конце концов «pylint: disable», только чтобы оно отстало. Какой должен быть линтер, и почему таки не обойтись Pylint, знает Никита Соболев (sobolevn), который понимает и любит линтеры настолько, что даже свою компанию назвал так, чтобы их не расстраивать — wemake.services.

image

Ниже текстовая версия доклада на Moscow Python Conf++ про линтеры, как их делать правильно и как не нужно. В выступлении было много интерактива, онлайна и общения с аудиторией. Спикер по ходу дела проводил опросы и старался переубедить слушателей: смотрел на тренд, и как в дебатах, пытался выровнять соотношение и поменять общественное мнение. Какая-то часть с опросами попала в расшифровку, но не вся, поэтому для полноты картины прилагается видео.
Total votes 30: ↑26 and ↓4+22
Comments19

Как создать кастомный плагин для Dart-анализатора

Reading time6 min
Views2.1K

Привет! Меня зовут Дима, я frontend-разработчик в компании Wrike. В этой статье я расскажу про то, как написать плагин для анализа кода на Dart. Текст будет полезен тем, кому не хватает текущей функциональности дартового анализатора по статическому анализу или если вам просто захочется попробовать написать простой анализатор самостоятельно.

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments2

Готовый набор golang линтеров (джунам и мидлам)

Level of difficultyEasy
Reading time3 min
Views3.3K

При рефакторинге легаси проекта перед нами встала задача внедрить в компании готовый линтер-тулз, дабы минимизировать объёмы генерируемого говнокода.

Вот что у нас получилось (полная инструкция по внедрению).

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments1

10 самых распространенных проблем при линтинге Dockerfile'ов

Level of difficultyEasy
Reading time8 min
Views11K

Весной 2023 года разработчики Depot добавили в свой сервис возможность проверять Dockerfile'ы при каждой сборке.

В этой статье они делятся десятью наиболее распространенными проблемами при линтинге Dockerfile'ов, разбирают каждую проблему и объясняют, почему она возникает и как ее решить. Авторы отмечают, что со временем список может измениться, но даже в таком виде он станет хорошей отправной точкой для оптимизации Dockerfile'ов.

Читать далее
Total votes 36: ↑35 and ↓1+34
Comments4

Мониторинг под рукой на IxoraRMS. Быстро и со вкусом

Reading time16 min
Views8.4K
image
Иногда проблема с приложением выливается в небольшой кошмар, ребус. Назовите, как хотите. Хочу поделиться об опыте использования средств мониторинга разработчиками на одном из проектов. Хабр многолик и уже существуют десятки статей о продуктах, которые облегчают понимание происходящего: cacti — habrahabr.ru/post/179391; zabbix — habrahabr.ru/post/137641; collectd — habrahabr.ru/post/93205; штатные средства JVM — habrahabr.ru/post/147008 (дополняйте).

Попробую рассказать о еще одном небольшом универсальном и легковесном продукте в этой категории — IxoraRMS.
Всем интересующимся, добро пожаловать под кат.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments0

СУБД ЛИНТЕР Бастион успешно протестирована на ReactOS

Reading time2 min
Views21K
Добрый пятничный вечер, уважаемые читатели Хабра!

Коллектив разработчиков ReactOS представляет вашему вниманию свой первый совместный пресс-релиз с компанией ЗАО НПП «РЕЛЭКС».

Специалистами ЗАО НПП «РЕЛЭКС» успешно завершены работы по тестированию СУБД ЛИНТЕР Бастион на операционной системе ReactOS.

Замеры показали, что Линтер под управлением ReactOS дает прирост производительности на 10-15% по сравнению с Windows XP на идентичной аппаратной конфигурации. В ходе работ были выявлены недостатки в ОС, которые были оперативно устранены сообществом разработчиков при непосредственном и активном участии российского фонда ReactOS.
Читать дальше →
Total votes 41: ↑27 and ↓14+13
Comments73

СУБД ЛИНТЕР и ReactOS, технические детали

Reading time5 min
Views15K
Во многом благодаря активности фонда ReactOS не будет большой ошибкой предположить, что любой постоянный читатель Хабра слышал о весьма амбициозном проекте «свободного Виндоуcа». Я не стал исключением, и еще в ходе работ по созданию системы сборки для СУБД ЛИНТЕР идея включить поддержку этой операционной системы меня посещала не раз. Совсем недавно ее удалось воплотить в жизнь.



Под катом вас ждут технические детали работ, включая опыт развертывания ReactOS на реальном железе, и немного моего субъективного мнения об этом проекте.
Читать дальше →
Total votes 36: ↑30 and ↓6+24
Comments55

Модель ветвления и управления модулями git для большого проекта

Reading time9 min
Views36K
Без малого два года назад мы начали использовать в разработке нашего флагманского проекта СУБД ЛИНТЕР новую модель ветвления и управления подмодулями git-а. Десятки тысяч коммитов, сделанные за это время группой разработчиков, позволяют с определенной долей уверенности считать нововведения успешными. Эта статья — краткий обзор принципов организации хранилища исходных кодов в большом проекте на базе альтернативной реализации модулей git, сложившейся стратегии ветвления и инструментария linflow.


Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments8

Использование возможностей git-а в системе сборки модульного проекта

Reading time6 min
Views13K
В нашем блоге мы уже рассказывали о принципах организации репозитория большого проекта как совокупности независимых модулей, что позволяет организовать извлечение исходных кодов в произвольную файловую структуру рабочей копии. Разумеется, такой подход не мог не отразиться на системе сборки проекта, поскольку потребовал создание механизма отслеживания зависимостей между модулями с учетом их фактического размещения. Эта статья посвящена тому, как можно использовать возможности git-а для решения не только этой задачи, но и для извлечения фрагмента проекта с автоматическим учетом внутренних межмодульных зависимостей.


Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments4

Система сборки для больших модульных проектов

Reading time6 min
Views11K
На страницах нашего блога мы уже писали о преимуществах организации репозитория крупного проекта способом, предполагающим возможность извлечения исходников в изменяемую структуру рабочей копии. Использование такого подхода вкупе с потребностями простого конфигурирования, фрагментарной сборки, поддержки несколько десятков ОС под широкий спектр аппаратных платформ стали причиной разработки нами собственной системы сборки. Эта статья рассказывает о найденных нами решениях, которые могут быть интересны разработчикам, сталкивающимися с трудностями поддержки инфраструктуры больших проектов.


Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments4

Все люди не умеют писать код

Reading time10 min
Views34K
В преддверии Moscow Python Conf ++ мы поговорили с Никитой Соболевым, CTO компании «Мы делаем сервисы», о глобальной проблеме управления сложностью кода в разрезе развития языков программирования. А также о том, почему тут со временем ситуация становится только хуже. Плюс расспросили, зачем ему потребовалось создавать собственный линтер.


Читать дальше →
Total votes 77: ↑58 and ↓19+39
Comments54

NoVerify: PHP-линтер, который работает быстро

Reading time14 min
Views16K
Для PHP есть хорошие утилиты статического анализа: PHPStan, Psalm, Phan, Exakat. Линтеры хорошо выполняют свою работу, но очень медленно, потому что почти все написаны на PHP (или Java). Для личного использования или небольшого проекта это нормально, но для сайта с миллионами пользователей — критический фактор. Медленный линтер замедляет CI pipeline и не даёт возможности использовать его в качестве решения, интегрируемого в текстовый редактор или IDE.



Сайт с миллионами пользователей — это ВКонтакте. Разработка и добавление новых функций, тестирование и починка багов, ревью — все это должно проходить быстро, в условиях жестких дедлайнов. Поэтому хороший и быстрый линтер, который сможет проверять кодовую базу на 5 млн строк за 5−10 секунд, незаменимая вещь. 

Подходящих линтеров на рынке нет, поэтому Юрий Насретдинов (youROCK) из ВКонтакте написал свой в помощь командам разработки — NoVerify. Это линтер для PHP, который написан на Go. Он работает в 10-30 раз быстрее аналогов, может находить то, о чем не предупредит PhpStorm, легко расширяется и хорошо интегрируется в проекты, в которых раньше не слышали о статическом анализе. 

Об этом линтере расскажет Искандер Шарипов. Под катом:как выбирали линтер и предпочли написать свой, почему NoVerify такой быстрый и как устроен изнутри, почему написан на Go, что может находить и как расширяется, на какие компромиссы пришлось пойти ради него и что можно построить на его базе.
Total votes 37: ↑35 and ↓2+33
Comments9

ruleguard: динамические проверки для Go

Reading time8 min
Views5.3K


В этой статье я расскажу о новой библиотеке (и утилите) статического анализа go-ruleguard, которая адаптирует gogrep для использования внутри линтеров.


Отличительная особенность: правила статического анализа вы описываете на особом Go-подобном DSL, который на старте ruleguard превращается в набор диагностик. Возможно, это один из самых легко конфигурируемых инструментов для реализации кастомных инспекций для Go.


В качестве бонуса, мы поговорим об go/analysis и его предшественниках.

Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments16
1