Revisione del Codice

Best practice per l’utilizzo di strumenti di revisione del codice

La revisione del codice è un processo metodico per esaminare il codice sorgente del software così da identificare i problemi e migliorare la qualità del software. È un compito importante nello sviluppo di sistemi embedded critici, in particolare di quelli che richiedono la certificazione.

Un team di revisione del codice è in genere composto da un moderatore, un ingegnere o un responsabile della qualità, lo sviluppatore del software e altri colleghi. Il team utilizza spesso una checklist per rivedere sistematicamente tutti gli aspetti pertinenti del software. Ad esempio, il team potrebbe valutare la complessità del codice e verificare la conformità agli standard di codifica come MISRA-C / C ++ o JSF ++.

Un'efficace revisione del codice sarebbe quella focalizzata sugli aspetti di progettazione, come soddisfare i requisiti di progettazione, identificare i requisiti mancanti, la progettazione dell'architettura, delle interfacce ecc. Una revisione del codice focalizzata sulla scansione del codice per rilevare difetti è altamente inefficace perché l’identificazione di errori di run-time o anche semplici difetti di codifica possono essere task estremamente impegnativi. Ad esempio, è facile non accorgersi di un overflow o di un underflow a causa di complesse operazioni matematiche che coinvolgono il controllo programmatico. Strumenti di analisi statica come Polyspace® aiutano ad automatizzare e semplificare queste attività prima di un processo di revisione del codice.

Il caso d'uso più semplice di tali strumenti è la verifica di conformità del proprio codice agli standard come MISRA, JSF o le proprie regole di codifica personalizzate. Le regole di codifica aiutano a rispettare una coerenza nello stile di codifica, migliorando la leggibilità e la manutenibilità del codice.

Inoltre, gli strumenti Polyspace possono non solo rilevare difetti, ma anche dimostrare l'assenza di errori nel codice sorgente, evitando così di dover dedicare tempo alla scansione delle parti sicure del codice. Ancora più importante, è possibile identificare e / o correggere alcuni dei difetti anche prima di rivedere il codice. Ciò non solo consente di risparmiare tempo, ma aiuta il team di revisione a concentrarsi su aspetti importanti come la progettazione del software e i requisiti.

L'analisi automatizzata non può semplicemente scoprire questi problemi funzionali algoritmici e questa analisi di alto livello richiede un cervello umano. Tuttavia, l'analisi automatizzata è molto conveniente nella scansione del codice per identificare difetti come gli errori di programmazione o di codifica o gli errori di runtime ecc.

Inoltre, gli strumenti Polyspace forniscono anche informazioni dettagliate sul flusso di controllo e di dati. A titolo di esempio sono fornite informazioni sui possibili intervalli delle variabili, i grafi delle chiamate a funzioni e data dictionary per mostrare come e da dove le variabili vengono scritte e lette. Queste informazioni sono generalmente preziose in una revisione del codice in cui sia necessario comprendere il comportamento del software a run-time.

Questo processo è molto scalabile ed è possibile analizzare da poche centinaia di righe di codice a più di centomila. I report generati dall'analisi possono essere utilizzati come artefatto nel processo di revisione del codice per identificare quali parti del codice si sono dimostrate sicure e quali parti sono a rischio di fallimento.

Best Practices for Code Reviews

A typical software development workflow.

Although there are a variety of code review techniques, most rely on a few best practices:

  • Define and communicate the code review goals and process: Integrate code reviews in the team’s software development process and ensure that the team understands the benefits of the process and team-member roles
  • Create a code review checklist: Provide code reviewers with systematic guidelines to verify that the code meets quality standards
  • Define the quality gate: Clearly identify criteria for the approval of code changes
  • Set a collaborative tone: Focus on the code, not the coder, to achieve code review goals, and remind reviewers to be objective, mindful, and constructive in their comments
  • Provide the necessary time: Limit code review time to less than 60 minutes, or about 400 lines of code at a time, to encourage reviewers’ concentrated attention
  • Provide adequate training: Focus on developing code review skills of team members

How to Make Code Reviews More Efficient

Inefficiency in the code review process can reduce productivity and cause frustration. Static analysis is a fast and efficient way to find programming errors and ensure compliance with coding rules and conventions. Code reviewers can focus on the more interesting and involved aspects of code review such as detecting logic and design issues.

How Polyspace Products Expedite the Review Process

Polyspace static code analysis products use formal methods to check source code for coding standard violations, code defects, and security vulnerabilities. You can also use these products to prove the absence of critical run-time errors under all possible control flows and data flows.

Polyspace easily integrates with other software development tools to support efficiency by ensuring static code analysis on every code submission:

  • Analyzing code before code reviews: Find issues as soon as the code is written using Polyspace as You Code from within integrated development environments (IDEs) such as Visual Studio, Visual Studio Code, or Eclipse. Developers can find issues in the file they are editing or run an analysis on all files before submitting for code review.

Detecting coding errors using the Polyspace as You Code plugin in Visual Studio Code.

  • Integrating static analysis with code review tools: Integrate Polyspace in code review tools such as Review Board and Gerrit, where Polyspace acts as a reviewer by running analysis on code changes and returning the results to the tool

Code review tool workflows with automated Polyspace analysis.

Learn More about Polyspace Products

  • Polyspace Bug Finder™ checks C/C++ source code for coding standard violations, finds several types of bugs, detects security vulnerabilities, and computes quality metrics such as code complexity metrics
  • Polyspace Code Prover™ uses formal methods to prove the absence of critical run-time errors in C/C++ source code without executing the code
  • Polyspace products for Ada prove the absence of run-time errors in Ada source code