Я использую SwiftLint для управления стилем кода моего проекта, он работает нормально почти все время. Но я столкнулся с небольшой проблемой: когда файл .swiftlint.yml
не находится в одной папке с файлом проекта '.xcodeproj', если я использую команду swiftlint autocorrect
или сборку Xcode для использования SwiftLint , мне нужно изменить .swiftlint.yml
каждый раз. Ниже приведены детали:
- Структура моего проекта, как показано ниже:
> SampleProject
> ├── .swiftlint.yml
> ├── SampleProject
> │ ├── Frameworks
> │ ├── Info.plist
> │ ├── SampleProject
> │ ├── SampleProject.xcodeproj
> │ └── SampleProjectTests
> ├── SampleProject.xcworkspace
> ├── Configuration
> ├── CommonFoundation
> │ ├── CommonFoundation
> │ ├── CommonFoundation.xcodeproj
> │ └── CommonFoundationTests
> ├── Gemfile
> ├── Gemfile.lock
> ├── Podfile
> ├── Podfile.lock
> ├── Pods
> ├── README.md
> ├── fastlane
> └── release.sh
.swiftlint.yml
в корневом пути, но SampleProject.xcodeproj
в подпапке;
- Я установил SwiftLint через
brew install swiftlint
;
Я добавил SwiftLint Script
с кодом ниже в Xcode для проекта SampleProject.xcodeproj
:
if which swiftlint >/dev/null; then
swiftlint --config ../.swiftlint.yml
else
echo "warning: SwiftLint not installed, 'brew install swiftlint' or download from https://github.com/realm/SwiftLint"
fi
.swiftlint.yml
код, как показано ниже:
disabled_rules: # rule identifiers to exclude from running
- colon
- comma
- control_statement
- line_length
- type_body_length
- function_body_length
- cyclomatic_complexity
opt_in_rules: # some rules are only opt-in
- empty_count
included: # paths to include during linting. `--path` is ignored if present.
- ./SampleProject/Manager/Configs.swift
excluded: # paths to ignore during linting. Takes precedence over `included`.
- Carthage
- Pods
analyzer_rules: # Rules run by `swiftlint analyze` (experimental)
- explicit_self
force_cast: warning # implicitly
force_try:
severity: warning # explicitly
type_body_length:
- 300 # warning
- 400 # error
# or they can set both explicitly
file_length:
warning: 1000
error: 1500
type_name:
min_length: 4 # only warning
max_length: # warning and error
warning: 40
error: 50
excluded: iPhone # excluded via string
identifier_name:
min_length: # only min_length
error: 3 # only error
excluded: # excluded via string array
- i
- j
- id
- GlobalAPIKey
reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit, html, emoji, sonarqube, markdown)
Когда я собираю проект с Xcode с SwiftLint с файлом SampleProject/SampleProject/Manager/Configs.swift
, мне нужно обновить элемент included
в .swiftlint.yml
, как показано ниже:
included: # paths to include during linting. `--path` is ignored if present.
- ./SampleProject/Manager/Configs.swift
Когда я запускаю команду «автозамена swiftlint» с SwiftLint с файлом SampleProject/SampleProject/Manager/Configs.swift
, мне нужно обновить элемент included
в .swiftlint.yml
, как показано ниже:
included: # paths to include during linting. `--path` is ignored if present.
- SampleProject/SampleProject/Manager/Configs.swift
Я хочу найти способ помочь в этом, не меняйте файл .swiftlint.yml
, но команда 'автокоррекция swiftlint' и сборка Xcode отлично работают с SwiftLint.