Bene, dopo un po 'suonare in giro e cosa no, ho una soluzione. Ho usato this article per venire a questa soluzione. Io uso StyleCop, quindi dovrai installarlo e installarlo. Quindi, puoi scaricare il mio progetto C# MathematicsAnalyzer.
Prima di tutto, non ho tenuto conto di tutti i disallineamenti di conversione del tipo. In effetti, accolgo solo una parte.
Fondamentalmente, controllo se la riga contiene "double" seguito da uno spazio. So che questo potrebbe portare a falsi allarmi, perché la fine di una classe potrebbe essere doppia o un numero qualsiasi di altre cose, ma la lascerò a voi per capire come isolare correttamente il tipo.
Se viene trovata una corrispondenza, controllo per vedere che corrisponde a questa espressione regolare:
double[ ][A-Za-z0-9]*[ ]?=(([ ]?[0-9]*d[ ]?/[ ]?[0-9]*;)|[ ]?[0-9]*[ ]?/[ ]?[0-9]*d;)
Se lo fa -non- corrispondere a questo regex, poi aggiungo una violazione. Ciò che corrisponde a questa espressione regolare è uno dei seguenti:
- double i = 4d/100;
- doppio i = 4d/100;
- doppio i = 4/100d;
- doppio i = 4/100d;
- doppio i = 4/100d;
- doppio i = 4/100d;
- doppio i = 4d/100;
- doppio i = 4/100d;
- doppio i = 4/100d;
Qualsiasi dei precedenti non creerà una violazione. Come è scritto al momento, praticamente se non viene usata una "d", verrà lanciata una violazione. È necessario aggiungere una logica aggiuntiva per tenere conto degli altri possibili modi di trasmettere esplicitamente un operando. Mentre sto scrivendo questo, mi sono appena reso conto che avere una "d" su entrambi gli operandi genererebbe molto probabilmente un'eccezione. Ops.
Infine, non sono riuscito a far sì che StyleCop visualizzasse correttamente la mia violazione. Continuava a darmi un errore riguardo alla regola non esistente, e anche con un secondo paio di occhi su di esso, non siamo riusciti a trovare una soluzione, quindi l'ho hackerato. L'errore mostra il nome della regola che stavi cercando, quindi ho inserito il nome della regola come qualcosa di descrittivo e incluso il numero della riga.
Per installare la regola personalizzata, creare il progetto MathematicalAnalyzer. Chiudi Visual Studio e copia la DLL nella directory di installazione di StyleCop. Quando apri Visual Studio, dovresti vedere la regola nelle impostazioni di StyleCop. I passaggi 5 e 6 dell'articolo che ho usato mostra dove farlo.
Questo ottiene solo una violazione alla volta per tutta la soluzione, quindi dovrai correggere la violazione che mostra, ed eseguire nuovamente StyleCop per trovare quello successivo. Potrebbe esserci un modo per aggirare questo, ma ho finito il succo e mi sono fermato qui.
Divertiti!
Dipende dal compilatore che si sta utilizzando. I messaggi di errore e gli avvertimenti non sono una funzione incorporata del linguaggio, ma qualcosa che il compilatore aggiunge. Se il compilatore che stai utilizzando non lo supporta, allora no, non è possibile. – Hoeloe
C'è un [biglietto dell'uservoice] (http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2813345-add-a-warning-when-promoting-the-result-of-integer) che chiede per questa caratteristica. –
Sto usando il compilatore C# fornito con .NET 4.0 e Visual Studio 2010. – Larry