Проблемы
В каждом проекте уже есть инструмент, который скажет, что с ним не так — tsc,
dart analyze, ESLint, Clippy, go vet, Ruff. Ни один из них не скажет,
ваш ли diff принёс те сорок предупреждений, что он только что напечатал.
Gitcito знает, какие файлы изменены, поэтому тот же список отвечает на этот
вопрос одним переключателем.

Строка состояния несёт счётчик — ошибки, предупреждения, сведения: три числа, читать которые всех научил VS Code. Щелчок (или Проблемы в палитре команд) открывает панель внизу, сгруппированную по файлам. Щелчок по строке открывает файл прямо там. До первого прохода он показывает прочерки, а не нули: никто ещё не смотрел, а три нуля утверждали бы обратное.
Что запускается
| Если в репозитории есть | Gitcito запускает |
|---|---|
pubspec.yaml |
dart analyze --format=machine |
tsconfig.json |
tsc --noEmit |
| конфигурация ESLint | eslint -f json |
Cargo.toml |
cargo clippy --message-format=short |
go.mod |
go vet ./... |
pyproject.toml или ruff.toml |
ruff check --output-format=json |
Flutter покрыт строкой про Dart: приложение на Flutter — это проект на Dart,
а flutter analyze вызывает тот же анализатор, что и dart analyze.
Проект не обязан лежать в корне. Эти маркеры ищутся и на несколько уровней
глубже, так что приложение Flutter в mobile/ или пакет в apps/web будут
найдены, и каждый анализатор запустится в каталоге своего проекта. Вложенный
проект того же типа пропускается, если его уже покрывает предок — корневой
tsconfig.json говорит именно это, — а проход останавливается на двенадцати
проектах: монорепозиторий не должен поднимать пятьдесят компиляторов.
Бинарник из node_modules/.bin побеждает тот, что в PATH — ровно так же его
находят скрипты самого проекта. Всё выполняется параллельно, а вывод каждого
инструмента приводится к одной форме, дедуплицируется и сортируется: два
анализатора об одной строке дают одну запись.
Ничто не запускается само. tsc --noEmit на большом репозитории — это
десятки секунд, и эти команды принадлежат инструментарию репозитория, а не
Gitcito. Они стартуют, когда вы открываете панель или жмёте обновление, и
никогда сами. Поэтому список — снимок: измените файл, и он устарел до следующего
запуска.
Настройки → Общие → Анализаторы кода решают, насколько он расторопен: проход при открытии панели (по умолчанию), только по кнопке обновления или выключено — что полностью скрывает половину с анализаторами, её счётчик в строке состояния и её команду.
Сгенерированный вывод отбрасывается. Инструмент, направленный на корень
проекта, проверяет всё, что найдёт, — а находит он и .next/build/chunks, и
собранный dist, и вендорную копию: сотни претензий к коду, написанному машиной,
хоронят десяток претензий к вашему. Gitcito спрашивает git, какие файлы
игнорируются, и отбрасывает их, но никогда — отслеживаемый файл: закоммитить
сгенерированное это решение, и git check-ignore его уважает. node_modules
уходит в любом случае.
Только то, что вы изменили
Переключатель в шапке выбрасывает все проблемы из файлов, которых вы не касались. Именно этот вид стоит держать открытым: плоский список всех предупреждений кодовой базы за неделю превращается в обои, а «добавил ли их этот diff» — вопрос, на который стоит ответить до коммита.
Значки серьёзности тоже фильтруют. Погашенные означают показывать всё; зажечь один — сузить до него.
Ограничения
- Никакого языкового сервера. Это проход, а не демон: никаких подчёркиваний по ходу набора и никаких результатов, пока вы не попросили.
- Неустановленный инструмент называют, а не прячут. В подвале написано, что не удалось запустить: пустой список без объяснения хуже короткого с причиной.
- Понимается только машинный вывод. Каждый анализатор читается из своего документированного машинного формата; инструмент, настроенный печатать иное, здесь невидим.
- Потолок — пять тысяч проблем. Дальше панель об этом говорит и останавливается: у репозитория в таком состоянии проблема крупнее полосы прокрутки.
См. также: Локальный CI · Встроенный терминал