Come confrontare efficacemente il (quasi) stesso codice che è stato formattato automaticamente?

0

Sto cercando di dedurre le differenze tra due progetti, tuttavia finora è stato davvero doloroso, perché una delle parti ha eseguito la formattazione automatica del codice.

Fondamentalmente, questo rende uno strumento di fusione come la fusione trovare molte differenze perché la spaziatura in uno dei progetti è cambiata.

C'è un altro modo per confrontare due progetti che sono simili, ignorando le modifiche sintattiche.

Edit1:

Un'opzione per ridurre il numero di differenze mostra come usare Text Filters .

Vai a: edit - > preferences - > text filters e verifica:

  • ignora le modifiche che inseriscono o eliminano le righe vuote
  • c ++ commento
  • tutti gli spazi bianchi

e puoi aggiungere filtri personalizzati, ad esempio, per ignorare { , } .

Come "sano è farlo, non lo so ...

    
posta Kristof Pal 10.04.2016 - 19:55
fonte

3 risposte

4
  1. Crea una copia del codice legacy in modo da non modificare l'originale, chiamiamolo "Progetto A".
  2. Applica la stessa auto-formattazione a "Progetto A".
  3. Chiamiamo il codice che il tuo collaboratore ha creato automaticamente "Progetto B"
  4. Confronta "A" e "B".
risposta data 10.04.2016 - 20:53
fonte
2

Una possibilità brutale è che tu rifiuti il nuovo codice. Cambiamenti gratificanti come quello sono un dolore assoluto per il recensore. Voglio dire, non è colpa tua. La cosa peggiore è quando due sviluppatori usano la diversa formattazione automatica, quindi avrai sempre la stessa cosa. Diversi metodi di formattazione automatica non sono assolutamente accettabili se si desidera eseguire revisioni del codice.

Hai quindi due scelte. È possibile apportare una modifica intermedia al progetto che consiste esclusivamente di autoformattazione. Invece di rivedere, hai un'altra persona che esegue esattamente la stessa modifica e controlla se il tuo codice finisce per essere formattato esattamente allo stesso modo. Uno è impegnato, uno è buttato via. Il tizio con il codice autoformattato può / deve rebase a questo, e ora puoi rivedere. Tutti gli altri dovrebbero anche rebase il loro codice in tempo.

Tutto sommato, un grande dolore.

    
risposta data 10.04.2016 - 22:29
fonte
0

Ci sono due modi per risolvere questo problema, se vuoi automatizzare il confronto del codice. Questo problema si verifica spesso quando si valutano i programmi prodotti dagli studenti in classe, ad esempio. Due studenti hanno programmi simili e tentano di offuscarlo con la riformattazione.

Puoi convertire entrambe le versioni in un formato comune neutro inserendo una copia di ognuna di esse attraverso lo stesso strumento di riformattazione (a tua scelta) e quindi confrontare i file risultanti, che ora saranno formattati in modo identico. Funziona solo se è stato modificato solo il layout. Se sono state apportate modifiche sostanziali al commento o alla denominazione delle entità, è necessario utilizzare un metodo più tecnico.

Il metodo utilizzato è di analizzare ciascuna versione e confrontare il codice intermedio. Ci sono strumenti per questo. Uno di questi strumenti (disponibile in open source) è ( JPLAG ). Altri strumenti sono disponibili.

    
risposta data 11.04.2016 - 00:56
fonte

Leggi altre domande sui tag