このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Polyspace でのコーディング規約のサポート
Polyspace® Bug Finder™ および
Polyspace サポートの概要
規約 | リリース | 静的に強制可能なルール | 必要ルールまたは必須ルール |
---|---|---|---|
MISRA C++:2023 | 2023 年 10 月 | 規約の 156 個の決定可能なルールのうちの 156 個 |
|
AUTOSAR C++14 | 2018 年 10 月 31 日 | 規約の 349 個のルールのうちの 349 個 | 規約の 362 個のルールのうちの 337 個 |
MISRA C++:2008 | 2008 年 6 月 | a | 規約の 198 個のルールのうちの 195 個 |
MISRA C:2023 | 2023 年 4 月 | 規約の 149 個のルールのうちの 141 個 | 規約の 160 個のルールのうちの 146 個 |
CERT C | 2016 | 規約の 120 個のルールのうちの 120 個 | 規約の 120 個のルールのうちの 120 個 |
MISRA C:2012 |
| 規約の 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 コードが従う必要があるガイドラインです。この規約では、このガイドラインからの逸脱は許可されていません。 | 5 | 5 |
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。 | 122 | 122 |
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。 | 48 | 48 |
総数:175 | 175 |
準拠した C++ コードは "Mandatory" および "Required" のルールに従う必要があります。Polyspace はそれらのすべてのルールをサポートします。
静的強制可能性
カテゴリ | Bug Finder で実装されているルール | 規約でのルール |
---|---|---|
決定可能:考え得るあらゆるケースについて、静的解析ツールがルールへの準拠をチェックできる場合、それは決定可能なルールです。 | 155 | 155 |
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、それは決定不可能なルールです。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。 | 20 | 20 |
決定可能な MISRA コーディング ルールに対する Polyspace のサポートの詳細については、Polyspace Bug Finder でサポートされている MISRA の決定可能なコーディング ルールを参照してください。
MISRA C++:2023 命令
命令とは、完全に記述することはできないガイドラインです。これらの命令への準拠をチェックするには、コードに加えて、さらに多くの情報が必要です。静的解析が命令への準拠のチェックに役立つ場合があります。命令は義務レベルに基づいて分類されます。
義務レベル
カテゴリ | Bug Finder で実装されている命令 | 規約での命令 |
---|---|---|
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。 | 2 | 2 |
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。 | 2 | 2 |
静的強制可能性
カテゴリ | Bug Finder で実装されている命令 | 規約での命令 |
---|---|---|
決定可能:考えられるあらゆるケースについて静的解析ツールが命令への準拠をチェックできる場合、その命令は決定可能です。 | 1 | 1 |
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、その命令は決定不可能です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定の命令に対して Polyspace が検出する問題の詳細については、その命令のリファレンス ページの [Polyspace 実装] セクションを参照してください。 | 3 | 3 |
AUTOSAR C++14
AUTOSAR C++14 規約では、ルールを義務レベルおよび静的解析による強制に基づいて分類します。
義務レベル
カテゴリ | Bug Finder で実装されているルール | 規約でのルール |
---|---|---|
Required:コードはこのルールに従う必要があります。 | 337 | 362 |
Advisory:コードは、道理にかなった実際的な範囲内でこのルールに従うことが推奨されます。 | 33 | 35 |
総数:370 |
静的解析ツールによる強制
カテゴリ | Bug Finder で実装されているルール | 規約でのルール |
---|---|---|
Automated:静的解析ツールでは、このルールのすべての違反を検出できます。 | 327 | 327a |
Partially automated:静的解析ツールでは、このルールで生じる可能性のある違反のすべてを検出することはできません。このルールを完全に強制するには、手動のコード レビューを行うか、別のツールを使用することが必要です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。 | 22 | 22 |
Nonautomated:静的解析ツールでは、このルールで生じる可能性のある違反のすべてを検出することはできません。このルールを完全に強制するには、手動のコード レビューを行うか、別のツールを使用することが必要です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。 | 21 | 46 |
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:コードはこのルールに従う必要があります。 | 195 | 198 |
Advisory:コードは、道理にかなった実際的な範囲内でこのルールに従うことが推奨されます。 | 18 | 18 |
Document:このルールは、#pragma、浮動小数点演算、ビット フィールドなどのさまざまな機能に関連付けられています。そのような機能が使用されるときはいつでも、コードはその関連付けられたルールに従う必要があります。 | 1 | 12 |
総数: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 コードが従う必要があるガイドラインです。この規約では、このガイドラインからの逸脱は許可されていません。 | 18 | 23 |
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。 | 128 | 137 |
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。 | 39 | 40 |
総数:185 |
静的強制可能性
カテゴリ | Bug Finder で実装されているルール | 規約でのルール |
---|---|---|
決定可能:考え得るあらゆるケースについて、静的解析ツールがルールへの準拠をチェックできる場合、それは決定可能なルールです。 | 141 | 149 |
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、それは決定不可能なルールです。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定のルールに対して Polyspace が検出する問題の詳細については、そのルールのリファレンス ページの [Polyspace 実装] セクションを参照してください。 | 44 | 51 |
解析範囲
カテゴリ | Bug Finder で実装されているルール | 規約でのルール |
---|---|---|
Single Translation Unit:プロジェクトの各翻訳単位を個別にチェックすることにより、このルールのすべての違反を見つけることができます。 | 128 | 135 |
System:プロジェクト全体またはシステム全体を解析することによってのみ、このルールのすべての違反を見つけることができます。 | 57 | 65 |
MISRA C:2023 の命令
命令とは、完全に記述することはできないガイドラインです。これらの命令への準拠をチェックするには、コードに加えて、さらに多くの情報が必要です。静的解析が命令への準拠のチェックに役立つ場合があります。命令は義務レベルに基づいて分類されます。
義務レベル
カテゴリ | Bug Finder で実装されている命令 | 規約での命令 |
---|---|---|
Required:これは、準拠した C コードが従う必要があるガイドラインです。この規約では、正式に記録および承認される逸脱のみが許可されています。 | 12 | 14 |
Advisory:これは、推奨されるガイドラインです。この規約では、公式の記録がないかぎり、このガイドラインからの逸脱は許可されていません。ベスト プラクティスは、道理にかなった実際的な範囲内でこのガイドラインに従い、逸脱を記録することです。 | 6 | 7 |
静的強制可能性
カテゴリ | Bug Finder で実装されている命令 | 規約での命令 |
---|---|---|
決定可能:考えられるあらゆるケースについて静的解析ツールが命令への準拠をチェックできる場合、その命令は決定可能です。 | 0 | 0 |
決定不可能:特定のケースについてのみ静的解析ツールがルールへの準拠をチェックできる場合、その命令は決定不可能です。Polyspace は可能性のあるすべての問題のサブセットを表示します。特定の命令に対して Polyspace が検出する問題の詳細については、その命令のリファレンス ページの [Polyspace 実装] セクションを参照してください。 | 18 | 21 |
CERT C
Polyspace は CERT C 標準の静的に強制可能なすべてのルールをサポートします。この標準では、ガイドラインをルールと推奨に分類します。Polyspace は、削除されたルールと作成中のルールはサポートしません。
カテゴリ | Bug Finder で実装されているチェック | 標準でのチェック |
---|---|---|
Rule:このガイドラインは必要です。このガイドラインの違反はシステムの安全、セキュリティ、または信頼性を侵害する可能性があります。静的解析ツールでは、このガイドラインへの準拠を強制できます。 | 120 | 120 |
Recommendation:このガイドラインは、読みやすさ、安全、システムのセキュリティの向上を目的としています。静的解析では、このガイドライン違反のサブセットのみを検出できます。Polyspace は可能性のあるすべての問題のサブセットを表示します。Polyspace が検出する問題の詳細については、そのルールのリファレンス ページを参照してください。 | 94 | 183 |
Other
Polyspace は、ここに示すコーディング ルール規格もサポートします。
規約 | Bug Finder で実装されているルール |
---|---|
ISO/IEC TS 17961 | 規約の 46 個のうちの 46 個 |
JSF AV C++ | 規約の 234 個のうちの 160 個 |
CERT C++ | 規約の 163 個のうちの 163 個 |
CWE | 次を含む 192 個 (version 4.12):
|
参考
AUTOSAR C++ 14 をチェック (-autosar-cpp14)
| MISRA C++:2008 をチェック (-misra-cpp)
| SEI CERT-C++ をチェック (-cert-cpp)
| MISRA C:2012 のチェック (-misra3)
| SEI CERT-C をチェック (-cert-c)
| CWE チェック (-cwe)
| MISRA C:2023 のチェック (-misra-c-2023)
| MISRA C++:2023 のチェック (-misra-cpp-2023)
トピック
- Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)
- MISRA C:2012 Technical Corrigenda and Amendments に対する Polyspace のサポート
- Polyspace Bug Finder でサポートされている MISRA の決定可能なコーディング ルール
- Polyspace Bug Finder でサポートされている MISRA C:2012 の決定不可能なルールおよび命令
- Required AUTOSAR C++14 Coding Rules Supported by Polyspace Bug Finder
- PolyspaceBug Finder でサポートされている静的に強制可能な AUTOSAR C++14 ルール
- Polyspace Bug Finder でサポートされている MISRA の必要コーディング ルールまたは必須コーディング ルール
- PolyspaceBug Finder でサポートされている CERT C の必要ルールおよび静的に強制可能なルール