Utilizzo di PVS-Studio Static Analyzer nello sviluppo C e C++ per sistemi embedded

Utilizzo di PVS-Studio Static Analyzer nello sviluppo C e C++ per sistemi embedded

Questo articolo ti spiegherà come avviare l'analisi di un progetto incorporato e come lavorare con il rapporto dell'analizzatore.

L'analizzatore PVS-Studio supporta numerosi compilatori per sistemi embedded. La versione corrente consente di controllare i progetti creati con uno dei seguenti compilatori in Windows, Linux e macOS:

  • IAR Embedded Workbench
  • Strumenti di sviluppo incorporati Keil per Arm
  • Strumenti per la generazione di codice TI ARM
  • GNU Embedded Toolchain

Installazione

La procedura di installazione dipende dal sistema operativo utilizzato durante lo sviluppo. Sotto Linux, puoi installare l'analizzatore dal repository o dal pacchetto di installazione.

Ad esempio, su un sistema basato su Debian:

wget -q -O - https://files.pvs-studio.com/etc/pubkey.txt | sudo apt-key add -

sudo wget -O /etc/apt/sources.list.d/viva64.list \
https://files.pvs-studio.com/etc/viva64.list

sudo apt update
sudo apt install pvs-studio

o

sudo gdebi pvs-studio-VERSION.deb

In macOS, puoi utilizzare Homebrew per l'installazione e l'aggiornamento:

brew install viva64/pvs-studio/pvs-studio
brew upgrade pvs-studio

Un'altra opzione:l'installazione da dmg pacchetto o decomprimere manualmente dall'archivio.

In Windows, devi utilizzare il programma di installazione:

Puoi scaricare i pacchetti di installazione per ciascun sistema supportato, nonché richiedere una chiave di prova, se ne hai bisogno, nella pagina "Scarica e valuta PVS-Studio".

Una volta completata l'installazione, è necessario inserire la chiave di licenza. L'articolo della documentazione "Come accedere alla licenza PVS-Studio e qual è la prossima mossa" descrive questo processo in dettaglio per quanto riguarda le diverse piattaforme.

Verifica del tuo progetto

Il controllo dei progetti creati per i sistemi embedded è simile al controllo di quelli sviluppati per Windows, Linux o macOS.

Le opzioni disponibili in Linux sono descritte nell'articolo "Guida introduttiva all'analizzatore statico PVS-Studio per lo sviluppo C++ in Linux". Tieni presente che i progetti incorporati vengono compilati in modo incrociato e il tuo compilatore può avere un nome non standard. Per questo motivo, potrebbe essere necessario specificarlo all'avvio dell'analisi, operazione che puoi eseguire tramite il –compilatore o –c , tasto della riga di comando.

pvs-studio-analyzer analizzare -c MyCompiler

Il suo utilizzo è necessario se l'analizzatore non riesce a rilevare il tipo di compilatore, ovvero se emette l'errore "Nessuna unità di compilazione trovata".

Poiché la piattaforma di destinazione differisce da quella di sviluppo a causa della compilazione incrociata, probabilmente dovrai anche specificare la piattaforma di destinazione tramite la --platform chiave, insieme al tipo di preprocessore (--preprocessor ).

Piattaforme supportate:win32, x64, linux32, linux64, macos, arm.

Preprocessori supportati:gcc, clang, keil.

Sotto Linux, linux64 piattaforma e il gcc preprocessore sono le impostazioni predefinite.

Se stai usando Windows, puoi controllare il tuo progetto nella modalità di monitoraggio del compilatore. A tale scopo, utilizzare "Interfaccia utente per il monitoraggio del compilatore C e C++ ", fornita con l'analizzatore. Per avviare il monitoraggio, vai su Strumenti menu e scegli Analizza i tuoi file... Si aprirà questa finestra di dialogo:

Fai clic su "Avvia monitoraggio " e inizia a creare il tuo progetto. Al termine della creazione, fai clic su "Interrompi monitoraggio " nella finestra di dialogo situata nell'angolo inferiore destro dello schermo:

La finestra principale della "Interfaccia utente per il monitoraggio del compilatore C e C++ " l'utilità consente di visualizzare i risultati dell'analisi.

Inoltre, è possibile avviare l'analisi dalla riga di comando utilizzando l'utilità CLMonitor. Ecco il comando che avvierà il monitoraggio:

CLMonitor.exe monitor

Dopo la compilazione, riavviala in modalità analisi:

CLMonitor.exe analyze -l "<path>\out.plog"

L'analizzatore verificherà il tuo progetto e salverà i risultati nel file specificato tramite -l chiave.

Vedere anche "Sistema di monitoraggio del compilatore in PVS-Studio".

Utilizzo dei rapporti

Per visualizzare il report sotto Linux, è necessario convertire il file di registro, generato dall'analizzatore, in uno dei formati supportati. Usa il plog-convertitore utilità per farlo. Ad esempio, puoi generare un report HTML, che ti consente di visualizzare il codice sorgente, con questo comando:

plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir

La conversione dei report è descritta più dettagliatamente nell'articolo "Guida introduttiva all'analizzatore statico PVS-Studio per lo sviluppo C++ sotto Linux".

La versione Windows ha anche un'utilità denominata PlogConverter , che è simile nell'uso alla sua controparte Linux:

PlogConverter.exe <path>\out.plog --renderTypes= FullHtml --analyzer=GA:1,2

o

PlogConverter.exe D:\Projct\out.plog -t FullHtml -a GA:1,2

Puoi anche visualizzare i rapporti in plog formato con "Interfaccia utente per il monitoraggio del compilatore C e C++ " tramite il File->Apri registro PVS-Studio... comando di menu.

Esempio:

Se necessario, puoi esportare il rapporto in uno dei formati supportati tramite il File dell'utilità menu.

Standard di codifica MISRA

PVS-Studio classifica i suoi avvisi in base a CWE e SEI CERT, che funziona abbastanza bene per i test di sicurezza statica (SAST) di app regolari. Tuttavia, i sistemi embedded hanno requisiti di sicurezza diversi, coperti da uno standard MISRA appositamente sviluppato. L'attuale versione di PVS-Studio supporta parzialmente MISRA C e MISRA C++. Puoi vedere l'elenco in continua espansione delle regole supportate qui.

L'uso delle regole MISRA durante il controllo di progetti non incorporati è generalmente una cattiva idea, a causa delle specifiche dello standard. Nella maggior parte dei casi, se il codice non era inizialmente orientato a MISRA, il controllo risulterebbe in molti falsi positivi e generalmente avvisi di rumore. Pertanto, le regole MISRA sono disattivate per impostazione predefinita.

Per abilitare MISRA in Linux, esegui l'analisi con -a e passare un parametro numerico, secondo la modalità desiderata. Questo parametro è una combinazione di campi di bit:

-a [MODE], --analysis-mode [MODE]
        MODE defines the type of warnings:
        1 - 64-bit errors;
        2 - reserved;
        4 - General Analysis;
        8 - Micro-optimizations;
        16 - Customers Specific Requests;
        32 - MISRA.
        Modes can be combined by adding the values
        Default: 4

Esempio (con regole GA e MISRA abilitate):

pvs-studio-analyzer analyze -a 36 -o /path/report.log

Inoltre, devi dirlo a plog-converter per includere gli avvisi MISRA nel rapporto risultante:

plog-converter -a MISRA:1,2,3 -m misra ....

In Windows, puoi utilizzare "UI C e C++ Compiler Monitoring " impostazioni dell'utilità:

Consulta l'articolo "PVS-Studio:supporto per MISRA C e MISRA C++ Coding Standards" per ulteriori informazioni sul supporto MISRA.

Conclusione

In questo articolo, abbiamo discusso brevemente delle funzionalità dell'analizzatore PVS-Studio per il controllo dei progetti con targeting incorporato. Se hai bisogno di maggiori informazioni sull'utilizzo dell'analizzatore, ti consiglio di fare riferimento ai seguenti articoli:

  • Fare conoscenza con l'analizzatore di codice statico PVS-Studio su Windows;
  • Sistema di monitoraggio del compilatore in PVS-Studio;
  • Come eseguire PVS-Studio su Linux e macOS;
  • PVS-Studio SAST (test di sicurezza delle applicazioni statiche, SAST);
  • Soppressione dei falsi allarmi.