2008-09-15 18 views
10

Ho l'obbligo di fare una grande quantità di codice MISRA compatibile.
Prima domanda: qualcuno può fornire una stima per il passaggio di codice ben scritto per sistemi incorporati in base all'esperienza. Capisco che "ben scritto" è mal definito e vago quindi chiedo la stima grezza.
Seconda domanda: qualsiasi suggerimento per lo strumento che può essere personalizzabile (consentendo l'eliminazione di avvertenze specifiche) e utilizzato nell'ambiente di compilazione automatico (interfaccia della riga di comando i.e)
Qualsiasi altro suggerimento utile che possa essere d'aiuto con questa attività.
Grazie Ilya.Misra standard per software incorporato

+0

Questa domanda dipende molto da quale versione di MISRA è necessaria. L'ultima versione del 2012 non ha ancora il supporto degli strumenti di molte aziende. – Lundin

risposta

12

Consiglio vivamente anche PC-Lint. Se ti capita di compilare il tuo codice con Visual Studio, ti consiglio un plug-in 'Visual Lint' da Riverblade. Se non riesci a compilare il codice in Visual Studio, puoi comunque eseguire PC-Lint dalla riga di comando con buoni risultati.

Alcuni compilatori di sistemi incorporati forniscono test di conformità MISRA come avvisi del compilatore. Io uso il compilatore IAR per lo sviluppo Arm7/Arm9. Fornisce una semplice lista di controllo di conformità MISRA direttamente nell'impostazione del compilatore.

È difficile elaborare una regola empirica per stimare il tempo necessario per rendere conforme un codice ben scritto MISRA. Molto dipende dalle abitudini di codifica esistenti dei programmatori e da quanto strettamente seguono le regole MISRA in primo luogo.

Stime approssimative:
2 - 3 giorni per diventare esperti nell'utilizzo di PC-Lint.
Passaggio iniziale per rendere conforme il codice MISRA esistente: dal 10 al 25 percento del tempo impiegato per scrivere il codice in primo luogo.
Codice di conservazione MISRA conforme: dal 5 al 10 percento aggiunto allo sviluppo del codice. La metà di questo costo sta cambiando le abitudini dei tuoi programmatori per seguire il "modo MISRA" di fare le cose. L'altra metà è il costo aggiuntivo del test e dell'ispezione del codice per garantire la conformità MISRA.

+0

Si noti che nessuno di questi strumenti supporta MISRA-C: 2012. Recentemente ho chiesto allo IAR se l'hanno supportato e non sembravano nemmeno essere a conoscenza dell'esistenza di una nuova versione ... – Lundin

+0

Detto questo, consiglierei di procurarmi uno strumento economico come Lint. Fornirà centinaia di falsi allarmi, ma lo saranno anche i presunti analizzatori statici "all'avanguardia" che costano una fortuna. Strumenti costosi come LDRA och Klocwork sono ugualmente buggy come Lint quando si tratta di controllare MISRA. – Lundin

4

Uso PC Lint per l'analisi statica del codice C e C++. Può essere configurato per mostrare quali regole MISRA sono state violate e ha un'interfaccia a riga di comando.

8

Rendere il codice conforme a Misra non è un compito eccessivo, se si seguono procedure di programmazione abbastanza buone. Potresti trovare alcune delle regole del puntatore leggermente complicate, se il codice che stai cercando di rendere conforme ha qualche aritmetico puntatore strano e meraviglioso.

Vorrei la raccomandazione di Greg per PC Lint, ma vale anche la pena vedere Splint open source, anche se tra loro (e il sistema di avviso del compilatore), ritengo che sarai ancora in grado di coprire solo l'80% delle regole di Misra - il resto dovrà probabilmente essere sottoposto a revisione del codice a mano.

3

Ho utilizzato uno strumento commerciale denominato QAC. Lo strumento è in grado di far rispettare MISRA

Dispone di un'interfaccia della riga di comando, quindi è possibile configurarlo per l'esecuzione da un ambiente di compilazione automatizzato. Le regole da applicare sono configurabili, ma aspettati che qualcuno spenda un po 'di tempo per settarlo. L'applicazione MISRA è piuttosto semplice e ha funzionato abbastanza bene. Mi è stato detto (e questa è solo una terza mano) che questo è uno degli strumenti che alcune agenzie (come la FDA) usano per valutare il codice. Come la maggior parte degli strumenti di analisi statica, c'è del rumore (falsi positivi) da gestire. L'ultima volta che l'ho usato, non aveva un buon mezzo per contrassegnare/fermare un falso positivo di nuovo (senza cambiare il codice di cui si lamentava).

Sospetto che un ingegnere junior impiegherà fino a una settimana (4-5 giorni) per installarlo (supponendo che siano determinati a farlo funzionare come si desidera).

In una nota a margine, altri strumenti di analisi statica commerciale hanno probabilmente anche l'applicazione MISRA. Riferito (per il loro rappresentante di vendita), Klocwork fa.

+2

Gli ingegneri junior non devono essere assegnati per convertire il codice per conformità MISRA. Nella mia esperienza, finiranno pedissequamente seguendo gli avvertimenti dello strumento, molti dei quali sono falsi, non importa quale sia lo strumento. Potrebbero causare più problemi di quelli che risolvono. – Lundin

3

Abbiamo avuto un problema simile all'adattamento delle regole di Misra. Abbiamo riscontrato alcuni problemi di qualità del codice su un grande progetto e abbiamo deciso di utilizzare MISRA per migliorare la qualità del codice.

Utilizziamo il compilatore Green Hills che supporta le regole MISRA C. Sono disponibili anche dama stand alone. A seconda di ciò che si vuole fare può essere un po 'sopra l'uccisione accendendo tutte le regole. Abbiamo cambiato una regola alla volta per dare alle persone il tempo di risolvere un numero limitato di problemi simili, altrimenti ti sentirai totalmente sopraffatto dalla quantità di errori.

Poiché i nostri avvisi sono stati generati dal compilatore e non da uno strumento autonomo, si vedono gli errori durante lo sviluppo e non solo quando si esegue il correttore. Come abbiamo continuato a sviluppare abbiamo ottenuto il nostro codice conforme e non in un big bang. Questo evita anche le vecchie abitudini che rovinano il nuovo codice causando di dover rielaborare il codice più tardi.

Alcune volte è difficile ottenere il vecchio codice compatibile poiché nessuno sa esattamente come funziona il codice. Spero che tu abbia dei test unitari.

1

Apprezzo che questa è una vecchia domanda, ma a beneficio di altri archeologi (o ricercatori), è importante ricordare che MISRA fornisce le linee guida che non dovrebbero essere sempre seguite ciecamente.

Mi congratulo per scrivere nuovo codice con MISRA in mente; quindi sarà molto più semplice rimanere conformi.

Tuttavia, ciò non è sempre possibile, in particolare quando si tenta di invertire il codice tecnico per soddisfare le linee guida. In questo caso, ti suggerisco di concentrarti sulle regole richieste e considerare gli avvisi come un vantaggio ... anche il vantaggio di costo v si applica anche qui!

Inoltre, tenere presente che esiste un processo di deviazione: è meglio mantenere un codice pulito e gestibile con una deviazione, piuttosto che escogitare degli spaghetti conformi ma illeggibili.