Come può il mio studio addin visiva rilevare gli errori di compilazione prima di costruire nello stesso modo “Rimuovi e ordinamento usings”?

StackOverflow https://stackoverflow.com/questions/2301737

Domanda

Sto facendo uno strumento di refactoring che automatizza alcune delle più banali cose codice di stile che si occupano di StyleCop. Una delle cose che mi piacerebbe il mio add-in per essere in grado di fare (come optional lo sviluppatore può attivare / disattivare) si chiamerà automaticamente il "Organizza usings -> Rimuovi e Sort" funzionalità. Si tratta di una semplice chiamata macro.

Tuttavia, il mio problema è che come vado attraverso e ricorsivamente chiamare la macro su ogni cs di file non-designer nella soluzione di questo particolare controlli macro per gli errori prima dell'esecuzione. Se c'è un errore di sintassi e il mio componente aggiuntivo inizia a chiamare tale funzionalità, getta una finestra di dialogo per ogni file.

Quello che mi piacerebbe fare, è utilizzare lo stesso metodo che funzione utilizza per la verifica di errori al volo e poi se c'è un errore che avrebbe causato la finestra di dialogo per far apparire, semplicemente pop-up una sola volta notifica e saltare le chiamate su ogni file.

So che il mio componente aggiuntivo potrebbe controllare la lista degli errori, ma ho trovato molte volte che gli errori che innescano problemi di "Rimuovere e Sort" non appaiono sempre nella lista. Ho avuto la lista sia vuota, poi cerco "Rimuovere e Sort" e mi dice che c'è costruire problemi. Ho quindi creare la soluzione e abbastanza sicuro che non riesce e gli errori sono popolate. L'unica soluzione che vedo è quello di utilizzare la stessa funzionalità "Rimuovi e ordinamento" per controllare in anticipo.

Qualcuno sa come posso rilevare gli errori di compilazione prima di costruire nello stesso modo come "Rimuovere e Sort usings"?

È stato utile?

Soluzione 2

Sembra hacky, ma a meno che qualcuno può trovare una soluzione migliore Userò un controllo sulla lista di errori, perché è meglio di niente.

Inoltre Credo di poter sperimentare mettendo un timer intorno la chiamata a "Edit.RemoveAndSort" e se ci vuole più di un certo periodo di tempo, una finestra di dialogo di una volta ricordare che assomiglia RemoveAndSort sta avendo problemi e pop-up chiede se l'utente vuole annullare, o almeno non chiamare rimuovere e sorta.

Altri suggerimenti

Non sono esattamente sicuro di che tipo di errori si sta parlando, darò per scontato che sono quelli che il parser IntelliSense genera. Sì, che parser non è molto affidabile. Non è destinata ad essere un C # parser in piena regola, è stato ottimizzato per fare un tipo molto diverso di lavoro: fornire aiuto sensibile al contesto, anche se il codice è incompleto e non può compilare. Non c'è niente che si può fare per renderlo più affidabile, altro che aspettare per il prossimo rilascio VS forse.

Ma mi colpisce il fatto che si potrebbe cercare di risolvere il problema sbagliato. La questione chiave è che il componente aggiuntivo sembra essere la rimozione utilizzando le direttive che non dovrebbero essere rimossi. Una vera e propria correzione è quello di migliorare il vostro motore di analisi del codice in modo che rileva in modo affidabile vere dipendenze dello spazio dei nomi. Cercando di indovinare quali importa da sperare che IntelliSense sta andando a lamentarsi è solo andare a vanificare il vostro cliente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top