比特币上的Swift-Lint危险

intราบสวัสดีพ่อแม่พี่น้องที่หลงเข้ามาอาาบทควนมแามแรกของผมด้วยนะครับในี้เนนจะมราจะมาพูดถึง กันแล้วถ้างั้นเรามาเริ่มกันเลยย〜


ขอยกคำพูดของเจ้าของบทความมาเลยละกันนะครับ

Lintคือ静态代码分析เป็นเครื่rank

Linามารถอ่านเพิ่มเติมได้ที่Linารู้จักกับAndroid Lint — Jedsada Tiwongvorakul

危险危险危险危险危险危险危险危险危险危险

危险会在您的CI之后发生,从而使您的团队围绕代码审查的惯例自动化。
这提供了流程中的另一个逻辑步骤,通过此Danger可以帮助您减少日常代码检查中的死记硬背任务。
您可以使用“危险”来整理团队的规范,让人们去思考更棘手的问题。

เอาเป็นว่าขอสรุปตามความเข้าใจของตัวเองก็แล้วกันนะครับ

危险危险危险危险危险

危险皮棉皮棉布好酷〜

lanรับคนที่ใช้fastlane(CI / CD工具)ในับคารทำงานอยู่แล้ว


emนส่วนของ Gemfile เป็นไฟล์ที่ใช้สำหรับบอก依赖版本เช่นLibrary,Ruby包ในภาษาRubyที่เราต้องการใช้ในโปรเจคของเราให้ทำการเพิ่มgem’danger gem 'danger' 危险工具และgem’danger gem 'danger-checkstyle_format', '~> 0.1.1' pluginน插件ของ危险工具ที่ใช้สำหรับการอ่านไฟล์Reportกคำสั่งากคำสั่งswiftlintในfastlaneเพื่อเอาผลลัพธ์ที่ได้ไปCommentแบบ内联代码บนGitHubนนเอง

ถามารถ复制代码Textอย่างด้านล่างไปใส่ในTextEditor(เช่นSublime)แล้ว保存เป็น Gemfile Gemfileได้เลยย〜

ตัวอย่างGemfile

 来源“ https://rubygems.org” 
宝石'危险'
gem'danger-checkstyle_format','〜> 0.1.1'

fileนส่วนของ Fastfile เป็นไฟล์ที่ใช้สำหรับสร้ร้างขั้นตอนการทำงาน Fastfile ให้กับส

งอย่างFastfile

  fastlane_version“ 2.3.12” default_platform:iosEncoding.default_external =编码:: UTF_8 
Encoding.default_internal =编码:: UTF_8
平台:ios dobefore_all做

结束
desc“检查并生成swiftlint.result.xml报告皮棉文件”
车道:checking_by_lint做
swiftlint(
模式::lint,#SwiftLint模式::lint(默认)或:autocorrect
output_file:“ ./swiftlint.result.xml”,#输出文件的路径(可选)
记者:“ checkstyle”,#要使用的自定义记者(可选)
config_file:“ .swiftlint.yml”,#配置文件的路径(可选)
ignore_exit_status:true,#即使SwiftLint返回非零退出状态,也允许快速通道继续(默认值:false)
quiet:true,#不打印状态日志,如“ Linting”和“ Done linting”(默认值:false)
严格:错误#警告失败? (默认值:false)

endafter_all做|车道|
#仅当执行的车道成功时才调用此块
结束
错误|通道,异常|
#松弛(
#消息:exception.message,
#成功:错误
#)
结束
结束

swiftlint iftามารถดูได้จากfastlane / swiftlint

angerนเป็นของ Dangerfile เป็นไฟล์ที่ใช้สำหรับตั้งค่าการทำงานของDangerรวมถึงตั้งค่า/เรียกใช้插件ต่างๆของDangerนั้นยังสามารถกำหนดruleสำหรับการPR(拉取请求)และแสดงผลลัพธ์ผ่าน评论ในGitHubได้อีกด้วย

危险危险系统

งอย่างDangerfile

  #忽略差异差异范围内的内联消息 
github.dismiss_out_of_range_messages
#更清楚地知道PR正在开发中,尚不应该合并
如果github.pr_title.include?警告(“ PR被列为进行中的工作”)? “ [WIP]”或github.pr_labels.include?(“ WIP”)
#当有大公关时发出警告
如果git.lines_of_code> 300,则警告(“大公关”)
如果git.lines_of_code> 500,则发出警告(“大公关”)
如果git.lines_of_code> 700,则发出警告(“巨大PR”)
如果git.lines_of_code> 1000,则发出警告(“ Freakin Huge PR”)
#皮棉
checkstyle_format.base_path = Dir.pwd
checkstyle_format.report'swiftlint.result.xml'

sนส่วนขอเป็ .swiftlint.yml ไฟล์ที่ใช้สำหรับการตั้งค่าและกำหนดเงื่อนไขสำหรับการทำงานของคำสั่งswiftlint

swiftlintได้ที่realm / SwiftLintามารถศึกษารายละเอียดคำสั่งต่างๆของ

งอย่าง。swiftlint.yml

  disabled_rules:#排除运行中的规则标识符 
#—冒号
#—逗号
#— control_statement
—cyclomatic_complexity
opt_in_rules:#有些规则仅适用于
#— empty_count
#通过运行以下命令查找所有可用规则:
#swiftlint规则
included:#在棉绒中包含的路径。 `-path`被忽略。
— SwiftLintDanger
排除:#掉毛过程中忽略的路径。 优先于“ included”。
—迦太基
—豆荚
—源/排除的文件夹
— Source / ExcludedFile.swift
— Source / * / ExcludedFile.swift#使用通配符排除文件
analyser_rules:#由swiftlint analytics运行的规则(实验性)
—explicit_self
#可从此配置文件中自定义可配置规则
#二进制规则可以设置其严重性级别
force_cast:警告#隐式
force_try:
严重性:警告#明确
#同时具有警告和错误级别的规则,可以仅设置警告级别
#隐式
line_length:350
#他们可以使用数组隐式设置两者
type_body_length:
— 30​​0#警告
— 400#错误
#或者他们可以显式设置两者
file_length:
警告:500
错误:1200
#命名规则可以为min_length和max_length设置警告/错误
#另外,他们可以设置排除的名称
类型名称:
min_length:1#只警告
max_length:#警告和错误
警告:40
错误:50
排除:iPhone#通过字符串排除
标识符名称:
min_length:仅#个
错误:3#仅错误
排除:#通过字符串数组排除
- ID
— URL
— GlobalAPIKey
记者:“ checkstyle”#记者类型(xcode,json,csv,checkstyle,junit,html,emoji,sonarqube,markdown)

มากเตรียม GemfileFastfileDangerfile และ .swiftlint.yml ก็ทำ .swiftlint.yml บร้อยแล้ว推送代码ขึ้นRepository

งนส่วนของ Podfile ั้นงกันจะคล้ายๆกับ Gemfile แตกต่างกันตรงที่จะเรียกใช้依赖จากคนละที่กันซึ่ง Podfile จะเรียกผ่านhttps://cocoapods.orgส่วน Gemfile จะเรียกผ่านhttps://rubygems.org

hiddenาถึงตรงนี้หากFinderท่านใดมองไม่เห็น隐藏文件ให้ทำตามนี้ได้เลยครับ在macOS上显示/隐藏隐藏文件


ี้ผมจะใช้นบทความนี้ผมจะใช้CIของbitriseและUIื่ดูเป็นมิตรกับผู้ใช้ครับอที่ง่อ Free( mium )! ลรับคนที่ยังไม่เคยลองใช้นั้นลองสักครั้งแล้วจะติดใจนะอิอิ

ที่ใช้รับคนที่ใช้GitHubอาับคนและนบาม步骤การับครั้รับรกกรอก用户名,密码และข้อมูลที่ใช้rise rise rise rise rise rise rise rise rise rise rise ส่วนตัวอีกนิดๆหน่อยๆก็เป็นอันจบพิธี

DาDรเสร็จเรียบร้อยแล้วหน้าDashboardของเราก็จะเป็นประมาณนี้

เพิ่ม项目bitาโดนbitriseโดยกดที่添加您的第一个应用หรือสำหรับคนที่ใช้bitriseอยู่แล้วก็จะมีปุ่ม添加新应用ในหนหาDashboardครับ

มอทำตาม步骤การ创建新应用เรียบร้อยแล้วbitrise setupารsetupทั้ง部署密钥,WebhooksในGitHub GitHub로เป็นอะไรที่สะดวกมากครับ

项目>工作流> bitrise.yml แล้วเพิ่ม代码ดังต่อไปนี้ด้านล่าง workflows:

  SwiftLintDanger:步骤:-activate-ssh-key:run_if:'{{getenv“ SSH_RSA_PRIVATE_KEY” |  ne“”}}'-git-clone:{}-script:run_if:“ .IsPR”输入:-is_debug:'是'-内容:|-#!/ bin / bashset -exbrew install swiftlintbundle install- fastlane:inputs :-车道:iOS的ios_by_lint-脚本:run_if:“ .isPR”输入:-is_debug:'是'-内容:|-#!/ bin / bashset -ex#正在运行Dangerbundle exec 

เพิ่มรือจะทำการเพิ่ม工作流程เองผ่านทาง工作流程ของbitriseก็ได้ครับ

ขั้นตอนการทำงานที่เราจะใช้คือ

  1. 激活SSH密钥
  2. Git克隆存储库
  3. 酿造安装swiftlint
  4. 捆绑安装
  5. Fastlane iOS检查_by_lint
  6. 捆绑执行程序危险

ไปเพิ่มอนที่Danger angerานได้นั้นให้เราไปเพิ่ม个人访问令牌ในGitHubโดยเข้าที่ 设置>开发人员设置>个人访问令牌 เพื่อจะนำ令牌ที่ได้ไปให้เจ้าDangerใช้สำหรับการ评论ในGitHubั่นเข้นเอง

นำtokenที่ได้มาใส่ใน Project>工作流程> Env Vars โดยใช้键DANGER_GITHUB_API_TOKEN ติ๊ก替换输入中的变量? ให้เป็นสีเขียว

RequestากนPullนPullารตั้งค่า触发器สำหรับการPull请求ในGitHubเพื่อที่จะให้CIทำการรันlintทุกครั้งที่มีการขอPRในGitHubและทำการ审查代码ให้โดยอัตโนมัติผ่านDangerนั้นเองโดยเข้าไปที่ Project>工作流程>触发器>在源分支和目标分支中添加触发器

ี้าถึงตรงนี้CIก็พร้อมสำหรับการทำงานแล้วครับเย้!〜


โดยการใส่代码เพิ่มเข้าไปสำหรับการtestโดยใส่

  var username:字符串? 

Viewนหน้าViewController Controllerน้าตาก็จะประมาณนี้

intยที่ถ้าผ่านlintแล้วlintจะทำการตรวจสอบ源代码ไฟล์ามเงื่อนไขที่ได้กำหนดไว้ในไฟล์ .swiftlint.yml intยในที่นี้จะแก้เป็นี้จะแก้เป็นดังนี้

  var用户名:字符串?  > var用户名:字符串? 

pushากนั้นทำการ推送代码ขึ้นใน分支ใหม่ยโดนี้จะใช้ชื่อtest / lint

เข้ากนั้นทำการขอPRเข้าใน分支主管แล้วเรามาดูการทำงานของCIกันน〜

CIทำงานน!


งรามาintารทำงานของSwift-LintและDangerกันน!

iftนได้ว่าคำสั่งswiftlintในfastlaneทำการตรวจสอบ源代码sารเปลี่ยนแปลงให้ตามเงื่อนไขที่ได้กำหนดไว้ในไฟล์ .swiftlint.yml จากนั้นจะสร้าง报告ขึ้นมาเป็นไฟล์ที่ swiftlint.result.xml Danger มนำ举报มาแสดงให้ใน评论ของGitHubนนเองเองเองเอง〜

(าถึงตรงนี้หากท่านใดทำการPR(Pull Request)แล้วbitriseไม่ทำงานตามTriggersที่ได้กำหนดไว้ให้ลองดูในส่วนของWebhooksบนGitHub( Project> Settings> Webhooks )ว่าได้เปิดในส่วนของPR(Pull Request) ไปรือไม่ถ้าไม่ได้เปิดไว้ก็สามารถกดเข้าไป编辑แล้วเลือกในส่วนของ拉取请求ได้เลยครับ


เป็นยังไงกันบ้างครับน่าจะเป็นบทความที่ยาวมากๆไม่รู้ว่าอ่านแล้วจะเข้าใจกันไหมนะฮ่าๆ


intากที่ได้ลองใช้มาสักระยะหนึ่งก็พบว่าlint intยลดภาระให้คนPนReviewerในตอนPR(拉请求)ได้เยอะมากแทนที่Reviewerจะมานั้งรวจสอบcodeเองทุกครั้งก็ยกให้เป็นหนบา้องlintจัดการ ไปเลยีกทั้งังทำให้ขะะะมที่ะะมะะะะะะint int int int int int int ได้แ ะนำไปก็ไม่มีประโยชน์อะไรที่จะใช้ครับ


Commandากใครลงswiftlintไว้ในเครื่องลงผ่าน(命令行ด้วยคำสั่ง brew install swiftlint )สามารถใช้

  swiftlint自动更正[PATH] 

ผ่าน命令行ได้ด้วยนะซึ่งคำสั่งนี้จะทำหน้าที่ในการเปลี่ยน代码ตามมาตรฐานของlintให้เองโดยอัตโนมัติ! sาน เงื่อนไขที่ได้กำหนดไว้ในไฟล์ .swiftlint.yml ตอนPR(请求)หรือไม่ก็อีกเรื่องหนึ่งนะจ๊ะ

sามารถตรวจสอบเงื่อนไขในไฟล์ .swiftlint.yml ได้โดยใช้คำสั่ง

  swiftlint皮棉 

ผ่าน命令行ใน文件夹ที่ที่ .swiftlint.yml注释

Swiftรับใครที่ยังไม่เข้าใจสามาถเข้าราถเข้างProject SwiftLintDanger


สุดท้ายนี้หวังว่าบทความนี้คงจะมีประโยชน์ไม่มากก็น้อยนะครับหากมีข้อผิดพลาดประการใดก็ขออภัยมาณนี้ด้วยนะครับผม

สุดท้ายของสุดท้ายยังไงม้าก็แพ้ลาเพราะลาไปก่อนสวัสดีครับ