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 中显示问题

  • 提前发现潜在风险

相关推荐
咖啡八杯1 小时前
常量与枚举设计规范:HttpStatus 自定义 601 警告码
java·架构·代码规范
鑫 源3 小时前
VS2019 for mac里用c#开发Mac OS应用 避坑 和 源码
职场和发展·蓝桥杯
传奇开心果编程13 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
用户38034165882971 天前
控制中心一键后台录音:我被自己的 Spike 骗了两次
ios·swift
aqiu1111111 天前
【蓝桥杯】0仙境诅咒 — BFS/DFS 图论连通性问题(C++ 题解)
蓝桥杯·深度优先·宽度优先
东坡肘子1 天前
iPhone Duo 留给开发者的一个月 -- 肘子的 Swift 周报 #155
人工智能·swiftui·swift
茶底世界之下2 天前
导出进度不是一个百分比:AVFoundation 收尾阶段的状态建模
ios·swift
茶底世界之下2 天前
为什么媒体源不能在回调仍执行时提前报告 finish?
swift
这个DBA有点耶2 天前
从异步复制到MGR:MySQL复制机制的三层演进与选型框架
数据库·mysql·代码规范
kisshyshy2 天前
《从屎山到秩序:Vibe Coding 95 驾驭术全公开》
人工智能·代码规范·vibecoding