Come integrare il codice generato modificato nel processo di compilazione?

2

Sto usando un generatore di codice che ha il seguente flusso di lavoro:

  1. Configura cose
  2. Genera codice
  3. Modifica il codice generato con il codice utente in posizioni specificatamente annotate.

Se sono necessarie modifiche alla configurazione, il codice utente rimarrà dopo aver generato nuovamente il codice poiché le posizioni annotate non sono state modificate dal generatore di codice.

Il mio problema è, come inserisco correttamente questo controllo in versione e in un processo di compilazione?

Idea 1

Inserisci la configurazione e il codice generato con le modifiche dell'utente nel controllo della versione. Questo è il più facile da integrare con gli attuali strumenti di compilazione. Tuttavia, la configurazione e il codice generato potrebbero divergere. Per attenuarlo, il processo di generazione potrebbe generare nuovamente il codice e verificare che sia uguale al codice eseguito.

Idea 2

Metti solo la configurazione e le modifiche dell'utente nel controllo della versione. In questo modo, nessun file generato viene memorizzato nel controllo di versione. Il codice utente dovrebbe quindi essere sviluppato in qualche modo separatamente e automaticamente integrato nel codice generato successivamente.

Per curiosi, il generatore di codice è Dave 2 , anche se non è molto pertinente per la domanda.

Secondo me, questa domanda è ontopica, perché riguarda l'utilizzo di uno strumento in un flusso di lavoro di sviluppo software .

    
posta Frank Kusters 25.11.2015 - 09:12
fonte

1 risposta

1

Osservare completamente il principio Non ripetere te stesso significherebbe che non devi memorizzare alcuna informazione due volte nel tuo repository. Se generi automaticamente il codice sorgente (o qualsiasi altro tipo di file) e poi lo aggiusti ulteriormente, l'unico modo per conformarsi pienamente è quello di memorizzare i modelli che guidano il generatore, oltre a una diff tra il suo output e i file reali che vuoi .

Ma DRY non è una legge cosmica. È un'idea che l'esperienza ha dimostrato di avere molto merito in molti casi. Il fatto che abbia o meno un valore nel caso tuo dipende dai dettagli del tuo codice base. Riesci spesso a far funzionare il generatore? L'output è enorme? C'è molto pericolo che tu possa dimenticare di applicare nuovamente una delle modifiche in una futura iterazione? Quelle sono il tipo di domande a cui hai bisogno di rispondere per decidere se essere completamente A SECCO, o se rompere deliberatamente quel principio, sapendo che i suoi contrappesano i suoi pro in questo caso .

    
risposta data 25.11.2015 - 09:18
fonte

Leggi altre domande sui tag