2011-01-01 11 views
7

Sono stato occupato a refactoring di un file nel nostro progetto e come parte delle mie modifiche ho riordinato la funzione in un modo più logico. Tuttavia, ora che sto cercando di rivedere i miei cambiamenti, mi viene un problema: le applicazioni diff non hanno idea che le funzioni siano state semplicemente riordinate e segna l'80% del contenuto del file come modificato.Le applicazioni di diffusione impazziscono se le funzioni nel file sono state riordinate

Ho provato a vedere il diff con entrambi "Beyond Compare" e "WinMerge" allo stesso risultato. C'è qualche impostazione che potrebbe aiutarmi qui?

Come taggato, sto usando C# su Windows.

+2

Esiste un'opzione di spazio vuoto ignorata? Potrebbe essere in basso a schede vs spazi. –

+3

se hai iniziato il refactoring con SOLO funzioni di riordino (cioè senza modifiche effettive), allora dovresti essere sicuro del tuo cambiamento. –

+0

@Alex: Sì, c'è, ma non sembra essere d'aiuto. – VitalyB

risposta

3

BeyondCompare (e probabilmente anche altri strumenti) ha una funzione in cui è possibile scegliere una linea e selezionare quale linea nell'altro file utilizzare come riferimento. In questo modo puoi almeno confrontare ogni metodo uno per uno. A seconda di quanti metodi hai questo potrebbe essere un'opzione. Tuttavia richiede ancora un lavoro manuale e probabilmente tedioso.

L'altro modo semplice sarebbe quello di riorganizzare i metodi senza cambiare nulla e il controllo in. Poi, una volta si ha la classe riarrangiato è possibile utilizzare uno strumento di diff per tutte le modifiche apportate all'interno di ogni metodo.

+0

Punto buono @ Riferimento di linea. Grazie! – VitalyB

1

Quello che ti serve è uno strumento che capisca le strutture del codice (espressioni, dichiarazioni, dichiarazioni, funzioni) e il tipo di operazioni che fai a loro: inserisci, cancella, sposta, copia, copia-e-rinomina, ecc. sembra che tu abbia fatto un sacco di "mosse di codice". I programmi di diffetti testuali per definizione non possono farlo.

Il nostro Smart Differencer può farlo per molte lingue: C#, C++, COBOL, Java, PHP, ... Riporta le differenze in termini di costrutti linguistici ed è preciso per la riga/colonna.

+0

Il tuo sito non sembra elencare alcuna informazione sui prezzi. –

+0

Né vedo un collegamento per il download ... – VitalyB

+0

@Joe White: Beh, c'è * una * pagina dei prezzi facilmente reperibile dai menu a discesa del sito. C'era * un * problema tecnico nella pagina dei prezzi riguardante i prezzi di Smart Differencer; questo è risolto ora. –

2

Le differenze di testo tradizionali si basano solo sul contenuto testuale. Per questo motivo vedi l'80% del contenuto del file come modificato.

Plastic SCM ha un differenziatore intelligente chiamato xdiff. È in grado di trovare differenze nel codice spostato o refactored. Dai un'occhiata a this post per ulteriori informazioni su XDiff. Funziona anche per il supporto merge.

Plastic SCM è una soluzione SCM completa. È possibile installarlo e utilizzare solo lo strumento diff/merge.

+0

Ho installato Plastic SCM, ma non vedo il file binario "XDiff" che hai menzionato. Intendi forse "binmergetool.exe"? – VitalyB

+0

@VitalyB: Lo strumento diff/merge è mergetool.exe. XDiff è solo una funzionalità. Puoi avviarlo e selezionare i file manualmente. Ma puoi anche autenticare il processo. Funziona come strumento diff quando si passano due argomenti (file sinistro e destro) e uno strumento di unione se si passano 4 argomenti (origine, destinazione, base, file di risultati). Binmergetool.exe è lo strumento di unione binaria. È usato per gestire diffs/merges tra immagini e file binari. –

+0

Oh. Fatto. Ci proverò. Grazie! – VitalyB

Problemi correlati