Что такое линтер DCM
Что проверяют
Первое, что здесь проверяется: скажете ли вы честно, что не знаете инструмент, если вы его не знаете. Второе: понимаете ли, зачем команде статический анализ сверх встроенного в язык, и как такой анализ внедряют в уже написанный проект.
Как отвечать
DCM это статический анализатор для Dart и Flutter, выросший из проекта Dart Code Metrics. Он работает поверх штатного анализатора языка и добавляет три вещи, которых там нет.
Метрики кода: цикломатическая сложность, глубина вложенности, число параметров, размер тела метода. По ним видно, какие места пора разбирать, и можно задать порог, выше которого проверка падает.
Собственные правила, в том числе про виджеты и отзывчивость интерфейса: лишние перестроения, тяжёлая работа в методе построения, неосвобождённые контроллеры и подписки. Часть правил умеет автоматическое исправление.
Поиск мусора: неиспользуемые файлы, классы, публичные члены, ключи локализации. На большом проекте это самый практичный способ найти код, который никто не вызывает.
Настройки живут в analysis_options.yaml, запуск идёт и в редакторе, и в сборке отдельной командой с машиночитаемым отчётом. Часть возможностей платная, для открытых проектов есть бесплатный режим.
Если инструмент вам незнаком, так и скажите, а дальше переведите разговор на то, что делали сами: правила линтера, запрет предупреждений в сборке, автоформатирование, отсечка по сложности.
Где спотыкаются
Делают вид, что знают, и придумывают расшифровку аббревиатуры. Такие вопросы иногда задают именно ради проверки на выдумывание, и придуманный ответ хуже честного «не работал, но линтеры настраивал».
Включают все правила разом на старом проекте, получают тысячи замечаний и через неделю выключают инструмент. Рабочий путь другой: зафиксировать текущее состояние базовым снимком, падать только на новых нарушениях, добавлять правила по одному.
Путают линтер, форматтер и проверку типов. Форматтер спорит только о пробелах и переносах, анализатор ищет ошибки и сомнительные места, проверка типов читает аннотации. В сборке это разные шаги с разными причинами падения.