メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Polyspace でのコーディング規約のサポート

Polyspace® Bug Finder™ および Polyspace as You Code はさまざまなコーディング規約をサポートしています。IDE 内で個々の翻訳単位を解析し、統合中にソース コード全体を解析することにより、これらの規約への準拠をチェックします。Polyspace as You Code は Bug Finder がサポートするルールのサブセットをサポートします。Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください。

Polyspace サポートの概要

規約リリース静的に強制可能なルール必要ルールまたは必須ルール
MISRA C++:20232023 年 10 月規約の 156 個の決定可能なルールのうちの 156

  • 5 個の必須ルールのうちの 5

  • 124 個の必要ルールのうちの 124

AUTOSAR C++142018 年 10 月 31 日規約の 349 個のルールのうちの 349規約の 362 個のルールのうちの 337
MISRA C++:20082008 年 6 月 a 規約の 198 個のルールのうちの 195
MISRA C:20232023 年 4 月規約の 149 個のルールのうちの 141規約の 160 個のルールのうちの 146
CERT C2016規約の 120 個のルールのうちの 120規約の 120 個のルールのうちの 120
MISRA C:2012

  • 2013 年 3 月

  • 2016 年 4 月 (Amendment 1)

  • 2017 年 6 月 (TC1)

  • 2018 年 1 月 (Amendment 2)

  • 2022 年 3 月 (TC2)

  • 2022 年 10 月 (Amendment 3)

規約の 149 個のルールのうちの 141規約の 160 個のルールのうちの 146

a MISRA C++:2008 standard does not categorize rules based on their static enforceability

コーディング規約はルールを義務レベルまたは静的強制可能性に基づいて分類します。Polyspace は、規約により強制可能ではないと見なされるルール、または部分的に強制可能だと見なされるルールをサポートします。これらのルールを強制するには手動のレビュー プロセスが必要であり、これには Polyspace 結果が役立ちます。

MISRA C++:2023

MISRA C++:2023 規約では、ガイドラインをルールと命令のいずれかに分類します。

MISRA C++:2023 ルール

ルールとは、完全に記述可能なガイドラインです。ルールへの準拠は、一部の制限がありますが、静的にチェックできます。ルールは、さらにさまざまなプロパティに基づいて分類されます。

義務レベル

カテゴリBug Finder で実装されているルール規約でのルール
Mandatory:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、このガイドラインからの逸脱は許可されていません。55
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。122122
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。4848
 総数:175175

準拠した C++ コードは "Mandatory" および "Required" のルールに従う必要があります。Polyspace はそれらのすべてのルールをサポートします。

静的強制可能性

カテゴリBug Finder で実装されているルール規約でのルール
決定可能:考え得るあらゆるケースについて、静的解析ツールがルールへの準拠をチェックできる場合、それは決定可能なルールです。155155
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、それは決定不可能なルールです。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。2020

決定可能な MISRA コーディング ルールに対する Polyspace のサポートの詳細については、Polyspace Bug Finder でサポートされている MISRA の決定可能なコーディング ルールを参照してください。

MISRA C++:2023 命令

命令とは、完全に記述することはできないガイドラインです。これらの命令への準拠をチェックするには、コードに加えて、さらに多くの情報が必要です。静的解析が命令への準拠のチェックに役立つ場合があります。命令は義務レベルに基づいて分類されます。

義務レベル

カテゴリBug Finder で実装されている命令規約での命令
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。22
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。22

静的強制可能性

カテゴリBug Finder で実装されている命令規約での命令
決定可能:考えられるあらゆるケースについて静的解析ツールが命令への準拠をチェックできる場合、その命令は決定可能です。11
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、その命令は決定不可能です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定の命令に対して Polyspace が検出する問題の詳細については、その命令のリファレンス ページの [Polyspace 実装] セクションを参照してください。33

AUTOSAR C++14

AUTOSAR C++14 規約では、ルールを義務レベルおよび静的解析による強制に基づいて分類します。

義務レベル

カテゴリBug Finder で実装されているルール規約でのルール
Required:コードはこのルールに従う必要があります。337362
Advisory:コードは、道理にかなった実際的な範囲内でこのルールに従うことが推奨されます。3335
 総数:370 

静的解析ツールによる強制

カテゴリBug Finder で実装されているルール規約でのルール
Automated:静的解析ツールでは、このルールのすべての違反を検出できます。327327a
Partially automated:静的解析ツールでは、このルールで生じる可能性のある違反のすべてを検出することはできません。このルールを完全に強制するには、手動のコード レビューを行うか、別のツールを使用することが必要です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。2222
Nonautomated:静的解析ツールでは、このルールで生じる可能性のある違反のすべてを検出することはできません。このルールを完全に強制するには、手動のコード レビューを行うか、別のツールを使用することが必要です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。2146

a The AUTOSAR C++14 standard contains 329 Automated rules. The rules A0-4-3 and A1-4-3 are not enforceable by a static analysis tool. These rules might be enforced by a compiler.

"Automated" および "Partially automated" のルールは静的に強制可能です。合計すると、Polyspace は、349 個の静的に強制可能なルール、および 337 個の必要ルールをサポートしています。詳細は、以下を参照してください。

MISRA C++:2008

MISRA C++:2008 規約では、ルールを義務レベルに基づいて分類します。

カテゴリBug Finder で実装されているルール規約でのルール
Required:コードはこのルールに従う必要があります。195198
Advisory:コードは、道理にかなった実際的な範囲内でこのルールに従うことが推奨されます。1818
Document:このルールは、#pragma、浮動小数点演算、ビット フィールドなどのさまざまな機能に関連付けられています。そのような機能が使用されるときはいつでも、コードはその関連付けられたルールに従う必要があります。112
 総数:214 

Polyspace Bug Finder でサポートされている MISRA の必要コーディング ルールまたは必須コーディング ルールを参照してください。

MISRA C:2023

MISRA C:2023 規約では、ガイドラインをルールと命令のいずれかに分類します。Polyspace での MISRA C:2012 規約のサポートは、MISRA C:2023 規約のサポートと同一です。

MISRA C:2023 のルール

ルールとは、完全に記述可能なガイドラインです。ルールへの準拠は、一部の制限がありますが、静的にチェックできます。ルールは、さらにさまざまなプロパティに基づいて分類されます。

義務レベル

カテゴリBug Finder で実装されているルール規約でのルール
Mandatory:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、このガイドラインからの逸脱は許可されていません。1823
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。128137
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。3940
 総数:185 

静的強制可能性

カテゴリBug Finder で実装されているルール規約でのルール
決定可能:考え得るあらゆるケースについて、静的解析ツールがルールへの準拠をチェックできる場合、それは決定可能なルールです。141149
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、それは決定不可能なルールです。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。4451

解析範囲

カテゴリBug Finder で実装されているルール規約でのルール
Single Translation Unit:プロジェクトの各翻訳単位を個別にチェックすることにより、このルールのすべての違反を見つけることができます。128135
System:プロジェクト全体またはシステム全体を解析することによってのみ、このルールのすべての違反を見つけることができます。5765

MISRA C:2023 の命令

命令とは、完全に記述することはできないガイドラインです。これらの命令への準拠をチェックするには、コードに加えて、さらに多くの情報が必要です。静的解析が命令への準拠のチェックに役立つ場合があります。命令は義務レベルに基づいて分類されます。

義務レベル

カテゴリBug Finder で実装されている命令規約での命令
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。1214
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。67

静的強制可能性

カテゴリBug Finder で実装されている命令規約での命令
決定可能:考えられるあらゆるケースについて静的解析ツールが命令への準拠をチェックできる場合、その命令は決定可能です。00
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、その命令は決定不可能です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定の命令に対して Polyspace が検出する問題の詳細については、その命令のリファレンス ページの [Polyspace 実装] セクションを参照してください。1821

CERT C

Polyspace は CERT C 標準の静的に強制可能なすべてのルールをサポートします。この標準では、ガイドラインをルールと推奨に分類します。Polyspace は、削除されたルールと作成中のルールはサポートしません。

カテゴリBug Finder で実装されているチェック標準でのチェック
Rule:このガイドラインは必要です。このガイドラインの違反はシステムの安全、セキュリティ、または信頼性を侵害する可能性があります。静的解析ツールでは、このガイドラインへの準拠を強制できます。120120
Recommendation:このガイドラインは、読みやすさ、安全、システムのセキュリティの向上を目的としています。静的解析では、このガイドライン違反のサブセットのみを検出できます。Polyspace は可能性のあるすべての問題のサブセットを表示します。Polyspace が検出する問題の詳細については、そのルールのリファレンス ページを参照してください。94183

Other

Polyspace は、ここに示すコーディング ルール規格もサポートします。

規約Bug Finder で実装されているルール
ISO/IEC TS 17961規約の 46 個のうちの 46
JSF AV C++規約の 234 個のうちの 160
CERT C++規約の 163 個のうちの 163
CWE

次を含む 192 個 (version 4.12):

  • 82 個の C 固有のルール (CWE-658) のうちの 76 個。

  • 86 個の C++ 固有のルール (CWE-659) のうちの 81 個。

参考

| | | | | | |

トピック