# xcode

> An Xcode project: property lists that parse, build settings files, and complete string catalogs. Asset catalogs hold their images, sources belong to a target, and entitlements stay on a list.

An Xcode project: property lists that parse, build settings files, and complete string catalogs. Asset catalogs hold their images, sources belong to a target, and entitlements stay on a list. The [Swift guide](/languages/swift/) explains the setup.

## Checks

| Check                                                                             | Stage    | Level         | What it does                                                                                            |
| --------------------------------------------------------------------------------- | -------- | ------------- | ------------------------------------------------------------------------------------------------------- |
| [`xcode/plutil`](/reference/checks/xcode/plutil/)                                 | `commit` | `recommended` | Parses every property list and entitlements file with plutil.                                           |
| [`xcode/xcstrings`](/reference/checks/xcode/xcstrings/)                           | `commit` | `recommended` | Checks that each string catalog parses and translates every string into all its locales.                |
| [`xcode/assets`](/reference/checks/xcode/assets/)                                 | `commit` | `recommended` | Checks that each asset `Contents.json` parses, and that its image set holds each file it names.         |
| [`xcode/unused-assets`](/reference/checks/xcode/unused-assets/)                   | `commit` | `all`         | Finds asset sets that no source or Xcode build setting names.                                           |
| [`xcode/files-without-target`](/reference/checks/xcode/files-without-target/)     | `commit` | `recommended` | Finds the Swift files in the tree that no target of the project names.                                  |
| [`xcode/entitlements`](/reference/checks/xcode/entitlements/)                     | `commit` | `recommended` | Checks each entitlement against `xcode.allowed_entitlements`, when the settings hold that list.         |
| [`xcode/app-transport-security`](/reference/checks/xcode/app-transport-security/) | `commit` | `recommended` | Refuses a property list that allows arbitrary loads, which turns transport security off for every host. |

## Settings

| Setting                                                                           | What it sets                                                  |
| --------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [`xcode.allowed_entitlements`](/reference/gspot-toml/#xcode.allowed_entitlements) | The entitlements the app may hold; empty turns the check off. |

## Selected when

gspot selects it in a scope with file paths `**/*.xcodeproj/project.pbxproj`, or project files `*.xcodeproj`.

## Rules for coding agents

| Rule file                                                   | Installed when |
| ----------------------------------------------------------- | -------------- |
| `.gspot/configurations/infrastructure/xcode/rules/XCODE.md` | Always         |

## Tools and versions

| Tool   | Version                  |
| ------ | ------------------------ |
| plutil | Any, install it yourself |
