swift 代码规范

一、SwiftLint 简介

SwiftLint 是一个用于检查 Swift 代码规范与风格的静态分析工具。

它能够帮助团队:

  • 统一代码风格

  • 提前发现潜在问题

  • 减少 Code Review 成本

  • 提高代码可维护性

  • 规范团队开发习惯

二、SwiftLint 安装方式

CocoaPods 安装

pod 'SwiftLint'

pod install

三、项目中集成 SwiftLint

执行方式

bash 复制代码
Pods/SwiftLint/swiftlint

1、创建配置文件

项目根目录创建:

.swiftlint.yml

bash 复制代码
baseline: .swiftlint-baseline.json

included:
  - Runner
  - gitsubmodules

excluded:
  - Pods
  - gitsubmodules/*/Pods
  - gitsubmodules/**/Pods
  - Flutter
  - FlutterFrameworks
  - build
  - flutter_module
  - DerivedData
  - "**/Mocks/*"
  - .swiftlint.yml
  - lefthook.yml
  - swiftlint_diff.sh

disabled_rules:
  - trailing_whitespace
  - line_length
  - type_body_length
  - file_length
  - function_body_length
  - cyclomatic_complexity
  - identifier_name
  - force_cast
  - force_try
  - todo

opt_in_rules:
  - empty_count
  - closure_spacing
  - explicit_init
  - redundant_nil_coalescing
  - sorted_imports

force_unwrapping:
  severity: warning

unused_optional_binding:
  severity: warning

large_tuple:
  warning: 3
  error: 4

custom_rules:  # 自定义规则
  chinese_hardcoded_string:
    name: "字符串硬编码"
    regex: '(?m)^(?![^\n]*(?:\bFileLog\.\w+\s*\(|\bprint\s*\(|\bdebugPrint\s*\())[^\n]*(#*"[^"\n]*[\u4e00-\u9fff][^"\n]*"#*)'
    excluded_match_kinds:
      - comment
      - doccomment    # 排除 /// 文档注释 
    capture_group: 1
    message: "请勿在 Swift 代码中使用中文字符串,请使用 i18n 资源。"
    severity: error
    included:
      - ".*\\.swift"

reporter: "xcode"

执行命令行 在主工程生成.swiftlint-baseline.json基线避免对历史代码产生副作用

bash 复制代码
#write_baseline: .swiftlint-baseline.json 
Pods/SwiftLint/swiftlint lint --config .swiftlint.yml 
#baseline: .swiftlint-baseline.json

四、Xcode 集成

1、添加 Run Script

Target -> Build Phases -> + -> New Run Script Phase

bash 复制代码
if [ "${CONFIGURATION}" = "Debug" ]; then
  if [ -x "${PODS_ROOT}/SwiftLint/swiftlint" ]; then
    "${PODS_ROOT}/SwiftLint/swiftlint" --config "${SRCROOT}/.swiftlint.yml"
  else
    echo "warning: SwiftLint not found. Run pod install first."
  fi
fi

2、Build 时自动检查

每次编译时:

  • 自动检查代码规范

  • 在 Xcode Warning 中显示问题

  • 提前发现潜在风险

相关推荐
变量未定义~3 小时前
单调栈、单调队列(模板)、子矩阵(模板)
数据结构·算法·蓝桥杯
饼干哥哥6 小时前
Lovart真的帮大忙了,一键直出品牌视觉套件和个人IP封面Skill
人工智能·代码规范·设计
apihz7 小时前
经纬度制作高清卫星图片免费 API 接口详解
开发语言·ios·swift
饼干哥哥1 天前
单篇100万阅读文章,如何用AI 做好内容创作?
人工智能·正则表达式·代码规范
程序员agions1 天前
RuView 新手快速上手与实战指南
代码规范
至乐活着1 天前
前端工程化最佳实践:从规范到自动化构建的全面指南
webpack·自动化·代码规范·构建工具·前端工程化
00后程序员张1 天前
iOS 打包方式汇总 从 Xcode Archive 到轻量级工具链的 IPA 构建
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
sweet丶2 天前
Swift 黑魔法:`@dynamicMemberLookup`
swift·rxswift
大熊猫侯佩2 天前
SwiftUI 侦探笔记:iPhone 14 失踪的“刘海”与侯佩的像素诡计
swiftui·swift·apple
大熊猫侯佩2 天前
WWDC26 新 @ContentBuilder 修饰符:SwiftUI 终于有了户口本
swiftui·swift·wwdc