Formattazione automatica della sorgente Xcode


179

Come sviluppatore C #, sono diventato fortemente dipendente dalla formattazione automatica in Visual Studio 2008. In particolare, userò la scorciatoia da tastiera CTRL+ K, Dper forzare le cose a rimettersi in forma dopo la mia sciatta implementazione.

Ora sto cercando di imparare Objective-C e mi mancano alcune funzionalità in Xcode, ma probabilmente nessuna è così dolorosa come la scorciatoia di formattazione. Le mie ricerche su Google non hanno prodotto nulla di integrato, anche se sembra che ci siano alcuni hack. Mi manca qualcosa o questa funzione non esiste in modo nativo in Xcode?


1
Ci sono alcuni link buoni a soluzioni di scripting Xcode nelle risposte a questa domanda SO
nTutte

Grazie per il link Ho trovato anche questo: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode Copre sostanzialmente la stessa tecnica del tuo link. Ci proverò e vedrò come funziona.
jslatts,

1
Soluzione di terze parti che utilizza UniversalIndentGUI: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode
jslatts

Simile a questa domanda; la risposta ha una voce di menu e una scorciatoia da tastiera per rientrare nel rientro del codice: stackoverflow.com/questions/3558709/…
Basil Bourque

2
c'è stata qualche innovazione da parte di Apple negli ultimi 5 anni su questo? Questa domanda è ancora pertinente o XCode è ora una nuova e migliore soluzione per formattare il codice?
mm24

Risposte:


134

Sfortunatamente, Xcode non ha nulla di così vasto come VS o Jalopy per Eclipse disponibile. Esistono ALCUNE funzionalità diverse, Structure > Re-Indentcome la formattazione automatica utilizzata quando si incolla il codice nel file di origine. Sono totalmente con te, comunque; sicuramente ci dovrebbe essere qualcosa lì dentro per aiutare con problemi di formattazione.


3
Grazie, almeno so che non mi manca qualcosa. L'identificazione automatica aiuta a attenuare il dolore, ma dovrò cercare una soluzione di terze parti.
jslatts,

5
questo non dovrebbe essere selezionato come risposta. la risposta di seguito da @ken è corretta
Ryan Angilly

@RyanAngilly Nota l'anno in cui è stata data una risposta a questa domanda. Da allora molte cose sono cambiate con Xcode. ;-)
Marc W

1
@RyanAngilly ken ha solo descritto come eseguire il rientro automatico. Non è ciò che significa "formato" (con spazi bianchi, aggiunta e rimozione di nuova riga e cose del genere).
Dergab,

5
Il rientro può essere corretto con control-i, che indenterà tutte le righe selezionate.
zaph,

427

Questo è Ctrl+ i.

O per bassa tecnologia, taglia e poi incolla. Si riformatterà su incolla.


Grazie! Questo è utile, soprattutto perché il menu in realtà non mostra la scorciatoia da tastiera.
jslatts,

37
Ma questo fa solo rientro. Che dire di spostare le parentesi graffe, occuparsi delle interruzioni di linea, ecc.?
Peter Ajtai,

14
Non dovrebbe essere accettato in quanto non esegue tutte le cose che un formattatore di codice gestirà. Rientra semplicemente,
powerj1984,

1
Bel consiglio. Lame extra che XCode non ha questo.
AndrewK,

4
si @ powerj1984. Sono anche deluso da questo. Non aggiunge spazi adeguati dopo ,, =o altri operatori. Quello che fa solo intento. Nient'altro. Il Mac deve davvero imparare da Microsoft qui.
Shashwat,

35

Vorrei raccomandare due opzioni che vale la pena considerare. Sia abbastanza nuovo che in evoluzione.

ClangFormat-Xcode (gratuito) - su ogni file cmd + s viene riformattato in uno stile specifico e salvato, facile da distribuire all'interno del team

Un plug-in Xcode per formattare il codice utilizzando gli strumenti di formattazione di Clang, di @travisjeffery.

Con clang-format puoi usare Clang per formattare il tuo codice su stili come LLVM, Google, Chromium, Mozilla, WebKit o la tua configurazione.

Objective-Clean (a pagamento, non l'ho ancora provato) - l'app genera errori di compilazione se vengono violate regole di stile predefinite - probabilmente abbastanza difficile da usare all'interno del team, quindi non l'ho provato.

Con una configurazione molto minima, puoi ottenere Xcode per utilizzare la nostra app per applicare le tue regole. Se vieni sorpreso a violare una delle tue regole, Xcode genererà un errore di generazione e ti porterà direttamente alla linea offensiva.


Come si crea la propria configurazione del formato con questo plugin?
nbro,

27

In xcode, puoi usare questa scorciatoia per rientrare nel rientro del tuo codice sorgente

Vai al file, che presenta problemi di rientro e segui questo:

  • Cmd+ Aper selezionare tutti i codici sorgente

  • Ctrl+ Iper rientrare nel rientro

Spero che questo ti aiuti.


18

Il mio preferito personale PrettyC wantabe non è giustificato: http://uncrustify.sourceforge.net/ . Ha qualche miliardo di opzioni, quindi ti suggerisco anche di scaricare UniversalIndentGUI_macx, (anche su sourceforge) una GUI che qualcuno ha scritto per aiutarti a impostare le opzioni nel modo che preferisci.

È quindi possibile aggiungere questo script utente personalizzato per non giustificare il testo selezionato:

#! /bin/sh
#
# uncrustify!
echo -n "%%%{PBXSelection}%%%"
/usr/local/bin/uncrustify -q -c /usr/local/share/uncrustify/geo_uncrustify.cfg -l oc+ <&0
echo -n "%%%{PBXSelection}%%%"

Ho avuto problemi con non giustificato, specialmente con i blocchi di formattazione.
Liron Yahdav,

12

Puoi usare Command+ Aper selezionare tutto il contenuto e successivo Ctrl+ Iper formattare il contenuto selezionato.



8

Cmd A + Ctrl I

Oppure Cmd AE poi tasto destro . Vai a struttura -> Ri-rientra


6

Prendi in considerazione l'acquisto di una licenza per AppCode , un IDE Objective-C intelligente che aiuta gli sviluppatori iOS / OS X. AppCode è pienamente compatibile con Xcode, ma va oltre Xcode per l'aggiunta di potenti funzionalità .

AppCode una variante Objective-C dell'IDE IDEA Intellij di JetBrains . Sono anche autori della famosa estensione ReSharper di Visual Studio, il cui scopo principale da qui sembra un disperato tentativo di apportare un tocco di esperienza IDEA a un prodotto Microsoft.

AppCode utilizza il proprio analizzatore di codice che offre un refactoring quasi perfetto e un supporto di navigazione del codice. Esiste la possibilità di rientrare di nuovo e riformattare completamente il codice (anche se manco ancora un paio di impostazioni di formattazione in casi difficili, ma per lo più funziona bene).

Potresti provare la versione di prova, ovviamente.



4

Potresti provare quel plugin XCode https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

Basta clonare il repository github, aprire il progetto plugin in XCode ed eseguirlo. Verrà installato automaticamente. Riavvia Xode prima di utilizzare il plug-in formatter.

Non dimenticare di installare util non giustificato prima. Homebrew, per esempio

brew install uncrustify

PS È possibile attivare la funzione "dopo il salvataggio della formattazione" in Modifica> Codice formato> Preferenze BBUncrustifyPlugin> Formato su Salva

Spero che questo ti sia utile ;-)



3

CTRL + i

questo è tutto.

(no COMMAND+ i)


6
Questa è stata menzionata come risposta già 4 volte - leggi le altre risposte prima di rispondere.
fishinearin

Inoltre, CMD + i è lo stesso che andare su Prodotto -> Profilo che non è lo stesso della formattazione.
inga,

3

Suggerisco di usare ClangFormat. Per installare, seguire questi passaggi:

  1. Installa il gestore pacchetti Alcatraz per XCode Supporta Xcode 5+ e OS X 10.9+
  2. Dopo l'installazione riavviare XCode.
  3. Apri XCode -> Menu Finestra -> Gestione pacchetti
  4. Cerca (trova) ClangFormat e installalo. Dopo l'installazione, riavviare XCode.
  5. Ora nel menu XCode è possibile utilizzare il sottomenu Modifica -> Formato clang per la formattazione.

Puoi scegliere diversi tipi di formattazione. Inoltre, abilitando il formato su Salva è possibile ottenere la formattazione automatica.

inserisci qui la descrizione dell'immagine


1
Questo non è più disponibile su XCode 8+
Nathan F.

Sì, hai ragione @NathanFiscaletti Ho aggiornato da 7.2 a 9.2 e la soluzione non funziona più. Ma ho trovato una soluzione. Aggiungerò un nuovo post!
csonuryilmaz,

Ho installato Alcatraz ma il plug-in ClangFormat non è più supportato su Xcode 9. github.com/travisjeffery/ClangFormat-Xcode/issues/129
csonuryilmaz

1

Se il tuo Xcode versione 3.x, dovresti usare "User Script" con Uncrustify , qui questo un esempio:

#!/bin/sh

echo -n "%%%{PBXSelection}%%%"
$YOURPATH_TO_UNCRUSTIFY/uncrustify -q -c $YOURPATH_TO_UNCRUSTIFY_CONFIG/CodeFormatConfig.cfg -l OC+
echo -n "%%%{PBXSelection}%%%"

aggiungi sopra al tuo Xcode "User Script".

se Xcode versione 4.x, penso che dovresti leggere questo blog: formattazione del codice in Xcode 4 ,

In questo modo, utilizzato i "Servizi Apple", ma non è abbastanza buono, causa un'esperienza troppo lenta, qualcuno ha la stessa cosa?

perché Apple rilascia "script utente" .... xD


1

Innanzitutto, esamina la sezione "Rientro" delle preferenze di XCode. Puoi personalizzare le cose un po 'lì ...

Per un controllo più accurato, consultare il documento Predefiniti utente XCode da apple. (Potrebbe essere necessario un login sviluppatore per visualizzare). Ad esempio, sono stato in grado di disabilitare "indent on paste" inserendo quanto segue nel terminale:

defaults write com.apple.XCODE PBXIndentOnPaste No

per rileggere le impostazioni:

defaults read com.apple.XCODE PBXIndentOnPaste

1

Questo funziona solo per le lingue con gli spazi bianchi non delineati, ma la mia soluzione è quella di rimuovere tutti gli spazi bianchi tranne gli spazi, quindi aggiungere una nuova riga dopo i caratteri che di solito delineano EOL (ad esempio sostituire ';' con '; \ n') quindi eseguire l'onnipresente ^ + i soluzione.

Uso Python.

Codice di esempio, basta sostituire i nomi dei file:

python -c "import re; open(outfile,'w').write(re.sub('[\t\n\r]','',open(infile).read()).replace(';',';\n').replace('{','{\n').replace('}','}\n'))"

Non è perfetto (esempio: per i loop), ma mi piace.


1

Possiamo usare Xcode Formatter che usa non giustificato per formattare facilmente il tuo codice sorgente come il tuo team vuole esattamente essere !.

Installazione Il modo consigliato è clonare il progetto GitHub o scaricarlo da https://github.com/octo-online/Xcode-formatter e aggiungere la directory CodeFormatter nel progetto Xcode per ottenere: Formattazione del codice basata sul collegamento Xcode: un collegamento a formatta le fonti modificate nello spazio di lavoro corrente formattazione automatica del codice: aggiungi una fase di compilazione al tuo progetto per formattare le fonti correnti quando l'applicazione crea tutta la formattazione delle fonti: formatta tutto il tuo codice con una riga di comando le regole di formattazione condivise dal progetto: modifica e usa una stessa configurazione file con il tuo team di sviluppo del progetto 1) Come impostare il formattatore del codice per il tuo progetto Installa non giustificato Il modo più semplice è usare brew: $ brew install uncrustify

Per installare brew: $ ruby ​​–e “$ (curl –fsSkl raw.github.com/mxcl/homebrew/go)”

Controlla che uncrustify si trovi in ​​/ usr / local / bin $ e che non sia giustificato

Se la versione non giustificata è inferiore a 0.60, potrebbe essere necessario installarla manualmente poiché la sintassi Objective-C moderna è stata aggiunta di recente. Aggiungi la directory CodeFormatter accanto al tuo file .xcodeproj

Verificare che l'applicazione Xcode sia denominata "Xcode" (nome predefinito) È possibile visualizzare questo nome nella directory Applicazioni / (o nella directory di installazione Xcode personalizzata). Fai attenzione se hai più istanze di Xcode sul tuo mac: assicurati che quello del progetto sia effettivamente chiamato "Xcode"! (Perché questo? Questo nome viene usato per trovare i file Xcode attualmente aperti. Vedi CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript). Installa il servizio di automazione Uncrustify_opened_Xcode_sources.workflow Copia questo file nella tua cartella ~ / Library / Services / (crea questa cartella se necessario). Fai attenzione: facendo doppio clic sul file .workflow, lo installerai ma il file verrà rimosso! Assicurati di lasciarne una copia per gli altri utenti.

Come formattare i file aperti durante la creazione del progetto Aggiungi una fase di compilazione "esegui script" contenente la seguente riga:

sh CodeFormatter / scripts / formatOpendSources.sh

Come formattare i file nella riga di comando

Per formattare i file attualmente aperti, utilizzare formatOpenedSources.sh:

$ sh CodeFormatter / scripts / formatOpendSources.sh

Per formattare tutti i file, utilizzare formatAllSources.sh:

$ sh CodeFormatter / scripts / formatAllSources.sh PATH

PERCORSO deve essere sostituito dal percorso delle fonti.

Per esempio; se il nome del progetto è TestApp, il comando sarà

$ sh CodeFormatter / scripts / formatAllSources.sh TestApp

cercherà tutti i file nel progetto e formatterà tutti i file come configurato nel file uncrustify_objective_c.cfg.

Come cambiare le regole del formatter

Modifica CodeFormatter / uncrustify_objective_c.cfg aperto con TextEdit


0

Beh, stavo cercando un modo semplice. E scoprilo su supporto .

Innanzitutto per copiare il testo JSON e convalidarlo su JSONLINT o qualcosa di simile. Quindi per copiare da jsonlint, già il json è formattato. E incolla il codice su Xcode mantenendo il formato, scorciatoia shift+ option+ command+v


-1

Puoi vedere e modificare qualsiasi collegamento in questo percorso: Xcode -> Preferenze -> Key Bindings.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.