Suggerimenti sull'analisi della singola (enorme) classe C # utilizzando SonarQube e problemi correlati

1

Sto facendo uno stage in una piccola azienda che sta lavorando su parte di un sistema che gira su una base già scritta da un'altra società (molte aziende stanno lavorando sullo stesso progetto) che è fondamentalmente una traduzione 1: 1 da un vecchio sistema COBOL in tecnologia .NET. Dal momento che non hanno avuto abbastanza tempo, stanno letteralmente correndo producendo più codice funzionante possibile, quindi la qualità del codice non è elevata. L'obiettivo del mio tirocinio è quello di produrre una tesi di laurea che segua il mio lavoro in questa piccola azienda e si baserà sul refactoring di alcune funzioni o classi (tra quelle sviluppate in questa piccola azienda) seguendo le linee di base dell'ingegneria del software (principalmente schemi), il ramo a cui è correlata la mia tesi.

Per sottolineare i risultati di questo lavoro, il mio professore mi ha detto di usare un analizzatore di codici statici come SonarQube o Kiuwan, ho già configurato e ospitato su Amazon AWS un server SonarQube 7.4 funzionante.

A questo punto del mio lavoro la domanda è: come posso analizzare solo questa singola classe? Pro e Contro.

Sono davanti a 2 scelte:

1) Crea un progetto in Visual Studio per rendere questa classe autosufficiente piena di stub e mock per farla vivere da sola con lo scopo di essere analizzata prima e dopo la reingegnerizzazione.

- > Il problema principale di questa opzione è che questa classe su cui sto lavorando è composta da circa 12000 righe di codice, quindi è facile pensare che si riferisca a molte altre classi, quindi creare stub e mock sarebbe un dolore ...

2) Utilizza una funzione integrata in SonarQube, che dovrebbe consentire di escludere intere cartelle o analizzare solo file / cartelle selezionati.

- > Ho già analizzato l'intero progetto, composto da circa 350k di righe di codice usando le regole predefinite di SonarQube, mi ha dato un risultato in tutti i suoi campi (qualità, bug, sicurezza ...), il problema è che anche modificando e rendendo questo classe (su cui sto lavorando) un diamante di ingegneria, non cambierebbe molto la qualità complessiva del software (ovviamente).

La struttura:

Il progetto ha tre rami indipendenti: backend, client e comunicazioni DB, sto lavorando nella parte backend.

Il backend ha ottenuto il proprio file .sln (quello che ho usato per l'intera analisi del progetto in SonarQube), che si collega a .csproj sottoprogetti. Ho alimentato SonarQube uno di questi .csproj ed è stato in grado di analizzarlo.

Applicazione dell'opzione 2:

Nel server Sonar nelle preferenze del progetto, c'è una scheda in cui è possibile escludere ciò che NON si desidera analizzare e INCLUDERE SOLO ciò che si desidera analizzare. Dato che ero interessato alla seconda opzione, ho inserito nel campo sonar.inclusions il nome della classe che voglio analizzare, poi ho costruito il progetto, inviato il blob al server SonarQube, che l'ha analizzato e ... non è successo nulla , nella pagina del progetto di Sonar è appena apparso "Nessun progetto analizzato ancora".

Quindi le mie domande sono:

Domanda 1) Devo seguire questo modo di analizzare una singola classe con SonarQube? Alimentandolo direttamente dal progetto bug originale, o è meglio estrarre la classe, inserirla in un nuovo progetto e soddisfarla con stub e mock? Considerando la complessità di questo.

Domanda 2) A seguito di ciò che ho scritto sopra, in che modo il sonar può analizzare solo la classe che ho ricevuto? È praticamente possibile farlo? Cosa ho fatto di sbagliato?

Ho pubblicato la stessa domanda per StackOverflow, ma mi hanno detto di postarla qui!

Grazie in anticipo per tutto l'aiuto che mi darai!

    
posta Skull47 18.12.2018 - 22:24
fonte

0 risposte

Leggi altre domande sui tag