рдУрд▓реЗрдЧ рдЗрд╡рд╛рдиреЛрд╡, рджреВрд░рд╕реНрде рд╕реЗрд╡рд╛ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдорддрд╛ рдХреЗрдВрджреНрд░ рдХреЗ рдкреНрд░рдореБрдЦ
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЬреИрд╕рд╛ рдХрд┐ "ICD рдореЛрдмрд╛рдЗрд▓ рдмреИрдВрдХ: рд╡рд┐рдХрд╛рд╕ рдЗрддрд┐рд╣рд╛рд╕" рд▓реЗрдЦ рдореЗрдВ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдЬ рдореИрдВ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдФрд░ рдмреИрдВрдХ рдХреЗ iOS рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВредрдЖрдЗрдП рдЙрд╕ рд▓рдХреНрд╖реНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕ рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:- рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдХрдорд┐рдпреЛрдВ рдХрд╛ рд╢реАрдШреНрд░ рдкрддрд╛ рд▓рдЧрд╛рдирд╛;
- Code Style ( тАФ , ).
рд╣рдорд╛рд░реЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдХреЛрдб - рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рд╣реИ редрдкрд░реАрдХреНрд╖рдХ рдпрд╛ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд╡реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдпрд╛ рдХреЛрдб рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рд╕рдордп рдмрд╛рдж (!) рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рд╕рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд▓рдВрдмреА рдФрд░ рдорд╣рдВрдЧреА рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрднрд░ рд░рд╣реА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрд╢рд╛ рдПрдХ рдорд╛рдирд╡реАрдп рдХрд╛рд░рдХ рд╣реЛрддрд╛ рд╣реИ - рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдмрд╕ рд╕рдореАрдХреНрд╖рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдпрд╣рд╛рдБ рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВредрд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░- рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдХрдорд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВредрд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдПрдХ рд░рд╛рдордмрд╛рдг рдпрд╛ рдореИрдиреБрдЕрд▓ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪреЗрдХрд┐рдВрдЧ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдкреИрдЯрд░реНрди рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЗрд╡рд▓ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдврд╝реЗрдЧреАредрд╣рдорд╛рд░реА iOS рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо SwiftLint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВредSwiftLint рдПрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛрдб рдСрдЯреЛ-рдЪреЗрдХрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдЪрд▓рддреА рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдЖрдкрдХреЗ рдХрд╕реНрдЯрдо рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реЗрдЯ рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЛрдб рд╕реНрдЯрд╛рдЗрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ?рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реЛрддрд╛ рд╣реИ: рдЖрдк рдЕрдкрдиреА рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЛрдб рдХреЛ рд╡рд╣рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдПрдХ рдмрдбрд╝реА рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдбрд╛рд▓рдиреЗ рдХреА рдЬрдЧрд╣ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЦреЛрдЬрдиреЗ рдХреА рдЧрддрд┐ рд╣реИредрдФрд░ рдпрд╣рд╛рдВ рд╕рднреА рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдПрдХ рдмрд╛рд░ рдлрд┐рд░, SwiftLint рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред рдФрд░ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдПрдХ рд╕реБрдЦрдж рд░реВрдк рд▓реЗрдЧрд╛ рдЬреЛ рдЯреАрдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдп рдХреЛ рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛:
рдЙрдкрдХрд░рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ редSwiftLint рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИ:- рдлрд▓реА 'SwiftLint' рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЙрдбрдлрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ "рд░рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░рдг" рдЬреЛрдбрд╝реЗрдВред
"${PODS_ROOT}/SwiftLint/swiftlint"
- SwiftLint .swiftlint.yml
- .swiftlint.yml , SwiftLint
рдпрджрд┐ SwiftLint рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдзреИрд░реНрдп рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА SwiftLint рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд╣ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХреЛрд╖реНрдардХ рдореЗрдВ рднреА, рдпрд╣ рдЙрд╕ рдирд┐рдпрдо рдХрд╛ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╢реБрд░реВ рдХреА рдереА (рд╕рдВрдЪрд╛рд▓рдХ_рд╕реЗрдЬ_рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕) редрдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпреЗ рд╣реИрдВ:рдСрдкрд░реЗрдЯрд░ рдЙрдкрдпреЛрдЧ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк
рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рд╕реЗ рдШрд┐рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд╣реА рдХреЛрдб:
рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХреЛрдб:
: рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИрдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ : operator_usage_whitespaceрдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ : рд╡рд┐рдХрд▓рд╛рдВрдЧрд╕рдорд░реНрдерди рд╕реНрд╡рдд: рд╕реБрдзрд╛рд░ :рд╣рд╛рдВрдкреНрд░рдХрд╛рд░ : рд╢реИрд▓реАрд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдирд┐рдпрдо : рд╕реНрд╡рд┐рдлреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдХреЛрдИрдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ : 3.0.0рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди : рдЪреЗрддрд╛рд╡рдиреА "рд╕реНрд╡рд┐рдлреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг" рдкрд░рдзреНрдпрд╛рди рджреЗрдВ - рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдпрдореЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд░реЗрдВред "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди"
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдпрдореЛрдВ рдХреЛ рдХреИрд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛: рдпрд╛ рддреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдЪреЗрддрд╛рд╡рдиреА, рдпрд╛ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐, рдЬреИрд╕реЗ рдХрд┐ рдлрд╝реЛрд░реНрд╕ рдХрд╛рд╕реНрдЯ рдирд┐рдпрдо (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди: рддреНрд░реБрдЯрд┐) рд╕рднреА рдирд┐рдпрдо рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рдЪрд┐рддреНрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВредрдиреАрдЪреЗ рдореИрдВ рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдЕрдкрдиреА рдЯреАрдо рдореЗрдВ рдЪреБрдирд╛ рд╣реИ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрд╣рдордиреЗ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рд╢реИрд▓реАрдЧрдд рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ - рд╣рд╛рдВ, рд╣рд╛рдВ, рд╣рд╛рдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд╛рди, рдФрд░ рд╕рдорд╛рдкрди рдкреИрд░рд╛рдореАрдЯрд░ рдЙрджреНрдШрд╛рдЯрди рдХреЛрд╖реНрдардХ рдХреЗ рд╕рдорд╛рди рд▓рд╛рдЗрди рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ ... :)ред рдореИрдВ рдирд┐рдпрдореЛрдВ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛, рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдХрд╛рд░реНрдпрд╛рддреНрдордХ :- private_outlet- force_unwrapping- force_cast- force_try- strong_iboutlet- private_action- block_based_kvo- contains_over_first_not_nil- discarded_notification_center_observer- discouraged_direct_init- discouraged_object_literal- discouraged_optional_boolean- discouraged_optional_collection- duplicate_imports- dynamic_inline- empty_count- empty_parameters- empty_parentheses_with_trailing_closure- empty_string- explicit_enum_raw_value- function_default_parameter_at_end- generic_type_name- identical_operands- implicit_getter- is_disjoint- notification_center_detachment- nsobject_prefer_isequal- redundant_set_access_control- unused_capture_listрдХреА рд╢реИрд▓реА :- unneeded_parentheses_in_closure_argument- let_var_whitespace- yoda_condition- рдкреЗрдЯ- рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо- closure_parameter_position- closure_spacing- collection_alignment- leading_whitespace- рдорд╛рд░реНрдХ- opening_brace- operator_usage_whitespace- operator_whitespace- protocol_property_accessors_order- return_arrow_whitespace- switch_case_alignment- statement_position- trailing_comma- trailing_newline- unneeded_break_in_switch- custom_rules- closure_end_indentation- file_name_no_space- unowned_variable_capture- no_space_in_method_call- contains_over_filter_count- contains_over_filter_is_empty- contains_over_range_nil_comparison- duplicate_enum_cases- empty_collection_literalрднреА рдПрдХ рд▓рдХреНрд╖реНрдп SwiftLint рдХреА рд╣рдо рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ .swiftlint.yml рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕реЗрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рд╣реА рд╕реВрдЪреА рдЪреБрдирд╛ рд╣реИ:рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- <рдХреЛрдб рдмреЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛>рд╣рдо рдЕрдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рдпрдо рдмрдирд╛рдпрд╛ рд╣реИ рдкреНрд░рд┐рдВрдЯ рдХрд╛рд░реНрдпред рдкреНрд░рд┐рдВрдЯ рдПрдХ рдмрд╣реБрдд рдХрдард┐рди рдСрдкрд░реЗрд╢рди рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ .swiftlint.yml рдлрд╝рд╛рдЗрд▓:custom_rules:
disable_print:
included: ".*\\.swift"
name: "print usage"
regex: "((\\bprint)|(Swift\\.print))\\s*\\("
message: "Prefer os_log over print"
severity: error
рдЗрд╕ рдирд┐рдпрдо рдиреЗ рд╣рдореЗрдВ рдЕрдкрдирд╛ рд▓реЙрдЧрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди (рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде) рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рддреНрд╡рд░рд┐рдд рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ, рдЕрдиреБрд░реЛрдз / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ .none рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реЙрдЧ рд╕реНрддрд░ред рдкреНрд░рд┐рдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдХреА рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАредfunc logApp(level: Constants.LogLevel, items: Any...) {
if Constants.logLevel == .none {
return
}
if level.rawValue <= Constants.logLevel.rawValue {
// swiftlint:disable disable_print
if let strings = items as? [String] {
for string in strings {
print(string)
}
} else {
print(items)
}
// swiftlunt:enable disable_print
}
рд▓реЗрдХрд┐рди рдкреНрд░рд┐рдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХреЛрдб рдмреНрд▓реЙрдХ рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдлреНрдЯрд▓рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрд╕рдХреА рдХреЙрд▓ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рд╛ред// swiftlint:disable disable_print
// swiftlunt:enable disable_print
SwiftLint рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ:// swiftlint:disable <rule1 [rule2 rule3тАж]>
<, SwiftLint rule1 [rule2 rule3тАж]>
// swiftlunt:enable <rule1 [rule2 rule3тАж]>
рдпрд╛// swiftlint:disable all
<, SwiftLint >
// swiftlint:enable all
рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ!рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ : рд╣рдорд╛рд░реА рдЯреАрдо рдореЗрдВ рд╕реНрд╡рд┐рдлреНрдЯрд▓рд┐рдВрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдиреЗ рдореИрдиреБрдЕрд▓ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА рд▓рд╛рдЧрдд рдХреЛ 20% рдХрдо рдХрд░ рджрд┐рдпрд╛ред рдЕрдм рд╣рдорд╛рд░реЗ рд╕рдореАрдХреНрд╖рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ (рдлреЛрд░реНрд╕ рдХрд╛рд╕реНрдЯ, рдЖрджрд┐), рдХреЛрдб рд╕реНрдЯрд╛рдЗрд▓ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдирдП рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рд╕рдиреЗ рд╕рдордЧреНрд░ рдЯреАрдо рджрдХреНрд╖рддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рдХреА (рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпреЗ рдпреЛрдЧреНрдп рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рд╕рдордп рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)редрд╕рдм! рдЕрдм SwiftLint рд╣рдореЗрд╢рд╛ рддреБрдореНрд╣рд╛рд░реЗ рд╕рд╛рде рд╣реИ :)