You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片设备如何对Git未提交文件运行SwiftLint

适配M1芯片的SwiftLint脚本修改方案

M1系列芯片的Mac设备中,Homebrew默认的软件安装路径从Intel架构的/usr/local/bin变更为/opt/homebrew/bin,原脚本写死了Intel架构下的SwiftLint路径,所以在M1设备上会提示找不到SwiftLint,可根据使用场景选择以下任意一种方案修改:


方案1:仅M1设备使用(最简修改)

直接把原脚本中SWIFT_LINT=/usr/local/bin/swiftlint这一行替换为:
SWIFT_LINT=/opt/homebrew/bin/swiftlint
修改完成后即可直接运行。


方案2:兼容Intel/M1双架构(推荐,团队共用脚本通用)

将原脚本中SWIFT_LINT=/usr/local/bin/swiftlint替换为以下自动判断逻辑,脚本会自动适配当前设备的架构路径,无需针对不同设备单独修改:

# 自动适配不同架构的SwiftLint路径
if [[ -x /opt/homebrew/bin/swiftlint ]]; then
    SWIFT_LINT=/opt/homebrew/bin/swiftlint
elif [[ -x /usr/local/bin/swiftlint ]]; then
    SWIFT_LINT=/usr/local/bin/swiftlint
else
    SWIFT_LINT=""
fi

修改后完整可用脚本

# Run SwiftLint
START_DATE=$(date +"%s")

# 自动适配不同架构的SwiftLint路径
if [[ -x /opt/homebrew/bin/swiftlint ]]; then
    SWIFT_LINT=/opt/homebrew/bin/swiftlint
elif [[ -x /usr/local/bin/swiftlint ]]; then
    SWIFT_LINT=/usr/local/bin/swiftlint
else
    SWIFT_LINT=""
fi

# 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 "SwiftLint 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."

内容的提问来源于stack exchange,提问作者user1898829

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:54:07