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

  • 提前发现潜在风险

相关推荐
RunProof可证工程5 小时前
AI 写的登录接口能跑,上线前我却查出 SQL 注入写法
sql·代码规范
麒麟马7 小时前
Swift 扩展归纳---Array (一)
ios·swift
2501_915106329 小时前
Swift 4开发环境设置教程:xCode安装与Playground入门
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
咖啡八杯11 小时前
实体基类设计:BaseEntity 公共字段抽取与 TreeEntity 树形继承
java·架构·代码规范
aqiu1111111 天前
【并查集 / 图论】蓝桥云课 - 魔法大陆的城市群(求无向图连通块数量)题解
蓝桥杯·图论
东坡肘子2 天前
当 Mac mini 的价格不再 mini -- 肘子的 Swift 周报 #152
人工智能·swiftui·swift
aqiu1111112 天前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
这个DBA有点耶2 天前
MySQL 8.0执行计划分析利器:EXPLAIN ANALYZE到底比EXPLAIN强在哪?
数据库·mysql·代码规范
Chester_19993 天前
CSP202312C.树上搜索
开发语言·数据结构·c++·蓝桥杯·stl
独立开发者屿风3 天前
在 React 里把 import 排得明明白白:一份让人极度舒适的配置指南
react.js·代码规范