I have 100+ files, run cmd,
swiftlint autocorrect --format
but, Every time is slow。I want to hurry up, how to do?
For example, filter for modified files. Thanks..
This isn't really SwiftLint feature.
Are you using git?
This is an example of shell script we have integrated as part of our Xcode project
#!/bin/bash
# Run SwiftLint
START_DATE=$(date +"%s")
SWIFT_LINT=/usr/local/bin/swiftlint
# Run SwiftLint for given filename
run_swiftlint() {
local filename="${1}"
# Ignore Pods/ paths
[[ "${filename}" =~ Pods/ ]] && return
if [[ "${filename##*.}" == "swift" ]]; then
${SWIFT_LINT} autocorrect --path "${filename}"
${SWIFT_LINT} lint --path "${filename}"
fi
}
if [[ -e "${SWIFT_LINT}" ]]; then
echo "SwiftLint version: $(${SWIFT_LINT} version)"
# Run for both staged and unstaged files
git diff --name-only | while read -r filename; do run_swiftlint "${filename}"; done
git diff --cached --name-only | while read -r filename; do run_swiftlint "${filename}"; done
else
echo "Error: ${SWIFT_LINT} is not installed."
exit 1
fi
END_DATE=$(date +"%s")
DIFF=$((END_DATE - START_DATE))
echo "SwiftLint took $((DIFF / 60)) minutes and $((DIFF % 60)) seconds to complete."
@snice Did @mgrebenets's comment solve your issue?
I'd like to state that with SwiftLint's caching (minus current bugs we're dealing with), only modified files should be re-linted.
@jpsim That means "modified" in the SwiftTerms terms, right?
For our team it was important to use the git's meaning of "modified" and only lint the files which developer has touched, since there's no mechanism to share same cache between multiple developers.
For CI builds we lint the whole project - this is where cache becomes more important for us.
What's "SwiftTerms terms"? By modified I mean different since the last run persisted in the cache.
Most helpful comment
This isn't really SwiftLint feature.
Are you using
git?This is an example of shell script we have integrated as part of our Xcode project