# Озарения {#insights}
::: предупреждение РЕКВИЗИТЫ
- A Туистский счет и проект
:::
Работа над крупными проектами не должна казаться рутиной. На самом деле, она
должна быть такой же приятной, как и работа над проектом, который вы начали
всего две недели назад. Одна из причин, по которой это не так, заключается в
том, что по мере роста проекта страдает опыт разработчиков. Время сборки
увеличивается, а тесты становятся медленными и нестабильными. Зачастую на эти
проблемы легко не обращать внимания, пока они не становятся невыносимыми -
однако в этот момент их сложно решить. Tuist Insights предоставляет вам
инструменты для мониторинга состояния проекта и поддержания продуктивной среды
разработчиков по мере масштабирования проекта.
Другими словами, Tuist Insights поможет вам ответить на такие вопросы, как:
- Значительно ли увеличилось время сборки за последнюю неделю?
- Стали ли мои тесты работать медленнее? Какие именно?
::: info
Tuist Insights находится на ранней стадии разработки.
:::
## Сборки {#builds}
В то время как у вас, вероятно, есть некоторые показатели производительности
рабочих процессов CI, вы можете не иметь такого же представления о локальной
среде разработки. Однако время локальной сборки - один из важнейших факторов,
влияющих на работу разработчиков.
Чтобы начать отслеживать время локальной сборки, вы можете воспользоваться
командой `tuist inspect build`, добавив ее в пост-акцию вашей схемы:

::: info
Мы рекомендуем установить параметр "Provide build settings from" на исполняемый
файл или вашу основную цель сборки, чтобы Tuist мог отслеживать конфигурацию
сборки.
:::
::: info
Если вы не используете
генерируемые проекты, действие post-scheme не выполняется в случае неудачи
сборки.
:::
>
> Недокументированная функция в Xcode позволяет выполнить его даже в этом
> случае. Установите атрибут `runPostActionsOnFailure` в значение `YES` в
> `BuildAction вашей схемы` в соответствующем `файле project.pbxproj` следующим
> образом:
>
> ```diff
> buildImplicitDependencies="YES"
> parallelizeBuildables="YES"
> + runPostActionsOnFailure="YES">
> ```
Если вы используете [Mise](https://mise.jdx.dev/), ваш сценарий должен будет
активировать `tuist` в пост-активном окружении:
```sh
# -C ensures that Mise loads the configuration from the Mise configuration
# file in the project's root directory.
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect build
```
::: наконечник MISE & PROJECT PATHS
Переменная окружения `PATH` не наследуется пост-экшеном схемы, поэтому вам
придется использовать абсолютный путь Mise, который зависит от того, как вы
установили Mise. Кроме того, не забудьте унаследовать настройки сборки от цели в
вашем проекте, чтобы вы могли запускать Mise из каталога, на который указывает
$SRCROOT.
:::
Ваши локальные сборки теперь отслеживаются, пока вы входите в свою учетную
запись Tuist. Теперь вы можете получить доступ к времени сборки на панели Tuist
и посмотреть, как оно изменяется с течением времени:
::: tip
Чтобы быстро получить доступ к приборной панели, выполните команду `tuist
project show --web` из CLI.
:::

## Тесты {#tests}
Помимо отслеживания сборок, вы также можете контролировать свои тесты. Тестовые
инсайты помогут вам выявить медленные тесты или быстро разобраться в неудачных
прогонах CI.
Чтобы начать отслеживать свои тесты, вы можете воспользоваться командой `tuist
inspect test`, добавив ее в пост-акцию тестирования вашей схемы:

Если вы используете [Mise](https://mise.jdx.dev/), ваш сценарий должен будет
активировать `tuist` в пост-активном окружении:
```sh
# -C ensures that Mise loads the configuration from the Mise configuration
# file in the project's root directory.
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect test
```
::: наконечник MISE & PROJECT PATHS
Переменная окружения `PATH` не наследуется пост-экшеном схемы, поэтому вам
придется использовать абсолютный путь Mise, который зависит от того, как вы
установили Mise. Кроме того, не забудьте унаследовать настройки сборки от цели в
вашем проекте, чтобы вы могли запускать Mise из каталога, на который указывает
$SRCROOT.
:::
Проведение тестов теперь отслеживается до тех пор, пока вы входите в свою
учетную запись Tuist. Вы можете получить доступ к результатам тестирования на
приборной панели Tuist и увидеть, как они меняются со временем:

Помимо общих тенденций, вы также можете глубоко погрузиться в каждый отдельный
тест, например, при отладке сбоев или медленных тестов на CI:

## Сгенерированные проекты {#generated-projects}
::: info
Автоматически сгенерированные схемы автоматически включают пост-действия `tuist
inspect build` и `tuist inspect test`.
:::
>
> Если вам неинтересно отслеживать понимание в автогенерируемых схемах,
> отключите их с помощью опций генерации
> buildInsightsDisabled
> и
> testInsightsDisabled.
Если вы используете сгенерированные проекты с пользовательскими схемами, вы
можете настроить пост-действия как для сборки, так и для тестирования:
```swift
let project = Project(
name: "MyProject",
targets: [
// Your targets
],
schemes: [
.scheme(
name: "MyApp",
shared: true,
buildAction: .buildAction(
targets: ["MyApp"],
postActions: [
// Build insights: Track build times and performance
.executionAction(
title: "Inspect Build",
scriptText: """
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect build
""",
target: "MyApp"
)
],
// Run build post-actions even if the build fails
runPostActionsOnFailure: true
),
testAction: .testAction(
targets: ["MyAppTests"],
postActions: [
// Test insights: Track test duration and flakiness
.executionAction(
title: "Inspect Test",
scriptText: """
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect test
""",
target: "MyAppTests"
)
]
),
runAction: .runAction(configuration: "Debug")
)
]
)
```
Если вы не используете Mise, ваши сценарии могут быть упрощены до:
```swift
buildAction: .buildAction(
targets: ["MyApp"],
postActions: [
.executionAction(
title: "Inspect Build",
scriptText: "tuist inspect build",
target: "MyApp"
)
],
runPostActionsOnFailure: true
),
testAction: .testAction(
targets: ["MyAppTests"],
postActions: [
.executionAction(
title: "Inspect Test",
scriptText: "tuist inspect test"
)
]
)
```
## Непрерывная интеграция {#continuous-integration}
Чтобы отслеживать результаты сборки и тестирования на CI, вам нужно убедиться,
что ваш CI
аутентифицирован.
Кроме того, вам потребуется:
- Используйте команду
`tuist xcodebuild` при вызове действий `xcodebuild`.
- Добавьте `-resultBundlePath` к вызову `xcodebuild`.
Когда `xcodebuild` собирает или тестирует ваш проект без `-resultBundlePath`,
необходимые файлы журнала активности и пакета результатов не создаются.
Пост-операции `tuist inspect build` и `tuist inspect test` требуют эти файлы для
анализа ваших сборок и тестов.