ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
- Π€ΠΎΡΠΌΠ°ΡΠΈΡΡΠΉΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Objective-C ΠΈ Objective-C++ (`.m`, `.mm`) ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠ»ΠΈΠΊΠΎΠΌ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ clang-format ΠΎΡ LLVM Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΎΡΡΠ°ΡΠ»Π΅Π²ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ
- ΠΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ Π²ΠΎΠΊΡΡΠ³ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΡΠΈΠ³Π½Π°ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΉ ΡΡΠΈΠ»Ρ ΡΠΊΠΎΠ±ΠΎΠΊ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠΌΠΏΠΎΡΡΡ Π² ΡΠΈΡΡΠΎΡΠ΅ ΠΈ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ²
- ΠΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ legacy-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Objective-C, ΡΠΌΠ΅ΡΠ°Π½Π½ΡΡ Swift/ObjC ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΡΡΡΡΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ PR
- ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ρ ΡΠ°ΠΉΠΌΠ°ΡΡΠ°ΠΌΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π»Ρ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
π οΈ ΠΠ°ΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Objective-C for objectivec-formatter
1. ΠΡΡΠ°Π²ΡΡΠ΅ ΠΈΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ Π²Π°Ρ ΠΊΠΎΠ΄
ΠΡΡΠ°Π²ΡΡΠ΅ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Objective-C / Objective-C++ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» `.m` / `.mm`. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π΄Π»Ρ ΠΈΡ Π±ΡΡΡΡΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠΈ.
2. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ **Format**. ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ, Π³Π΄Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ clang-format Ρ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΌ ΡΡΠΈΠ»Ρ Objective-C. ΠΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Ρ.
3. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅
ΠΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΡΠ²ΠΎΠ΄, Π·Π°ΡΠ΅ΠΌ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² Xcode ΠΈΠ»ΠΈ Π²Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΡΠΈΡΡΡΠΉ ΡΠ°ΠΉΠ», ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ Π΄ΠΈΡΡΡ ΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ΅, Π° Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π΅Π»Π°Ρ .
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Objective-C / Objective-C++.
| Π’ΠΈΠΏ | ΠΡΠΈΠΌΠ΅ΡΡ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
|---|---|---|
| .m ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ | ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ | ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ. |
| .mm ΡΠ°ΠΉΠ»Ρ Objective-C++ | ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ C++ Ρ Cocoa API | Π€ΠΎΡΠΌΠ°ΡΠΈΡΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Objective-C++ Π² clang-format. |
| Π€ΡΠ°Π³ΠΌΠ΅Π½ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² | @interface Π±Π»ΠΎΠΊΠΈ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ | ΠΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π½Π°ΠΏΡΡΠΌΡΡ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ (Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π΅Ρ `.m` / `.mm`). |
ΠΠ²ΠΈΠΆΠΎΠΊ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠ°
Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ clang-format Π½Π° Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌ Π±ΡΠΊΠ΅Π½Π΄Π΅.
| ΠΡΠΏΠ΅ΠΊΡ | ΠΠ΅ΡΠ°Π»Ρ |
|---|---|
| ΠΠ²ΠΈΠΆΠΎΠΊ | LLVM clang-format (Objective-C / Objective-C++) |
| ΠΠΎΠ΄Π΅Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ | Π‘Π΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ΅ΡΠ΅Π· Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ `/api/objectivec-formatter` |
| Π’Π°ΠΉΠΌΠ°ΡΡ | ~25 Ρ Π·Π°ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠΌΠ°ΡΡΠ° Π½Π° Π·Π°ΠΏΡΠΎΡ |
| ΠΠ±Π»Π°ΡΡΡ ΡΠ΅ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ΠΡΠΎΠ±Π΅Π»Ρ, ΠΎΡΡΡΡΠΏΡ, ΡΠΊΠΎΠ±ΠΊΠΈ, Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠΎΠ² |
| Π‘Π΅ΠΌΠ°Π½ΡΠΈΠΊΠ° | ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ β ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° |
Π‘ΡΠΈΠ»Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°
ΠΠΎΠ΄ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ ΡΡΠΈΠ»Ρ clang-format.
| ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ | Π§ΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠ΅ΡΡΡ? | ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ |
|---|---|---|
| Π‘ΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² | ΠΡΠΎΠ±Π΅Π»Ρ Π²ΠΎΠΊΡΡΠ³ `-`, ΡΠΈΠΏΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ | ΠΠ΅Π»Π°Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π»Π΅Π³ΠΊΠΎ ΡΠΈΡΠ°Π΅ΠΌΡΠΌΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ . |
| ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ | ΠΡΠΎΠ±Π΅Π»Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΡΡ , Π²ΠΎΠΊΡΡΠ³ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠΉ ΠΈ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π²ΡΠ·ΠΎΠ²Π°Ρ | Π£Π»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² `-[obj doSomething:withOption:]`. |
| Π‘ΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ | Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΠ±ΠΎΠΊ Π΄Π»Ρ `@interface`, `@implementation`, `if`, `for`, `while` | ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ. |
| ΠΠΌΠΏΠΎΡΡΡ | ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΏΡΠΎΠ±Π΅Π»Ρ Π΄Π»Ρ `#import` ΠΈ `#include` | ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ. |
| ΠΡΡΡΡΠΏΡ ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ | ΠΠ΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΎΡΡΡΡΠΏΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ | Π£ΡΡΡΠ°Π½ΡΠ΅Ρ ΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΈΠ·-Π·Π° Π±ΡΡΡΡΡΡ ΡΡΡΠ½ΡΡ ΠΏΡΠ°Π²ΠΎΠΊ. |
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Objective-C Π±Π΅Π· Π·Π°ΠΌΠΎΡΠΎΠ·ΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
| Π’ΠΈΠΏ Π²Π²ΠΎΠ΄Π° | ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
|---|---|---|
| ΠΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ | ~2 ΠΠ ΡΠ΅ΠΊΡΡΠ° | ΠΠ΅ΡΡΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. |
| ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» | ~5 ΠΠ | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ `maxFileSizeBytes` ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. |
| Π’ΠΈΠΏΠΈΡΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° | < 1β2 Ρ | ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°, ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°. |
| Π Π΅ΠΆΠΈΠΌΡ ΡΠ±ΠΎΠ΅Π² | Π’Π°ΠΉΠΌΠ°ΡΡ / ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ | ΠΡΠΈΠ±ΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ΅ΡΠΊΠΎ, Π²ΠΌΠ΅ΡΡΠΎ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. |
ΠΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠΈ
Π‘Π΅ΡΠ²Π΅ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
| ΠΡΠΏΠ΅ΠΊΡ | ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ |
|---|---|
| ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° | ΠΠΎΠ΄ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ HTTPS Π½Π° Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. |
| Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ | ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅: Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π½Π΅ Ρ ΡΠ°Π½ΡΡΡΡ Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎ. |
| Π‘Π΅ΠΊΡΠ΅ΡΡ | Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π²ΡΡΠ°Π²ΠΊΠΈ API-ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π»ΡΠ±ΡΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. |
| ΠΡΡΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π½Π΅ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π±ΡΡΡΡΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠΈ; ΡΠΎΡ ΡΠ°Π½ΡΠΉΡΠ΅ CI ΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅. |
ΠΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° clang-format Π΄Π»Ρ Objective-C
ΠΠ»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ CI, clang-format Π² Π²Π°ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° Objective-C.
macOS / π§ Linux
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° `.m` Π½Π° ΠΌΠ΅ΡΡΠ΅
clang-format -i MyViewController.mΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ» Π½Π° Π΄ΠΈΡΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· `.clang-format`).
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°
clang-format MyViewController.mΠΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² stdout, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ.
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Objective-C Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅
find . -name "*.m" -o -name "*.mm" | xargs clang-format -iΠΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎ Π²ΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Objective-C / Objective-C++.
Windows
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
clang-format.exe -i MyClass.hΠΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π° ΠΌΠ΅ΡΡΠ΅ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ clang-format.
ΠΠ°ΠΏΡΡΠΊ Π² ΡΠΎΡΡΠ°Π²Π΅ ΡΠΊΡΠΈΠΏΡΠ°
forfiles /S /M *.m /C "cmd /c clang-format.exe -i @file"ΠΡΠΎΡΡΠΎΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Objective-C Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ iOS / macOS
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡΡΠΈΠ΅ Objective-C ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π½Π°ΡΡΠ΄Ρ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ Π½Π° Swift.
- ΠΡΠΈΡΡΠΈΡΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΡΡΠΏΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°ΠΌΠΈ.
- ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΡΠΈΠ»Ρ Π² ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΡΠ°ΡΡΠΈΡ ΠΈ ΠΌΠ»Π°Π΄ΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Objective-C.
- ΠΠ°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΡΠΌΠ½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² pull request'Π°Ρ .
@interface MyViewController : UIViewController
@property(nonatomic, strong) NSString *titleText;
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];NSLog(@"Loaded: %@",_titleText);}
@end
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΡΠ΅Π²ΡΡ ΠΊΠΎΠ΄Π° ΠΈ Pull Request'Π°ΠΌ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π³, ΡΡΠΎΠ±Ρ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅Π²ΡΡ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ΅.
- ΠΠ°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΊΡΡΡΠΈΠ΅ΠΌ PR, ΡΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΌ ΠΎΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ².
- Π£ΠΌΠ΅Π½ΡΡΠ°ΠΉΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΈ ΡΠΏΡΠΎΡΠ°ΠΉΡΠ΅ ΡΠ΅Π²ΡΡ, ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΡΡ ΡΡΠΈΠ»Ρ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΈ ΠΎΡΡΡΡΠΏΠΎΠ².
- Π‘ΠΎΠΊΡΠ°ΡΠ°ΠΉΡΠ΅ ΡΠΏΠΎΡΡ ΠΎ ΡΡΠΈΠ»Π΅, Π΄Π΅Π»Π΅Π³ΠΈΡΡΡ ΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΠΏΡΠΎΡΠΈΠ»Ρ clang-format.
// ΠΠ΅ΡΠ΅Π΄ ΡΠ΅Π²ΡΡ: Π½Π΅ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ
if(showAlert){[self showAlertWithMessage:message];}
// ΠΠΎΡΠ»Π΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
if (showAlert) {
[self showAlertWithMessage:message];
}
β Frequently Asked Questions
π οΈΠΠ°ΠΊΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠΈ?
πΠΠ°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ?
πΠΠΎΠ³Ρ Π»ΠΈ Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°?
πΠ‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΡΠ΅ΡΡΡ Π»ΠΈ ΠΌΠΎΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄?
HTTPS Π½Π° Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ½ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠ°ΠΊ Π»ΡΡΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ², ΡΡΠ΅ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ.β οΈΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°?
πΠΠΎΠ³Π΄Π° ΠΌΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π²Π΅Π±-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΠΌΠ΅ΡΡΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ clang-format?
Pro Tips
ΠΠ°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΈΡΡΡ pull request Π±ΡΠ»ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Ρ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π° Π½Π΅ Π½Π° ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠΊΠΎΠ±ΠΎΠΊ.
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°Π³ `clang-format` Π² Π²Π°Ρ CI (ΠΈΠ»ΠΈ pre-commit Ρ ΡΠΊ), ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠΈΠ»Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΡ ΠΎΠ΄ΠΈΠ»ΠΈ Π΄ΠΎ ΠΊΠΎΠ΄-ΡΠ΅Π²ΡΡ.
Π‘ΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΈ Π³ΡΡΠΏΠΏΠΈΡΡΠΉΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ; ΡΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π² Π»ΡΠ±ΡΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠΎΡΠΌΠ°ΡΡΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ clang-format Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅.
Additional Resources
Other Tools
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ CSS
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ HTML
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ JavaScript
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ PHP
- ΠΡΠ±ΠΎΡ ΡΠ²Π΅ΡΠ°
- ΠΠΊΡΡΡΠ°ΠΊΡΠΎΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ²
- ΠΠ΅ΠΊΠΎΠ΄Π΅Ρ Base64
- ΠΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊ Base64
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ C#
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ CSV
- Dockerfile Formatter
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Elm
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ ENV
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Go
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ GraphQL
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ HCL
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ INI
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ JSON
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ LaTeX
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Markdown
- Php Formatter
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Proto
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Python
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Ruby
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Rust
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Scala
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ shell-ΡΠΊΡΠΈΠΏΡΠΎΠ²
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ SQL
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ SVG
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ Swift
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ TOML
- Typescript Formatter
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ XML
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ YAML
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ Yarn
- ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΎΡ CSS
- Html Minifier
- Javascript Minifier
- ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΎΡ JSON
- ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΎΡ XML
- ΠΡΠΎΡΠΌΠΎΡΡΡΠΈΠΊ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
- PDF Π² ΡΠ΅ΠΊΡΡ
- Π’Π΅ΡΡΠ΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π² SERP
- ΠΠΎΠΈΡΠΊ Whois