2016-06-13 15 views
5

Come sviluppatore C# ho beneficiato dell'analisi del codice di Microsoft. In F # tuttavia, l'analisi del codice non sembra essere parte integrante del ciclo di sviluppo. Mi ci è voluto un po 'per abilitare CA su un progetto F #, ma questo blog helped. Ora che ho abilitato la CA, sembra che produca avvertimenti "sbagliati". Ad esempio, ho dichiarato un tipo di record comeAnalisi del codice in F #

type Account = {Number : string} 

per il quale prevedo l'uguaglianza strutturale per impostazione predefinita. This blog dimostra che due istanze di tipo Acconto, per le quali il numero è uguale, devono essere uguali. Perché l'analisi del codice mi dice che: 'Account' dovrebbe definire l'operatore '! =' Dal momento che implementa IComparable? Di sicuro, se fosse stata una classe C#, avrei dovuto saltare tutti quei cerchi, ma in F # ciò dovrebbe accadere automaticamente.

Applico il set di regole "Microsoft All Rules". Non si applicano a F # e, in caso affermativo, esiste un set di regole che dovrei usare?

+1

Tali norme sono finalizzate a C#. Presuppongono solo che stai usando C# e ti danno avvertimenti appropriati per questo. Sei sicuro di aver davvero bisogno di quelle regole? Nella mia esperienza con F # ho scoperto che il linguaggio stesso mi guida nella giusta direzione, non ho bisogno di strumenti esterni per questo. –

+0

Se si guarda il primo post sul blog a cui si fa riferimento, vedrete che il file 'Targets' controlla esplicitamente la lingua prima di eseguire l'analisi del codice. Non pensi che ci sia una ragione per questo? –

+1

@FyodorSoikin Sicuramente ho trovato strano che abbia dovuto modificare un file 'system-wide' per ottenere CA, ma si spera che alcune regole siano ancora rilevanti per un progetto F #. Spero anche che qualcuno che legge questa domanda mi indichi un set di regole F # che posso scaricare (se esiste una cosa del genere). – SimonAx

risposta