Indentazione automatica in C ++ (stile automatico) in un team IDE multiplo

3

Esiste un modo conveniente e sostenibile per gestire il rientro del codice e lo stile in una squadra in cui più IDE (Emacs, XCode, VS) sono utilizzati da programmatori diversi?

Stiamo usando git, quindi dovremmo usare un hook precommit o dovremmo integrare direttamente l'auto-formattatore nell'IDE di ogni sviluppatore? Penso che il primo sia un'opzione migliore poiché offre agli sviluppatori la libertà di utilizzare uno stile personalizzato, ma complica un po 'il processo e mi sembra che sia più soggetto a errori.

Tuttavia, una soluzione che utilizza un file di configurazione potrebbe avere senso. In questo modo possiamo mettere il file di configurazione nella radice del progetto e prima di ogni push (o ogni salvataggio) il codice viene automaticamente ri-strutturato.

Questo è un problema reale perché un codice che sembra ottimo su un IDE sembra un pasticcio sull'altro. Questo non è solo un problema di spazio / tab.

    
posta Halil ŞEN 25.08.2016 - 11:37
fonte

5 risposte

4

Ci sono alcune opzioni.

Molti sistemi di controllo delle versioni offrono la possibilità di eseguire script su un commit. Git, dal momento che lo menzioni specificamente, ha hook pre-commit . Ma non è univoco per Git - Subversion ha gli hook pre e post , come fa Mercurial , e anche ClearCase ha un certo livello di abilità di scripting. È possibile utilizzare questi per chiamare automaticamente un formattatore di codice. Ognuno può configurare il proprio IDE (e persino scegliere di riformattare il codice al momento del pagamento) a proprio piacimento, ma l'hook e lo strumento si riformatteranno prima di controllarlo in modo che la versione nel repository corrisponda allo stile di codifica.

Se la tua lingua non ha un buon autoformatter, potrebbe avere un linter che supporta le regole di stile. In tal caso, gli sviluppatori potrebbero aver bisogno di rinunciare alle loro convenzioni di stile personalizzate e adottare le linee guida del team per conto proprio, prima di un commit. Utilizzando i ganci di commit o un server CI, è possibile bloccare le unioni su un ramo principale che non soddisfa le linee guida sulla qualità. Puoi agganciare i linters, gli strumenti di analisi statici e i tuoi test unitari e richiedere che tutto sia accettabile o rischi che una build sia contrassegnata come non riuscita.

Se i tuoi sviluppatori utilizzano IDE, spesso gli strumenti di formattazione sono incorporati. Se uno sviluppatore crea uno stile, può essere solitamente esportato e condiviso tra altri sviluppatori che utilizzano lo stesso IDE. Se lo sviluppatore utilizza un editor di testo incentrato sulla programmazione, potrebbero esserci modi per eseguire l'autoformattazione o l'hook in strumenti di autoformattazione. Se ci sono file di configurazione per i tuoi strumenti, puoi esportarli e controllarli in controllo di versione (separati dal tuo progetto) e che servirebbero anche come una versione catturata della tua guida di stile, permettendoti di assicurarti che sia pronto -date.

    
risposta data 25.08.2016 - 16:09
fonte
2

Utilizziamo un trigger che esegue automaticamente lo Stile artistico prima di ogni check-in. Se i singoli sviluppatori non mantengono lo stile coerente, il problema scompare prima che qualcun altro lavori sul codice.

Stile artistico

    
risposta data 25.08.2016 - 15:31
fonte
2

Il codice che sta bene su un IDE dovrebbe apparire bene su un altro IDE. Se non lo è, qualcuno sta mischiando schede e spazi o qualcosa di ugualmente sbagliato. Invece di provare a risolvere il problema in post, eliminalo nel tuo codice:

  1. Usa solo le schede, o usa solo spazi, per il rientro. Avere tutti gli IDE impostati per far rispettare questo.
  2. Non appendere i rientri se usi le schede (a mio avviso: non provare ad allineare verticalmente nulla tranne che per indicare l'ambito, ma mi rendo conto che altri lo fanno in modo diverso).
risposta data 25.08.2016 - 16:43
fonte
0

Abbiamo usato i file di configurazione memorizzati per IDE diversi. Come "se usi Eclipse, importa questo file delle preferenze per farlo formattare il codice come richiesto dal nostro stile di codice".

Aiuta anche ad avere le modeline vim ed emacs all'inizio di ogni file. Per ogni evenienza.

    
risposta data 25.08.2016 - 17:58
fonte
0

Esaminiamo i pro e i contro di ciascun approccio:

Git hook script

  • Pro:
    • Automatico (facile da usare)
    • IDE-agnostic
  • Contro:
    • Più difficile da configurare
    • Non ha alcun giudizio sugli spazi bianchi (come il rientro sporgente)
    • Il codice commit è diverso dalla copia locale - local viene sovrascritto

Accordo verbale sullo standard

  • Pro:
    • Consente al programmatore di applicare il giudizio sullo spazio bianco (come il rientro sporgente)
  • Contro:
    • Richiede il giochino con ogni IDE

Che cosa preferisci tu e il tuo team?

    
risposta data 07.09.2016 - 07:57
fonte

Leggi altre domande sui tag