是否有人对SwiftLint的“选择加入”规则对match_kinds类型有更好的解释。该文档提供了枚举的类型,但除了名称外没有其他说明。
match_kinds类型包括:
参数,attribute.builtin,attribute.id,buildconfig.id,buildconfig.keyword,注释,comment.mark,comment.url,doccomment,doccomment.field,标识符,关键字,numberobjectliteral,参数,占位符,字符串,string_interpolation_anchor,typeidentifier
例如,我希望在特定命名函数之前具有搜索特定关键字的范围。
在构建我的 xcode Swift 项目时,我从 .swiftlint.yml 文件中排除的文件/文件夹的 SwiftLint(即空计数违规)收到违规,但在该excluded部分中指定这些文件/文件夹时,违规仍然发生。
.swiftlint.yml
included:
excluded:
- Pods
- myproject/API/api_implementation.swift
- myproject/API
Run Code Online (Sandbox Code Playgroud)
构建阶段运行脚本
"${PODS_ROOT}/SwiftLint/swiftlint"
Run Code Online (Sandbox Code Playgroud)
项目结构
/projectroot
.swiftlint.yml
Pods/
myproject/
API/
api_implementation.swift
Run Code Online (Sandbox Code Playgroud)
lint既不myproject/API/api_implementation.swift也不myproject/API/排除整个目录!
从 lint 中排除此文件和文件夹有什么不正确之处?如果我的语法不正确,正确的语法是什么?如果我的路径不正确,那么 SwiftLint 文件从哪里运行?有趣的是,即使 .swiftlint.yml 文件在我项目的根目录中,运行的 swiftlint 文件也在 Pods/SwiftLint/
也许 Cocoapods 需要额外集成才能让 SwiftLint 工作的方式会导致这个问题。但是,我已尝试清空构建阶段运行脚本,并确认 .swiftlint.yml 文件确实在构建中运行。
任何帮助或想法将不胜感激!
我想使用swiftlint来lint一个文件.我该如何做到这一点?检查https://github.com/realm/SwiftLint上的文档没有帮助.
到目前为止,我发现的是这篇博客文章:是时候使用Swift Package Manager了,建议将SwiftLint和其他工具与集成Package.swift。
我能够将依赖关系添加到包文件中,并成功构建和测试,但是SwiftLint从未警告我有关语法违规的信息。
在Xcode项目中使用此“构建阶段”步骤之前,请执行以下操作:
if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
Run Code Online (Sandbox Code Playgroud)
文章建议采用蒙犬本身毫无用处没有PackageConfigs。这个想法是在提交期间运行SwiftLint命令。我试图添加两个项目,但无法在合理的时间内使它正常工作。在提交期间,我看到如下警告:
非法指示:4 $ komondor运行前提交
对于Swift Package Manager来说,这还处于初期,互联网上几乎没有信息。
理想情况下,我希望有任何可以使我们的团队自动化SwiftLint的解决方案,理想情况下,不需要添加22个依赖项,配置文件和动态库。
请帮助我了解如何卸载 swiftlint,或如何完全关闭它的警告(因为它不时开始忽略所有规则)。我从 pkg 文件安装了 swiftilnt,现在找不到删除它的方法。“从 Makefile 运行”解决方案对我没有帮助,因为我不明白它在哪里,以及如何运行它。在 Xcode 首选项中,我也找不到卸载它的方法。我也在 finder 中搜索“swiftlint”,但它也找不到。
Xcode 8.2.1
我希望为我的应用程序中的单元测试禁用几个 SwiftLint 规则。
例如,我想禁用weak_delegate单元测试的规则。
查看了 SwiftLint 文档后,我认为可以通过定义自定义的 weak_delegate 规则并排除单元测试的路径来实现。
我在 Xcode 上使用一个设置,它运行以下脚本 SwiftLint
if which $PATH/swiftlint >/dev/null; then
$PATH/swiftlint
elif which $HOME/.brew/bin/swiftlint >/dev/null; then
$HOME/.brew/bin/swiftlint
elif which ~/Softwares/homebrew/bin/swiftlint >/dev/null; then
~/Softwares/homebrew/bin/swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
Run Code Online (Sandbox Code Playgroud)
我无法使用 pods或酿造。
为了使其SwiftLint可用,我使用 vim 将以下内容添加到我的路径中~/.bash_profile
export PATH
export PATH=$PATH:/Users/me/Documents/SwiftLint
Run Code Online (Sandbox Code Playgroud)
我现在可以SwiftLint通过命令行访问任何地方。
但是,Xcode 仍然显示未安装 SwiftLint 的消息。
我无法使用其他方法来安装 Swiftlint 或更改脚本。我想我的导出路径有问题 - 这是什么?
我Command PhaseScriptExecution failed with a nonzero exit code经常遇到错误,我遵循了以下解决方法,但对我没有帮助。
解决方法1:钥匙串访问 -> 右键单击登录 -> 再次锁定和解锁 -> 清理 Xcode 项目 -> 再次构建
解决方法2:构建阶段 -> 目标 -> 嵌入式 Pod 框架 “仅在安装时运行脚本”
解决方法3:删除派生数据
解决方法2:清理项目并再次构建。
找到下面的日志
Library/Developer/Xcode/DerivedData/CompanyName-
bofekdusvsoagmhinknpcoyjfyoj/Build/Intermediates.noindex/CompanyName.build/Debug-
iphonesimulator/company-iOS.build/Script-2AD2DCB21F0D6514005CEF4D.sh: line 2: 20846
Segmentationfault: 11 ../BuildSupport/swift_lint_check.sh
Run Code Online (Sandbox Code Playgroud) extension CGRect {
var x: CGFloat {
set { self.origin.x = newValue }
get { return self.origin.x } > got warning this line
}
}
Run Code Online (Sandbox Code Playgroud)
警告:
隐式 Getter Violation:计算的只读属性应避免使用 get 关键字。(隐式获取器)
Swiftlint Docs 没有示例
https://realm.github.io/SwiftLint/implicit_getter.html
我该如何解决这个警告?除了忽略