首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅为新文件启用SwiftLint

仅为新文件启用SwiftLint
EN

Stack Overflow用户
提问于 2021-08-10 08:07:37
回答 1查看 319关注 0票数 2

我有一个非常大的iOS(遗留)项目,我想在其中添加SwiftLint。所有我希望执行的规则,我只会在新创建的文件上执行。通过这种方式,我不必回去解决所有可能出现的问题,因为过去没有遵循这些规则(因为没有使用SwiftLint )。我不确定如何实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2021-11-18 14:42:53

您可以像这样运行脚本

代码语言:javascript
复制
    # Run SwiftLint
    START_DATE=$(date +"%s")
    
    SWIFT_LINT=/usr/local/bin/swiftlint
    
    # Run SwiftLint for given filename
    run_swiftlint() {
        local filename="${1}"
        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 filename; do run_swiftlint                 "${filename}"; done
        git diff --cached --name-only | while read filename; do                 run_swiftlint "${filename}"; done
    else
        echo "${SWIFT_LINT} is not installed."
        exit 0
    fi

    END_DATE=$(date +"%s")

    DIFF=$(($END_DATE - $START_DATE))
    echo "SwiftLint took $(($DIFF / 60)) minutes and $(($DIFF % 60)) seconds to complete."

只需使用以下代码将构建阶段运行脚本添加到Xcode

代码语言:javascript
复制
"${SRCROOT}/Scripts/swiftlint.sh"

它来自这里https://github.com/realm/SwiftLint/issues/413#issuecomment-184077062

它在M1芯片上不起作用,因为你需要这样说

代码语言:javascript
复制
if test -d "/opt/homebrew/bin/"; then
  PATH="/opt/homebrew/bin/:${PATH}"
fi

export PATH

if which swiftlint >/dev/null; then
  swiftlint
else
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fine

基于此博客的https://www.anotheriosdevblog.com/installing-swiftlint-on-a-m1/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68723113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档