Devo considerare le restrizioni aggiuntive per il linter come la rottura della compatibilità con le versioni precedenti?

5

Sto mantenendo una libreria di linter, quindi questo è fondamentalmente un insieme di regole controllate contro un codice che si può passare ad esso. Supponiamo che abbiamo la regola A che controlla alcuni set di casi.

Ora immagina che alcuni commit estendano questo set - per estensione intendo che la cardinalità del set è più grande ma non dei "vecchi" membri se ne sono andati, abbiamo appena aggiunto alcuni nuovi membri.

Per quanto riguarda l'approccio versioning semantico , come dovrei aumentare la versione minore o maggiore? La domanda si riduce a devo considerare le modifiche di questo tipo come retrocompatibili?

    
posta shabunc 30.12.2015 - 03:10
fonte

1 risposta

4

Poiché è normale utilizzare i linters come parte di controlli di integrazione continui, direi che è corretto pensare di aggiungere nuove regole di linter abilitate per impostazione predefinita come una modifica potenzialmente inefficace.

Che sia in realtà un cambiamento di rottura dipende da come ti aspetti che il tuo linter sia usato. O in termini di semere, ciò che hai definito come la tua "API pubblica".

  • Se il tuo linter è pensato per essere usato con un file di configurazione che enumera ogni singola regola che deve essere abilitata, allora è ragionevole dire che il comportamento senza un file di configurazione non ha garanzie di compatibilità con le versioni precedenti e puoi fare qualunque cosa vuoi anche nelle patch e nelle versioni secondarie.

  • Se il tuo linter è pensato per essere utilizzato con un file di configurazione che abilita e disabilita le regole, ma non enumera il set completo di regole abilitate, tutte le nuove regole aggiunte in una patch o versione secondaria devono essere disabilitate di default.

  • Se il tuo linter non ha alcun file di configurazione e può essere configurato solo tramite commenti nel codice sorgente, tutte le nuove regole che aggiungi in una patch o versione secondaria devono essere disabilitate di default.

Ad esempio, uno dei lint che il mio team utilizza al lavoro nella nostra configurazione CI è JSCS (che rientra nel secondo punto elenco) e basato su loro changelog , sono fantastici con l'aggiunta di nuove regole in versioni minori, ma quelle nuove regole sono disabilitate di default (soprattutto perché alcune di esse sono specifiche per ES6). Cambiano anche i loro "preset" in versioni minori, che sono essenzialmente insiemi alternativi di default. Dal momento che devi fare di tutto per abilitare un preset, e sarebbero una funzione piuttosto inutile se non potessero mai cambiare una volta aggiunto, è ragionevole non fornire alcuna garanzia di retrocompatibilità per loro.

    
risposta data 30.12.2015 - 11:49
fonte

Leggi altre domande sui tag