← Documents Documentation/translations/it_IT/dev-tools/clang-format.rst GitHub 원문 ↗

Linux 6.18.37 · Translations

clang-format로 커널 코드 포매팅하기

clang-format을 이용해 Linux 커널 코드와 diff를 검토하고 편집기에서 블록을 재포매팅하며 지원되지 않는 정렬과 추가 옵션을 다루는 방법을 설명합니다.

Source pathDocumentation/translations/it_IT/dev-tools/clang-format.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

clang-format.rst:1-197

clang-format은 커널 스타일 검토와 코드 이동 후 초벌 포매팅에 유용하지만 완전한 정답은 아닙니다. 가장 가까운 설정을 적용한 뒤 git diff를 사람이 검토하고, 지원하지 않는 정렬 관례와 버전별 차이는 수동으로 바로잡아야 합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. include:: ../disclaimer-ita.rst
2
3 :Original: :ref:`Documentation/dev-tools/clang-format.rst <clangformat>`
4 :Translator: Federico Vaga <[email protected]>
5
6 .. _it_clangformat:
7
8 clang-format
9 ============
10 ``clang-format`` è uno strumento per formattare codice C/C++/... secondo
11 un gruppo di regole ed euristiche. Come tutti gli strumenti, non è perfetto
12 e non copre tutti i singoli casi, ma è abbastanza buono per essere utile.
13
14 ``clang-format`` può essere usato per diversi fini:
15
16 - Per riformattare rapidamente un blocco di codice secondo lo stile del
17 kernel. Particolarmente utile quando si sposta del codice e lo si
18 allinea/ordina. Vedere it_clangformatreformat_.
19
20 - Identificare errori di stile, refusi e possibili miglioramenti nei
21 file che mantieni, le modifiche che revisioni, le differenze,
22 eccetera. Vedere it_clangformatreview_.
23
24 - Ti aiuta a seguire lo stile del codice, particolarmente utile per i
25 nuovi arrivati o per coloro che lavorano allo stesso tempo su diversi
26 progetti con stili di codifica differenti.
27
28 Il suo file di configurazione è ``.clang-format`` e si trova nella cartella
29 principale dei sorgenti del kernel. Le regole scritte in quel file tentano
30 di approssimare le lo stile di codifica del kernel. Si tenta anche di seguire
31 il più possibile
32 :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>`.
33 Dato che non tutto il kernel segue lo stesso stile, potreste voler aggiustare
34 le regole di base per un particolare sottosistema o cartella. Per farlo,
35 potete sovrascriverle scrivendole in un altro file ``.clang-format`` in
36 una sottocartella.
37
38 Questo strumento è già stato incluso da molto tempo nelle distribuzioni
39 Linux più popolari. Cercate ``clang-format`` nel vostro repositorio.
40 Altrimenti, potete scaricare una versione pre-generata dei binari di LLVM/clang
41 oppure generarlo dai codici sorgenti:
42
43 https://releases.llvm.org/download.html
44
45 Troverete più informazioni ai seguenti indirizzi:
46
47 https://clang.llvm.org/docs/ClangFormat.html
48
49 https://clang.llvm.org/docs/ClangFormatStyleOptions.html
50
51
52 .. _it_clangformatreview:
53
54 Revisionare lo stile di codifica per file e modifiche
55 -----------------------------------------------------
56
57 Eseguendo questo programma, potrete revisionare un intero sottosistema,
58 cartella o singoli file alla ricerca di errori di stile, refusi o
59 miglioramenti.
60
61 Per farlo, potete eseguire qualcosa del genere::
62
63 # Make sure your working directory is clean!
64 clang-format -i kernel/*.[ch]
65
66 E poi date un'occhiata a *git diff*.
67
68 Osservare le righe di questo diff è utile a migliorare/aggiustare
69 le opzioni di stile nel file di configurazione; così come per verificare
70 le nuove funzionalità/versioni di ``clang-format``.
71
72 ``clang-format`` è in grado di leggere diversi diff unificati, quindi
73 potrete revisionare facilmente delle modifiche e *git diff*.
74 La documentazione si trova al seguente indirizzo:
75
76 https://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reformatting
77
78 Per evitare che ``clang-format`` formatti alcune parti di un file, potete
79 scrivere nel codice::
80
81 int formatted_code;
82 // clang-format off
83 void unformatted_code ;
84 // clang-format on
85 void formatted_code_again;
86
87 Nonostante si attraente l'idea di utilizzarlo per mantenere un file
88 sempre in sintonia con ``clang-format``, specialmente per file nuovi o
89 se siete un manutentore, ricordatevi che altre persone potrebbero usare
90 una versione diversa di ``clang-format`` oppure non utilizzarlo del tutto.
91 Quindi, dovreste trattenervi dall'usare questi marcatori nel codice del
92 kernel; almeno finché non vediamo che ``clang-format`` è diventato largamente
93 utilizzato.
94
95
96 .. _it_clangformatreformat:
97
98 Riformattare blocchi di codice
99 ------------------------------
100
101 Utilizzando dei plugin per il vostro editor, potete riformattare una
102 blocco (selezione) di codice con una singola combinazione di tasti.
103 Questo è particolarmente utile: quando si riorganizza il codice, per codice
104 complesso, macro multi-riga (e allineare le loro "barre"), eccetera.
105
106 Ricordatevi che potete sempre aggiustare le modifiche in quei casi dove
107 questo strumento non ha fatto un buon lavoro. Ma come prima approssimazione,
108 può essere davvero molto utile.
109
110 Questo programma si integra con molti dei più popolari editor. Alcuni di
111 essi come vim, emacs, BBEdit, Visaul Studio, lo supportano direttamente.
112 Al seguente indirizzo troverete le istruzioni:
113
114 https://clang.llvm.org/docs/ClangFormat.html
115
116 Per Atom, Eclipse, Sublime Text, Visual Studio Code, XCode e altri editor
117 e IDEs dovreste essere in grado di trovare dei plugin pronti all'uso.
118
119 Per questo caso d'uso, considerate l'uso di un secondo ``.clang-format``
120 che potete personalizzare con le vostre opzioni.
121 Consultare it_clangformatextra_.
122
123
124 .. _it_clangformatmissing:
125
126 Cose non supportate
127 -------------------
128
129 ``clang-format`` non ha il supporto per alcune cose che sono comuni nel
130 codice del kernel. Sono facili da ricordare; quindi, se lo usate
131 regolarmente, imparerete rapidamente a evitare/ignorare certi problemi.
132
133 In particolare, quelli più comuni che noterete sono:
134
135 - Allineamento di ``#define`` su una singola riga, per esempio::
136
137 #define TRACING_MAP_BITS_DEFAULT 11
138 #define TRACING_MAP_BITS_MAX 17
139 #define TRACING_MAP_BITS_MIN 7
140
141 contro::
142
143 #define TRACING_MAP_BITS_DEFAULT 11
144 #define TRACING_MAP_BITS_MAX 17
145 #define TRACING_MAP_BITS_MIN 7
146
147 - Allineamento dei valori iniziali, per esempio::
148
149 static const struct file_operations uprobe_events_ops = {
150 .owner = THIS_MODULE,
151 .open = probes_open,
152 .read = seq_read,
153 .llseek = seq_lseek,
154 .release = seq_release,
155 .write = probes_write,
156 };
157
158 contro::
159
160 static const struct file_operations uprobe_events_ops = {
161 .owner = THIS_MODULE,
162 .open = probes_open,
163 .read = seq_read,
164 .llseek = seq_lseek,
165 .release = seq_release,
166 .write = probes_write,
167 };
168
169
170 .. _it_clangformatextra:
171
172 Funzionalità e opzioni aggiuntive
173 ---------------------------------
174
175 Al fine di minimizzare le differenze fra il codice attuale e l'output
176 del programma, alcune opzioni di stile e funzionalità non sono abilitate
177 nella configurazione base. In altre parole, lo scopo è di rendere le
178 differenze le più piccole possibili, permettendo la semplificazione
179 della revisione di file, differenze e modifiche.
180
181 In altri casi (per esempio un particolare sottosistema/cartella/file), lo
182 stile del kernel potrebbe essere diverso e abilitare alcune di queste
183 opzioni potrebbe dare risultati migliori.
184
185 Per esempio:
186
187 - Allineare assegnamenti (``AlignConsecutiveAssignments``).
188
189 - Allineare dichiarazioni (``AlignConsecutiveDeclarations``).
190
191 - Riorganizzare il testo nei commenti (``ReflowComments``).
192
193 - Ordinare gli ``#include`` (``SortIncludes``).
194
195 Piuttosto che per interi file, solitamente sono utili per la riformattazione
196 di singoli blocchi. In alternativa, potete creare un altro file
197 ``.clang-format`` da utilizzare con il vostro editor/IDE.
198

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

용도, 설정과 설치

1-51

이 문서는 이탈리아어 공통 면책 고지 `../disclaimer-ita.rst`를 포함하고 공식 원문 `Documentation/dev-tools/clang-format.rst`를 참조합니다. 번역자는 Federico Vaga이며 페이지 anchor는 `it_clangformat`입니다.

`clang-format`은 규칙과 heuristic에 따라 C, C++ 등의 코드를 포매팅하는 도구입니다. 모든 특수 사례를 완벽히 처리하지는 않지만 커널 개발에 실용적으로 사용할 만큼 충분한 결과를 제공합니다.

첫째 용도는 이동하거나 재배치한 코드 블록을 커널 스타일에 빠르게 맞추는 것입니다. 특히 복잡한 코드, 정렬, 순서 조정의 초벌 작업에 유용하며 `it_clangformatreformat` 절에서 자세히 다룹니다.

둘째 용도는 유지하는 파일, 검토 중인 변경, diff에서 스타일 오류와 오타, 개선 가능성을 찾는 것입니다. 이 검토 흐름은 `it_clangformatreview` 절에서 설명합니다.

셋째로 서로 다른 코딩 스타일을 가진 여러 프로젝트를 오가는 개발자나 커널 신규 기여자가 Linux 스타일을 따르도록 돕습니다. 결과는 출발점이며 최종 판단은 개발자 검토가 맡습니다.

기본 설정 파일 `.clang-format`은 커널 소스 루트에 있으며 Linux 커널 코딩 스타일을 최대한 근사합니다. 관련 기준은 `Documentation/translations/it_IT/process/coding-style.rst`의 `it_codingstyle` 참조입니다.

커널 전체가 완전히 같은 세부 스타일을 사용하지는 않습니다. 특정 하위 시스템이나 디렉터리에서 다른 규칙이 필요하면 하위 디렉터리에 별도 `.clang-format`을 두어 상위 설정을 덮어쓸 수 있습니다.

대부분의 Linux 배포판은 `clang-format` 패키지를 제공합니다. 패키지 저장소에서 설치하거나 LLVM/Clang 사전 빌드 바이너리를 내려받거나 소스에서 빌드할 수 있습니다. 릴리스, 사용법, 스타일 옵션 URL은 원문에 제공됩니다.

clang-format 활용 범위
Kernel sourceRead nearest .clang-format
Format block or fileProduce approximate kernel style
Inspect git diffReview tool output
Developer correctionCommit intentional changes

도구는 재포매팅과 검토를 돕지만 최종 코드 책임은 개발자에게 있습니다.

주요 사용 목적
목적적합한 상황
코드 블록 재포매팅코드 이동, 정렬, 다중 행 macro
스타일 검토유지 파일, 패치, diff의 오류 탐색
스타일 학습 보조신규 기여자와 다중 프로젝트 개발자

문서가 제시하는 세 가지 활용입니다.

설정 우선순위
위치역할
커널 소스 루트/.clang-format전체 기본 규칙
하위 디렉터리/.clang-format해당 트리에서 기본 규칙 재정의

디렉터리별 설정을 이용해 하위 시스템 차이를 반영합니다.

.. include:: ../disclaimer-ita.rst

:Original: :ref:`Documentation/dev-tools/clang-format.rst <clangformat>`
:Translator: Federico Vaga <[email protected]>

.. _it_clangformat:

clang-format
============
``clang-format`` è uno strumento per formattare codice C/C++/... secondo
un gruppo di regole ed euristiche. Come tutti gli strumenti, non è perfetto
e non copre tutti i singoli casi, ma è abbastanza buono per essere utile.

``clang-format`` può essere usato per diversi fini:

  - Per riformattare rapidamente un blocco di codice secondo lo stile del
    kernel. Particolarmente utile quando si sposta del codice e lo si
    allinea/ordina. Vedere it_clangformatreformat_.

  - Identificare errori di stile, refusi e possibili miglioramenti nei
    file che mantieni, le modifiche che revisioni, le differenze,
    eccetera. Vedere it_clangformatreview_.

  - Ti aiuta a seguire lo stile del codice, particolarmente utile per i
    nuovi arrivati o per coloro che lavorano allo stesso tempo su diversi
    progetti con stili di codifica differenti.

Il suo file di configurazione è ``.clang-format`` e si trova nella cartella
principale dei sorgenti del kernel. Le regole scritte in quel file tentano
di approssimare le lo stile di codifica del kernel. Si tenta anche di seguire
il più possibile
:ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>`.
Dato che non tutto il kernel segue lo stesso stile, potreste voler aggiustare
le regole di base per un particolare sottosistema o cartella. Per farlo,
potete sovrascriverle scrivendole in un altro file ``.clang-format`` in
una sottocartella.

Questo strumento è già stato incluso da molto tempo nelle distribuzioni
Linux più popolari. Cercate ``clang-format`` nel vostro repositorio.
Altrimenti, potete scaricare una versione pre-generata dei binari di LLVM/clang
oppure generarlo dai codici sorgenti:

    https://releases.llvm.org/download.html

Troverete più informazioni ai seguenti indirizzi:

    https://clang.llvm.org/docs/ClangFormat.html

    https://clang.llvm.org/docs/ClangFormatStyleOptions.html

파일과 변경의 스타일 검토

52-95

`it_clangformatreview` 절은 전체 하위 시스템, 디렉터리 또는 개별 파일에서 스타일 오류, 오타와 개선점을 찾는 방법을 설명합니다.

먼저 작업 디렉터리가 깨끗한지 확인한 뒤 `clang-format -i kernel/*.[ch]`처럼 대상 C와 header 파일을 제자리 포매팅합니다. 그런 다음 반드시 `git diff`로 실제 변경을 검토합니다.

Per farlo, potete eseguire qualcosa del genere::

    # Make sure your working directory is clean!
    clang-format -i kernel/*.[ch]

E poi date un'occhiata a *git diff*.

diff를 살펴보면 `.clang-format` 스타일 옵션을 개선할 근거를 얻고, 새 `clang-format` 기능이나 버전이 기존 커널 코드에 어떤 결과를 내는지도 시험할 수 있습니다.

`clang-format`은 여러 unified diff를 읽을 수 있으므로 패치와 `git diff`에 포함된 변경 줄만 쉽게 검토할 수 있습니다. 원문은 patch reformatting script 문서 URL을 연결합니다.

특정 영역을 자동 포매팅에서 제외하려면 `// clang-format off`와 `// clang-format on` marker 사이에 코드를 둘 수 있습니다.

Per evitare che ``clang-format`` formatti alcune parti di un file, potete
scrivere nel codice::

    int formatted_code;
    // clang-format off
        void    unformatted_code  ;
    // clang-format on
    void formatted_code_again;

하지만 커널 코드에 이 marker를 상시 넣는 것은 자제해야 합니다. 개발자마다 다른 `clang-format` 버전을 쓰거나 도구를 전혀 사용하지 않을 수 있어, 소스가 특정 포매터 버전에 의존하게 되기 때문입니다.

따라서 marker는 매력적인 수단이지만 `clang-format`이 커널 개발에서 널리 정착하기 전까지는 일반적인 유지 방식으로 권장되지 않습니다.

파일 스타일 검토
Ensure clean worktreeRun clang-format -i
git diffInspect every change
Good changesKeep or refine
Bad changesAdjust configuration or revert selectively

제자리 포매팅 전후를 Git으로 검증해 의도하지 않은 변경을 막습니다.

포매팅 제외 marker
Marker효과
// clang-format off이후 영역 자동 포매팅 중지
// clang-format on자동 포매팅 재개
커널 정책버전 차이 때문에 상시 사용 자제

기능과 커널 사용상의 제약입니다.

.. _it_clangformatreview:

Revisionare lo stile di codifica per file e modifiche
-----------------------------------------------------

Eseguendo questo programma, potrete revisionare un intero sottosistema,
cartella o singoli file alla ricerca di errori di stile, refusi o
miglioramenti.

Per farlo, potete eseguire qualcosa del genere::

    # Make sure your working directory is clean!
    clang-format -i kernel/*.[ch]

E poi date un'occhiata a *git diff*.

Osservare le righe di questo diff è utile a migliorare/aggiustare
le opzioni di stile nel file di configurazione; così come per verificare
le nuove funzionalità/versioni di ``clang-format``.

``clang-format`` è in grado di leggere diversi diff unificati, quindi
potrete revisionare facilmente delle modifiche e *git diff*.
La documentazione si trova al seguente indirizzo:

    https://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reformatting

Per evitare che ``clang-format`` formatti alcune parti di un file, potete
scrivere nel codice::

    int formatted_code;
    // clang-format off
        void    unformatted_code  ;
    // clang-format on
    void formatted_code_again;

Nonostante si attraente l'idea di utilizzarlo per mantenere un file
sempre in sintonia con ``clang-format``, specialmente per file nuovi o
se siete un manutentore, ricordatevi che altre persone potrebbero usare
una versione diversa di ``clang-format`` oppure non utilizzarlo del tutto.
Quindi, dovreste trattenervi dall'usare questi marcatori nel codice del
kernel; almeno finché non vediamo che ``clang-format`` è diventato largamente
utilizzato.

편집기에서 코드 블록 재포매팅

96-123

편집기 plugin을 사용하면 선택한 코드 블록을 단축키 한 번으로 재포매팅할 수 있습니다. 코드 재구성, 복잡한 구문, 여러 줄 macro의 역슬래시 정렬 등에 특히 유용합니다.

도구가 좋지 않은 결과를 낸 부분은 언제든 수동으로 고칠 수 있습니다. `clang-format` 출력은 완성본이 아니라 유용한 첫 근사치로 취급해야 합니다.

Vim, Emacs, BBEdit, Visual Studio 같은 편집기는 직접 통합을 지원합니다. Atom, Eclipse, Sublime Text, Visual Studio Code, XCode와 다른 editor·IDE도 사용할 수 있는 plugin을 찾을 수 있습니다.

블록 재포매팅 용도에는 추가 옵션으로 맞춘 두 번째 `.clang-format` 파일을 고려할 수 있습니다. 세부 옵션은 `it_clangformatextra` 절에서 다룹니다.

선택 영역 재포매팅
Select code blockInvoke editor plugin
clang-formatApply local configuration
Review resultFix exceptional cases manually

편집기 선택 영역에 포매터를 적용하고 결과를 수동 검토합니다.

편집기 통합
형태
직접 통합Vim, Emacs, BBEdit, Visual Studio
plugin 사용Atom, Eclipse, Sublime Text, VS Code, XCode

직접 지원과 plugin 검색 대상을 구분합니다.

.. _it_clangformatreformat:

Riformattare blocchi di codice
------------------------------

Utilizzando dei plugin per il vostro editor, potete riformattare una
blocco (selezione) di codice con una singola combinazione di tasti.
Questo è particolarmente utile: quando si riorganizza il codice, per codice
complesso, macro multi-riga (e allineare le loro "barre"), eccetera.

Ricordatevi che potete sempre aggiustare le modifiche in quei casi dove
questo strumento non ha fatto un buon lavoro. Ma come prima approssimazione,
può essere davvero molto utile.

Questo programma si integra con molti dei più popolari editor. Alcuni di
essi come vim, emacs, BBEdit, Visaul Studio, lo supportano direttamente.
Al seguente indirizzo troverete le istruzioni:

    https://clang.llvm.org/docs/ClangFormat.html

Per Atom, Eclipse, Sublime Text, Visual Studio Code, XCode e altri editor
e IDEs dovreste essere in grado di trovare dei plugin pronti all'uso.

Per questo caso d'uso, considerate l'uso di un secondo ``.clang-format``
che potete personalizzare con le vostre opzioni.
Consultare it_clangformatextra_.

지원되지 않는 커널 정렬 관례

124-169

`clang-format`은 커널 코드에서 흔한 몇 가지 관례를 지원하지 않습니다. 자주 사용하면 어떤 결과를 피하거나 무시해야 하는지 쉽게 익힐 수 있습니다.

첫 사례는 여러 단일 행 `#define`의 값 열을 맞추는 정렬입니다. 커널 원문은 macro 이름 뒤 공백으로 숫자 열을 맞추지만 포매터는 공백을 하나로 줄일 수 있습니다.

In particolare, quelli più comuni che noterete sono:

  - Allineamento di ``#define`` su una singola riga, per esempio::

        #define TRACING_MAP_BITS_DEFAULT       11
        #define TRACING_MAP_BITS_MAX           17
        #define TRACING_MAP_BITS_MIN           7

    contro::

        #define TRACING_MAP_BITS_DEFAULT 11
        #define TRACING_MAP_BITS_MAX 17
        #define TRACING_MAP_BITS_MIN 7

두 번째 사례는 구조체 지정 초기화자의 등호를 세로로 맞추는 방식입니다. `file_operations` 예제에서 커널 스타일은 `.owner`, `.open`, `.read` 등의 `=` 위치를 정렬하지만 포매터는 각 이름 바로 뒤에 공백 하나와 등호를 둡니다.

  - Allineamento dei valori iniziali, per esempio::

        static const struct file_operations uprobe_events_ops = {
                .owner          = THIS_MODULE,
                .open           = probes_open,
                .read           = seq_read,
                .llseek         = seq_lseek,
                .release        = seq_release,
                .write          = probes_write,
        };

    contro::

        static const struct file_operations uprobe_events_ops = {
                .owner = THIS_MODULE,
                .open = probes_open,
                .read = seq_read,
                .llseek = seq_lseek,
                .release = seq_release,
                .write = probes_write,
        };

두 출력 모두 C 의미는 같지만 기존 파일의 시각적 관례와 diff 크기에 영향을 줍니다. 자동 결과를 그대로 적용하지 말고 주변 코드 스타일을 기준으로 필요한 정렬을 복원해야 합니다.

지원 부족 사례
사례커널 관례포매터 경향
단일 행 #define값 열 세로 정렬macro 이름 뒤 공백 하나
지정 초기화자등호 열 세로 정렬field 바로 뒤 등호

커널 관례와 기본 포매터 결과의 차이입니다.

지원되지 않는 형식 처리
Run clang-formatInspect alignment changes
Compare surrounding kernel styleConvention differs?
YesRestore intended alignment manually
NoKeep formatted output

자동 결과를 주변 코드와 비교해 필요한 정렬을 수동 복원합니다.

.. _it_clangformatmissing:

Cose non supportate
-------------------

``clang-format`` non ha il supporto per alcune cose che sono comuni nel
codice del kernel. Sono facili da ricordare; quindi, se lo usate
regolarmente, imparerete rapidamente a evitare/ignorare certi problemi.

In particolare, quelli più comuni che noterete sono:

  - Allineamento di ``#define`` su una singola riga, per esempio::

        #define TRACING_MAP_BITS_DEFAULT       11
        #define TRACING_MAP_BITS_MAX           17
        #define TRACING_MAP_BITS_MIN           7

    contro::

        #define TRACING_MAP_BITS_DEFAULT 11
        #define TRACING_MAP_BITS_MAX 17
        #define TRACING_MAP_BITS_MIN 7

  - Allineamento dei valori iniziali, per esempio::

        static const struct file_operations uprobe_events_ops = {
                .owner          = THIS_MODULE,
                .open           = probes_open,
                .read           = seq_read,
                .llseek         = seq_lseek,
                .release        = seq_release,
                .write          = probes_write,
        };

    contro::

        static const struct file_operations uprobe_events_ops = {
                .owner = THIS_MODULE,
                .open = probes_open,
                .read = seq_read,
                .llseek = seq_lseek,
                .release = seq_release,
                .write = probes_write,
        };

추가 기능과 스타일 옵션

170-197

기본 설정은 현재 커널 코드와 포매터 출력의 차이를 최소화하기 위해 일부 스타일 옵션과 기능을 비활성화합니다. 작은 diff는 파일과 패치 검토를 단순하게 합니다.

특정 하위 시스템, 디렉터리 또는 파일의 기존 스타일이 다르면 일부 옵션을 켜는 편이 더 나은 결과를 낼 수 있습니다.

예시 옵션은 연속 대입 정렬 `AlignConsecutiveAssignments`, 연속 선언 정렬 `AlignConsecutiveDeclarations`, 주석 문장 재배치 `ReflowComments`, `#include` 정렬 `SortIncludes`입니다.

이 옵션들은 파일 전체를 일괄 변경하기보다 개별 블록을 재포매팅할 때 유용한 경우가 많습니다. 또는 편집기·IDE 전용의 별도 `.clang-format` 설정을 만들 수 있습니다.

추가 스타일 옵션
옵션효과
AlignConsecutiveAssignments연속 대입문의 등호 정렬
AlignConsecutiveDeclarations연속 선언의 요소 정렬
ReflowComments주석 텍스트 줄바꿈 재구성
SortIncludes#include 순서 정렬

원문이 예로 드는 선택 기능입니다.

추가 설정 선택
Start from kernel root configurationNeed local style options?
NoKeep minimal-diff defaults
YesCreate local or editor-specific .clang-format
Apply to selected blocksReview diff

기본 diff 최소화와 지역 스타일 최적화 사이에서 범위를 정합니다.

.. _it_clangformatextra:

Funzionalità e opzioni aggiuntive
---------------------------------

Al fine di minimizzare le differenze fra il codice attuale e l'output
del programma, alcune opzioni di stile e funzionalità non sono abilitate
nella configurazione base. In altre parole, lo scopo è di rendere le
differenze le più piccole possibili, permettendo la semplificazione
della revisione di file, differenze e modifiche.

In altri casi (per esempio un particolare sottosistema/cartella/file), lo
stile del kernel potrebbe essere diverso e abilitare alcune di queste
opzioni potrebbe dare risultati migliori.

Per esempio:

  - Allineare assegnamenti (``AlignConsecutiveAssignments``).

  - Allineare dichiarazioni (``AlignConsecutiveDeclarations``).

  - Riorganizzare il testo nei commenti (``ReflowComments``).

  - Ordinare gli ``#include`` (``SortIncludes``).

Piuttosto che per interi file, solitamente sono utili per la riformattazione
di singoli blocchi. In alternativa, potete creare un altro file
``.clang-format`` da utilizzare con il vostro editor/IDE.