@specs-feup/clava-misra 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore +8 -0
- package/README.md +53 -19
- package/dist/MISRA.d.ts +28 -10
- package/dist/MISRA.d.ts.map +1 -1
- package/dist/MISRA.js +30 -10
- package/dist/MISRA.js.map +1 -1
- package/dist/MISRAContext.d.ts +65 -11
- package/dist/MISRAContext.d.ts.map +1 -1
- package/dist/MISRAContext.js +131 -35
- package/dist/MISRAContext.js.map +1 -1
- package/dist/MISRARule.d.ts +38 -25
- package/dist/MISRARule.d.ts.map +1 -1
- package/dist/MISRARule.js +40 -18
- package/dist/MISRARule.js.map +1 -1
- package/dist/MISRATool.d.ts +39 -5
- package/dist/MISRATool.d.ts.map +1 -1
- package/dist/MISRATool.js +102 -46
- package/dist/MISRATool.js.map +1 -1
- package/dist/StandardGuideline.d.ts +22 -0
- package/dist/StandardGuideline.d.ts.map +1 -0
- package/dist/StandardGuideline.js +12 -0
- package/dist/StandardGuideline.js.map +1 -0
- package/dist/ast-visitor/Context.d.ts +11 -0
- package/dist/ast-visitor/Context.d.ts.map +1 -0
- package/dist/ast-visitor/Context.js +15 -0
- package/dist/ast-visitor/Context.js.map +1 -0
- package/dist/ast-visitor/Visit.d.ts +23 -0
- package/dist/ast-visitor/Visit.d.ts.map +1 -0
- package/dist/ast-visitor/Visit.js +18 -0
- package/dist/ast-visitor/Visit.js.map +1 -0
- package/dist/ast-visitor/VisitWithContext.d.ts +32 -0
- package/dist/ast-visitor/VisitWithContext.d.ts.map +1 -0
- package/dist/ast-visitor/VisitWithContext.js +26 -0
- package/dist/ast-visitor/VisitWithContext.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/rules/Section13_SideEffects/Rule_13_6_SafeSizeOfOperand.d.ts +27 -0
- package/dist/rules/Section13_SideEffects/Rule_13_6_SafeSizeOfOperand.d.ts.map +1 -0
- package/dist/rules/Section13_SideEffects/Rule_13_6_SafeSizeOfOperand.js +98 -0
- package/dist/rules/Section13_SideEffects/Rule_13_6_SafeSizeOfOperand.js.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.d.ts +45 -6
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.d.ts.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.js +91 -8
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.js.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.d.ts +15 -5
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.d.ts.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.js +20 -6
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.js.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.d.ts +11 -5
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.d.ts.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.js +13 -10
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.js.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.d.ts +11 -6
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.d.ts.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.js +19 -11
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.js.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.d.ts +15 -5
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.d.ts.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.js +24 -10
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.js.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.d.ts +22 -6
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.d.ts.map +1 -1
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.js +37 -10
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.js.map +1 -1
- package/dist/rules/Section17_Functions/Rule_17_3_ImplicitFunction.d.ts +66 -0
- package/dist/rules/Section17_Functions/Rule_17_3_ImplicitFunction.d.ts.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_3_ImplicitFunction.js +209 -0
- package/dist/rules/Section17_Functions/Rule_17_3_ImplicitFunction.js.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.d.ts +37 -12
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.d.ts.map +1 -1
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.js +112 -39
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.js.map +1 -1
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.d.ts +15 -5
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.d.ts.map +1 -1
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.js +21 -7
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.js.map +1 -1
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.d.ts +11 -6
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.d.ts.map +1 -1
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.js +17 -8
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.js.map +1 -1
- package/dist/rules/Section21-StandardLibraries/DisallowedStdLibFunctionRule.d.ts +105 -0
- package/dist/rules/Section21-StandardLibraries/DisallowedStdLibFunctionRule.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/DisallowedStdLibFunctionRule.js +258 -0
- package/dist/rules/Section21-StandardLibraries/DisallowedStdLibFunctionRule.js.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_10_NoTimeDateFunctions.d.ts +25 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_10_NoTimeDateFunctions.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_10_NoTimeDateFunctions.js +27 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_10_NoTimeDateFunctions.js.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_11_NoTgmathFunctions.d.ts +29 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_11_NoTgmathFunctions.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_11_NoTgmathFunctions.js +31 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_11_NoTgmathFunctions.js.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory.d.ts +25 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory.js +27 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory.js.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_6_NoStdIOFunctions.d.ts +25 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_6_NoStdIOFunctions.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_6_NoStdIOFunctions.js +27 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_6_NoStdIOFunctions.js.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_7_NoNumericStringConversions.d.ts +25 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_7_NoNumericStringConversions.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_7_NoNumericStringConversions.js +27 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_7_NoNumericStringConversions.js.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_8_NoProcessControlFunctions.d.ts +30 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_8_NoProcessControlFunctions.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_8_NoProcessControlFunctions.js +32 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_8_NoProcessControlFunctions.js.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_9_NoGenericSearchOrSort.d.ts +25 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_9_NoGenericSearchOrSort.d.ts.map +1 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_9_NoGenericSearchOrSort.js +27 -0
- package/dist/rules/Section21-StandardLibraries/Rule_21_9_NoGenericSearchOrSort.js.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.d.ts +6 -14
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.d.ts.map +1 -1
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.js +17 -27
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.js.map +1 -1
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.d.ts +13 -7
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.d.ts.map +1 -1
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.js +31 -17
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.js.map +1 -1
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.d.ts +26 -7
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.d.ts.map +1 -1
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.js +32 -14
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.js.map +1 -1
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.d.ts +48 -6
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.d.ts.map +1 -1
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.js +84 -34
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.js.map +1 -1
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.d.ts +24 -5
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.d.ts.map +1 -1
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.js +27 -7
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.js.map +1 -1
- package/dist/rules/Section5_Identifiers/IdentifierRenameRule.d.ts +46 -0
- package/dist/rules/Section5_Identifiers/IdentifierRenameRule.d.ts.map +1 -0
- package/dist/rules/Section5_Identifiers/IdentifierRenameRule.js +40 -0
- package/dist/rules/Section5_Identifiers/IdentifierRenameRule.js.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_1_DistinctExternalIdentifiers.d.ts +25 -0
- package/dist/rules/Section5_Identifiers/Rule_5_1_DistinctExternalIdentifiers.d.ts.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_1_DistinctExternalIdentifiers.js +46 -0
- package/dist/rules/Section5_Identifiers/Rule_5_1_DistinctExternalIdentifiers.js.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_6_UniqueTypedefNames.d.ts +26 -0
- package/dist/rules/Section5_Identifiers/Rule_5_6_UniqueTypedefNames.d.ts.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_6_UniqueTypedefNames.js +54 -0
- package/dist/rules/Section5_Identifiers/Rule_5_6_UniqueTypedefNames.js.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_7_UniqueTagNames.d.ts +27 -0
- package/dist/rules/Section5_Identifiers/Rule_5_7_UniqueTagNames.d.ts.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_7_UniqueTagNames.js +55 -0
- package/dist/rules/Section5_Identifiers/Rule_5_7_UniqueTagNames.js.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_8_UniqueExternalLinkIdentifiers.d.ts +24 -0
- package/dist/rules/Section5_Identifiers/Rule_5_8_UniqueExternalLinkIdentifiers.d.ts.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_8_UniqueExternalLinkIdentifiers.js +42 -0
- package/dist/rules/Section5_Identifiers/Rule_5_8_UniqueExternalLinkIdentifiers.js.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_9_UniqueInternalLinkIdentifiers.d.ts +24 -0
- package/dist/rules/Section5_Identifiers/Rule_5_9_UniqueInternalLinkIdentifiers.d.ts.map +1 -0
- package/dist/rules/Section5_Identifiers/Rule_5_9_UniqueInternalLinkIdentifiers.js +42 -0
- package/dist/rules/Section5_Identifiers/Rule_5_9_UniqueInternalLinkIdentifiers.js.map +1 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_6_SingleExternalDefinition.d.ts +35 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_6_SingleExternalDefinition.d.ts.map +1 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_6_SingleExternalDefinition.js +98 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_6_SingleExternalDefinition.js.map +1 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_7_RestrictExternalLinkage.d.ts +35 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_7_RestrictExternalLinkage.d.ts.map +1 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_7_RestrictExternalLinkage.js +76 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_7_RestrictExternalLinkage.js.map +1 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_9_BlockScopeDefinition.d.ts +32 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_9_BlockScopeDefinition.d.ts.map +1 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_9_BlockScopeDefinition.js +57 -0
- package/dist/rules/Section8_DeclarationsAndDefinitions/Rule_8_9_BlockScopeDefinition.js.map +1 -0
- package/dist/rules/UserConfigurableRule.d.ts +55 -0
- package/dist/rules/UserConfigurableRule.d.ts.map +1 -0
- package/dist/rules/UserConfigurableRule.js +16 -0
- package/dist/rules/UserConfigurableRule.js.map +1 -0
- package/dist/rules/index.d.ts +11 -18
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +47 -7
- package/dist/rules/index.js.map +1 -1
- package/dist/tests/Section17_Functions/misra_config.json +10 -0
- package/dist/tests/Section21-StandardLibraries/misra_config.json +88 -0
- package/dist/tests/Section21-StandardLibraries/problematic_misra_config.json +19 -0
- package/dist/tests/utils.d.ts +6 -3
- package/dist/tests/utils.d.ts.map +1 -1
- package/dist/tests/utils.js +33 -7
- package/dist/tests/utils.js.map +1 -1
- package/dist/utils/CallUtils.d.ts +15 -0
- package/dist/utils/CallUtils.d.ts.map +1 -0
- package/dist/utils/CallUtils.js +34 -0
- package/dist/utils/CallUtils.js.map +1 -0
- package/dist/utils/CommentUtils.d.ts +21 -0
- package/dist/utils/CommentUtils.d.ts.map +1 -0
- package/dist/utils/CommentUtils.js +27 -0
- package/dist/utils/CommentUtils.js.map +1 -0
- package/dist/utils/FileUtils.d.ts +51 -0
- package/dist/utils/FileUtils.d.ts.map +1 -0
- package/dist/utils/FileUtils.js +121 -0
- package/dist/utils/FileUtils.js.map +1 -0
- package/dist/utils/FunctionUtils.d.ts +25 -0
- package/dist/utils/FunctionUtils.d.ts.map +1 -0
- package/dist/utils/FunctionUtils.js +65 -0
- package/dist/utils/FunctionUtils.js.map +1 -0
- package/dist/utils/IdentifierUtils.d.ts +14 -0
- package/dist/utils/IdentifierUtils.d.ts.map +1 -0
- package/dist/utils/IdentifierUtils.js +87 -0
- package/dist/utils/IdentifierUtils.js.map +1 -0
- package/dist/utils/JoinpointUtils.d.ts +19 -0
- package/dist/utils/JoinpointUtils.d.ts.map +1 -0
- package/dist/utils/JoinpointUtils.js +46 -0
- package/dist/utils/JoinpointUtils.js.map +1 -0
- package/dist/utils/ProgramUtils.d.ts +14 -0
- package/dist/utils/ProgramUtils.d.ts.map +1 -0
- package/dist/utils/ProgramUtils.js +72 -0
- package/dist/utils/ProgramUtils.js.map +1 -0
- package/dist/utils/SwitchUtils.d.ts +21 -0
- package/dist/utils/SwitchUtils.d.ts.map +1 -0
- package/dist/utils/SwitchUtils.js +47 -0
- package/dist/utils/SwitchUtils.js.map +1 -0
- package/dist/utils/TypeDeclUtils.d.ts +35 -0
- package/dist/utils/TypeDeclUtils.d.ts.map +1 -0
- package/dist/utils/TypeDeclUtils.js +78 -0
- package/dist/utils/TypeDeclUtils.js.map +1 -0
- package/dist/utils/VarUtils.d.ts +19 -0
- package/dist/utils/VarUtils.d.ts.map +1 -0
- package/dist/utils/VarUtils.js +59 -0
- package/dist/utils/VarUtils.js.map +1 -0
- package/package.json +16 -6
- package/src/MISRA.ts +33 -17
- package/src/MISRAContext.ts +128 -30
- package/src/MISRARule.ts +61 -29
- package/src/MISRATool.ts +108 -42
- package/src/StandardGuideline.ts +23 -0
- package/src/ast-visitor/Context.ts +16 -0
- package/src/ast-visitor/Visit.ts +26 -0
- package/src/ast-visitor/VisitWithContext.ts +42 -0
- package/src/main.ts +1 -1
- package/src/rules/Section13_SideEffects/Rule_13_6_SafeSizeOfOperand.ts +114 -0
- package/src/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.ts +103 -13
- package/src/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.ts +24 -10
- package/src/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.ts +17 -8
- package/src/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.ts +20 -12
- package/src/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.ts +23 -12
- package/src/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.ts +44 -13
- package/src/rules/Section17_Functions/Rule_17_3_ImplicitFunction.ts +153 -104
- package/src/rules/Section17_Functions/Rule_17_4_NonVoidReturn.ts +114 -44
- package/src/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.ts +27 -10
- package/src/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.ts +20 -12
- package/src/rules/Section21-StandardLibraries/DisallowedStdLibFunctionRule.ts +317 -0
- package/src/rules/Section21-StandardLibraries/Rule_21_10_NoTimeDateFunctions.ts +30 -0
- package/src/rules/Section21-StandardLibraries/Rule_21_11_NoTgmathFunctions.ts +35 -0
- package/src/rules/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory.ts +30 -0
- package/src/rules/Section21-StandardLibraries/Rule_21_6_NoStdIOFunctions.ts +30 -0
- package/src/rules/Section21-StandardLibraries/Rule_21_7_NoNumericStringConversions.ts +29 -0
- package/src/rules/Section21-StandardLibraries/Rule_21_8_NoProcessControlFunctions.ts +36 -0
- package/src/rules/Section21-StandardLibraries/Rule_21_9_NoGenericSearchOrSort.ts +30 -0
- package/src/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.ts +14 -29
- package/src/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.ts +33 -19
- package/src/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.ts +33 -20
- package/src/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.ts +90 -45
- package/src/rules/Section3_Comments/Rule_3_1_CommentSequences.ts +27 -8
- package/src/rules/Section5_Identifiers/IdentifierRenameRule.ts +63 -0
- package/src/rules/Section5_Identifiers/Rule_5_1_DistinctExternalIdentifiers.ts +52 -0
- package/src/rules/Section5_Identifiers/Rule_5_6_UniqueTypedefNames.ts +62 -0
- package/src/rules/Section5_Identifiers/Rule_5_7_UniqueTagNames.ts +61 -0
- package/src/rules/Section5_Identifiers/Rule_5_8_UniqueExternalLinkIdentifiers.ts +47 -0
- package/src/rules/Section5_Identifiers/Rule_5_9_UniqueInternalLinkIdentifiers.ts +47 -0
- package/src/rules/Section8_DeclarationsAndDefinitions/Rule_8_6_SingleExternalDefinition.ts +118 -0
- package/src/rules/Section8_DeclarationsAndDefinitions/Rule_8_7_RestrictExternalLinkage.ts +89 -0
- package/src/rules/Section8_DeclarationsAndDefinitions/Rule_8_9_BlockScopeDefinition.ts +65 -0
- package/src/rules/UserConfigurableRule.ts +60 -0
- package/src/rules/index.ts +45 -7
- package/src/tests/Section13_SideEffects/Rule_13_6_SafeSizeOfOperand.test.ts +114 -0
- package/src/tests/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.test.ts +7 -5
- package/src/tests/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.test.ts +40 -13
- package/src/tests/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.test.ts +10 -12
- package/src/tests/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.test.ts +5 -5
- package/src/tests/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.test.ts +5 -5
- package/src/tests/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.test.ts +5 -5
- package/src/tests/Section17_Functions/Rule_17_3_ImplicitFunctions.test.ts +68 -40
- package/src/tests/Section17_Functions/Rule_17_3_ImplicitFunctions_MissingConfig.test.ts +98 -0
- package/src/tests/Section17_Functions/Rule_17_3_ImplicitFunctions_ProblematicConfig.test.ts +71 -0
- package/src/tests/Section17_Functions/Rule_17_4_NonVoidReturn.test.ts +103 -49
- package/src/tests/Section17_Functions/Rule_17_4_NonVoidReturn_MissingConfig.test.ts +7 -7
- package/src/tests/Section17_Functions/Rule_17_6_StaticArraySizeParam.test.ts +36 -7
- package/src/tests/Section17_Functions/Rule_17_7_UnusedReturnValue.test.ts +25 -21
- package/src/tests/Section17_Functions/misra_config.json +4 -3
- package/src/tests/Section21-StandardLibraries/Rule_21_10_NoTimeDateFunctions.test.ts +62 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_11_NoTgmathFunctions.test.ts +67 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory.test.ts +84 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory_MissingConfig.test.ts +33 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_3_NoDynamicMemory_ProblematicConfig.test.ts +71 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_6_NoStdIOFunctions.test.ts +63 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_7_NoNumericStringConversions.test.ts +91 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_8_NoProcessControlFunctions.test.ts +65 -0
- package/src/tests/Section21-StandardLibraries/Rule_21_9_NoGenericSearchOrSort.test.ts +89 -0
- package/src/tests/Section21-StandardLibraries/misra_config.json +88 -0
- package/src/tests/Section21-StandardLibraries/problematic_misra_config.json +19 -0
- package/src/tests/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.test.ts +148 -113
- package/src/tests/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.test.ts +243 -163
- package/src/tests/Section2_UnusedCode/Rule_2_6_UnusedLabels.test.ts +32 -20
- package/src/tests/Section2_UnusedCode/Rule_2_7_UnusedParameters.test.ts +36 -30
- package/src/tests/Section3_Comments/Rule_3_1_CommentSequences.test.ts +37 -8
- package/src/tests/Section5_Identifiers/Rule_5_1_DistinctExternalIdentifiers.test.ts +78 -0
- package/src/tests/Section5_Identifiers/Rule_5_6_UniqueTypedefNames.test.ts +120 -0
- package/src/tests/Section5_Identifiers/Rule_5_7_UniqueTagNames.test.ts +51 -0
- package/src/tests/Section5_Identifiers/Rule_5_8_UniqueExternalLinkIdentifiers.test.ts +73 -0
- package/src/tests/Section5_Identifiers/Rule_5_9_UniqueInternalLinkIdentifiers.test.ts +97 -0
- package/src/tests/Section8_DeclarationsAndDefinitions/Rule_8_6_SingleExternalDefinition.test.ts +160 -0
- package/src/tests/Section8_DeclarationsAndDefinitions/Rule_8_7_RestrictExternalLinkage.test.ts +46 -0
- package/src/tests/Section8_DeclarationsAndDefinitions/Rule_8_9_BlockScopeDefinition.test.ts +69 -0
- package/src/tests/utils.ts +32 -7
- package/src/utils/CallUtils.ts +40 -0
- package/src/utils/CommentUtils.ts +29 -0
- package/src/utils/FileUtils.ts +141 -0
- package/src/utils/FunctionUtils.ts +75 -0
- package/src/utils/IdentifierUtils.ts +94 -0
- package/src/utils/JoinpointUtils.ts +53 -0
- package/src/utils/ProgramUtils.ts +83 -0
- package/src/utils/SwitchUtils.ts +52 -0
- package/src/utils/TypeDeclUtils.ts +89 -0
- package/src/utils/VarUtils.ts +70 -0
- package/tsconfig.json +2 -1
- package/src/rules/Section20-PreprocessingDirectives/Rule_20_2_InvalidHeaderFileName.ts +0 -120
- package/src/rules/Section3_Comments/Rule_3_2_LineSplicing.ts +0 -36
- package/src/utils/utils.ts +0 -280
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { Joinpoint } from "@specs-feup/clava/api/Joinpoints.js";
|
|
2
2
|
import MISRARule from "../../MISRARule.js";
|
|
3
|
-
import
|
|
4
|
-
import { MISRATransformationReport } from "../../MISRA.js";
|
|
3
|
+
import { AnalysisType, MISRATransformationReport } from "../../MISRA.js";
|
|
5
4
|
/**
|
|
6
|
-
* MISRA Rule 16.5: A default label shall appear as either the first or the last switch label of
|
|
7
|
-
a switch statement
|
|
5
|
+
* MISRA-C Rule 16.5: A default label shall appear as either the first or the last switch label of a switch statement
|
|
8
6
|
*/
|
|
9
7
|
export default class Rule_16_5_DefaultFirstOrLast extends MISRARule {
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Scope of analysis
|
|
10
|
+
*/
|
|
11
|
+
readonly analysisType = AnalysisType.SINGLE_TRANSLATION_UNIT;
|
|
12
|
+
/**
|
|
13
|
+
* @returns Rule identifier according to MISRA-C:2012
|
|
14
|
+
*/
|
|
15
|
+
get name(): string;
|
|
11
16
|
/**
|
|
12
17
|
* Retrieves all consecutive case statements to the left of a given case statement
|
|
13
18
|
*
|
|
@@ -38,6 +43,6 @@ export default class Rule_16_5_DefaultFirstOrLast extends MISRARule {
|
|
|
38
43
|
* @param $jp - Joinpoint to transform
|
|
39
44
|
* @returns Report detailing the transformation result
|
|
40
45
|
*/
|
|
41
|
-
|
|
46
|
+
apply($jp: Joinpoint): MISRATransformationReport;
|
|
42
47
|
}
|
|
43
48
|
//# sourceMappingURL=Rule_16_5_DefaultFirstOrLast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule_16_5_DefaultFirstOrLast.d.ts","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Rule_16_5_DefaultFirstOrLast.d.ts","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,SAAS,EAAU,MAAM,qCAAqC,CAAC;AAC7E,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAA2B,MAAM,gBAAgB,CAAC;AAGlG;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,SAAS;IAC/D;;OAEG;IACH,QAAQ,CAAC,YAAY,wCAAwC;IAE5D;;MAEE;IACH,IAAa,IAAI,IAAI,MAAM,CAE1B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO;IAmB1D;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,yBAAyB;CA+BnD"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { Case, Switch } from "@specs-feup/clava/api/Joinpoints.js";
|
|
2
2
|
import MISRARule from "../../MISRARule.js";
|
|
3
|
-
import { MISRATransformationReport, MISRATransformationType } from "../../MISRA.js";
|
|
4
|
-
import { isCommentStmt } from "../../utils/
|
|
3
|
+
import { AnalysisType, MISRATransformationReport, MISRATransformationType } from "../../MISRA.js";
|
|
4
|
+
import { isCommentStmt } from "../../utils/CommentUtils.js";
|
|
5
5
|
/**
|
|
6
|
-
* MISRA Rule 16.5: A default label shall appear as either the first or the last switch label of
|
|
7
|
-
a switch statement
|
|
6
|
+
* MISRA-C Rule 16.5: A default label shall appear as either the first or the last switch label of a switch statement
|
|
8
7
|
*/
|
|
9
8
|
export default class Rule_16_5_DefaultFirstOrLast extends MISRARule {
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Scope of analysis
|
|
11
|
+
*/
|
|
12
|
+
analysisType = AnalysisType.SINGLE_TRANSLATION_UNIT;
|
|
13
|
+
/**
|
|
14
|
+
* @returns Rule identifier according to MISRA-C:2012
|
|
15
|
+
*/
|
|
16
|
+
get name() {
|
|
17
|
+
return "16.5";
|
|
12
18
|
}
|
|
13
19
|
/**
|
|
14
20
|
* Retrieves all consecutive case statements to the left of a given case statement
|
|
@@ -20,7 +26,7 @@ export default class Rule_16_5_DefaultFirstOrLast extends MISRARule {
|
|
|
20
26
|
getConsecutiveRightCases($jp) {
|
|
21
27
|
const cases = [];
|
|
22
28
|
for (const stmt of $jp.siblingsRight) {
|
|
23
|
-
if (!(stmt instanceof Case || isCommentStmt(
|
|
29
|
+
if (!(stmt instanceof Case || isCommentStmt(stmt)))
|
|
24
30
|
break;
|
|
25
31
|
cases.push(stmt);
|
|
26
32
|
}
|
|
@@ -61,7 +67,7 @@ export default class Rule_16_5_DefaultFirstOrLast extends MISRARule {
|
|
|
61
67
|
return false;
|
|
62
68
|
}
|
|
63
69
|
if (logErrors) {
|
|
64
|
-
this.logMISRAError(
|
|
70
|
+
this.logMISRAError(currentCase, "The default case of a switch statement must be the first or last label.");
|
|
65
71
|
}
|
|
66
72
|
return true;
|
|
67
73
|
}
|
|
@@ -75,12 +81,14 @@ export default class Rule_16_5_DefaultFirstOrLast extends MISRARule {
|
|
|
75
81
|
* @param $jp - Joinpoint to transform
|
|
76
82
|
* @returns Report detailing the transformation result
|
|
77
83
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
apply($jp) {
|
|
85
|
+
const previousResult = $jp instanceof Switch ? this.context.getRuleResult("16.4", $jp) : undefined;
|
|
86
|
+
if (previousResult === MISRATransformationType.DescendantChange || !this.match($jp)) {
|
|
80
87
|
return new MISRATransformationReport(MISRATransformationType.NoChange);
|
|
88
|
+
}
|
|
81
89
|
const defaultCase = $jp.getDefaultCase;
|
|
82
90
|
const rightStatements = defaultCase.siblingsRight.filter(sibling => !isCommentStmt(sibling));
|
|
83
|
-
// Reposition the default case to the last position within its case clause
|
|
91
|
+
// Reposition the default case to the last position within its case clause list
|
|
84
92
|
if (rightStatements[0] instanceof Case) { // At least one of the first statements is a Case
|
|
85
93
|
const rightConsecutiveCases = this.getConsecutiveRightCases(defaultCase);
|
|
86
94
|
const lastRightCase = rightConsecutiveCases[rightConsecutiveCases.length - 1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule_16_5_DefaultFirstOrLast.js","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"Rule_16_5_DefaultFirstOrLast.js","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { Joinpoint } from "@specs-feup/clava/api/Joinpoints.js";
|
|
2
2
|
import MISRARule from "../../MISRARule.js";
|
|
3
|
-
import
|
|
4
|
-
import { MISRATransformationReport } from "../../MISRA.js";
|
|
3
|
+
import { AnalysisType, MISRATransformationReport } from "../../MISRA.js";
|
|
5
4
|
/**
|
|
6
|
-
* MISRA Rule 16.6: Every switch statement shall have at least two switch-clauses.
|
|
5
|
+
* MISRA-C Rule 16.6: Every switch statement shall have at least two switch-clauses.
|
|
7
6
|
*/
|
|
8
7
|
export default class Rule_16_6_SwitchMinTwoClauses extends MISRARule {
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* A positive integer starting from 1 that indicates the rule's priority, determining the order in which rules are applied.
|
|
10
|
+
*/
|
|
11
|
+
readonly priority = 5;
|
|
12
|
+
/**
|
|
13
|
+
* Scope of analysis
|
|
14
|
+
*/
|
|
15
|
+
readonly analysisType = AnalysisType.SINGLE_TRANSLATION_UNIT;
|
|
16
|
+
/**
|
|
17
|
+
* @returns Rule identifier according to MISRA-C:2012
|
|
18
|
+
*/
|
|
19
|
+
get name(): string;
|
|
10
20
|
/**
|
|
11
21
|
* Checks if the given joinpoint is a switch statement with less than two clauses
|
|
12
22
|
* @param $jp - Joinpoint to analyze
|
|
@@ -21,6 +31,6 @@ export default class Rule_16_6_SwitchMinTwoClauses extends MISRARule {
|
|
|
21
31
|
* @param $jp - Joinpoint to transform
|
|
22
32
|
* @returns Report detailing the transformation result
|
|
23
33
|
*/
|
|
24
|
-
|
|
34
|
+
apply($jp: Joinpoint): MISRATransformationReport;
|
|
25
35
|
}
|
|
26
36
|
//# sourceMappingURL=Rule_16_6_SwitchMinTwoClauses.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule_16_6_SwitchMinTwoClauses.d.ts","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Rule_16_6_SwitchMinTwoClauses.d.ts","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAU,MAAM,qCAAqC,CAAC;AACvE,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAwB,yBAAyB,EAA2B,MAAM,gBAAgB,CAAC;AAGxH;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,SAAS;IAChE;;OAEG;IACH,QAAQ,CAAC,QAAQ,KAAK;IAEtB;;OAEG;IACH,QAAQ,CAAC,YAAY,wCAAwC;IAE5D;;MAEE;IACH,IAAa,IAAI,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO;IAU1D;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,yBAAyB;CAsBnD"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import { Switch } from "@specs-feup/clava/api/Joinpoints.js";
|
|
2
2
|
import MISRARule from "../../MISRARule.js";
|
|
3
|
-
import { MISRASwitchConverter, MISRATransformationReport, MISRATransformationType } from "../../MISRA.js";
|
|
4
|
-
import {
|
|
3
|
+
import { AnalysisType, MISRASwitchConverter, MISRATransformationReport, MISRATransformationType } from "../../MISRA.js";
|
|
4
|
+
import { countSwitchClauses, hasConditionalBreak } from "../../utils/SwitchUtils.js";
|
|
5
5
|
/**
|
|
6
|
-
* MISRA Rule 16.6: Every switch statement shall have at least two switch-clauses.
|
|
6
|
+
* MISRA-C Rule 16.6: Every switch statement shall have at least two switch-clauses.
|
|
7
7
|
*/
|
|
8
8
|
export default class Rule_16_6_SwitchMinTwoClauses extends MISRARule {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* A positive integer starting from 1 that indicates the rule's priority, determining the order in which rules are applied.
|
|
11
|
+
*/
|
|
12
|
+
priority = 5;
|
|
13
|
+
/**
|
|
14
|
+
* Scope of analysis
|
|
15
|
+
*/
|
|
16
|
+
analysisType = AnalysisType.SINGLE_TRANSLATION_UNIT;
|
|
17
|
+
/**
|
|
18
|
+
* @returns Rule identifier according to MISRA-C:2012
|
|
19
|
+
*/
|
|
20
|
+
get name() {
|
|
21
|
+
return "16.6";
|
|
11
22
|
}
|
|
12
23
|
/**
|
|
13
24
|
* Checks if the given joinpoint is a switch statement with less than two clauses
|
|
@@ -18,7 +29,7 @@ export default class Rule_16_6_SwitchMinTwoClauses extends MISRARule {
|
|
|
18
29
|
match($jp, logErrors = false) {
|
|
19
30
|
if (!($jp instanceof Switch))
|
|
20
31
|
return false;
|
|
21
|
-
const nonCompliant =
|
|
32
|
+
const nonCompliant = countSwitchClauses($jp) < 2;
|
|
22
33
|
if (nonCompliant && logErrors) {
|
|
23
34
|
this.logMISRAError($jp, "Switch statements should have at least two clauses.");
|
|
24
35
|
}
|
|
@@ -31,14 +42,17 @@ export default class Rule_16_6_SwitchMinTwoClauses extends MISRARule {
|
|
|
31
42
|
* @param $jp - Joinpoint to transform
|
|
32
43
|
* @returns Report detailing the transformation result
|
|
33
44
|
*/
|
|
34
|
-
|
|
45
|
+
apply($jp) {
|
|
35
46
|
if (!this.match($jp))
|
|
36
47
|
return new MISRATransformationReport(MISRATransformationType.NoChange);
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
const switchJp = $jp;
|
|
49
|
+
if (hasConditionalBreak(switchJp)) {
|
|
50
|
+
if (switchJp.hasDefaultCase) {
|
|
51
|
+
this.logMISRAError($jp, "Switch statement must have at least two clauses and cannot be transformed due to a conditional break statement.");
|
|
52
|
+
}
|
|
39
53
|
return new MISRATransformationReport(MISRATransformationType.NoChange);
|
|
40
54
|
}
|
|
41
|
-
const transformResultNode = MISRASwitchConverter.convert(
|
|
55
|
+
const transformResultNode = MISRASwitchConverter.convert(switchJp);
|
|
42
56
|
if (transformResultNode) {
|
|
43
57
|
return new MISRATransformationReport(MISRATransformationType.Replacement, transformResultNode);
|
|
44
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule_16_6_SwitchMinTwoClauses.js","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Rule_16_6_SwitchMinTwoClauses.js","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAErF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,SAAS;IAChE;;OAEG;IACM,QAAQ,GAAG,CAAC,CAAC;IAEtB;;OAEG;IACM,YAAY,GAAG,YAAY,CAAC,uBAAuB,CAAC;IAE5D;;MAEE;IACH,IAAa,IAAI;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAc,EAAE,YAAqB,KAAK;QAC5C,IAAI,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAE3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,qDAAqD,CAAC,CAAA;QAClF,CAAC;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAc;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAChB,OAAO,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,GAAa,CAAC;QAC/B,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,iHAAiH,CAAC,CAAA;YAC9I,CAAC;YACD,OAAO,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,mBAAmB,EAAE,CAAC;YACtB,OAAO,IAAI,yBAAyB,CAChC,uBAAuB,CAAC,WAAW,EACnC,mBAAmB,CACtB,CAAC;QACN,CAAC;QACD,sDAAsD;QACtD,OAAO,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;CACJ"}
|
|
@@ -1,12 +1,28 @@
|
|
|
1
|
-
import { Joinpoint } from "@specs-feup/clava/api/Joinpoints.js";
|
|
1
|
+
import { Joinpoint, Switch } from "@specs-feup/clava/api/Joinpoints.js";
|
|
2
2
|
import MISRARule from "../../MISRARule.js";
|
|
3
|
-
import
|
|
4
|
-
import { MISRATransformationReport } from "../../MISRA.js";
|
|
3
|
+
import { AnalysisType, MISRATransformationReport } from "../../MISRA.js";
|
|
5
4
|
/**
|
|
6
|
-
* MISRA Rule 16.7: A switch-expression shall not have essentially Boolean type.
|
|
5
|
+
* MISRA-C Rule 16.7: A switch-expression shall not have essentially Boolean type.
|
|
7
6
|
*/
|
|
8
7
|
export default class Rule_16_7_NonBooleanSwitchCondition extends MISRARule {
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* A positive integer starting from 1 that indicates the rule's priority, determining the order in which rules are applied.
|
|
10
|
+
*/
|
|
11
|
+
readonly priority = 5;
|
|
12
|
+
/**
|
|
13
|
+
* Scope of analysis
|
|
14
|
+
*/
|
|
15
|
+
readonly analysisType = AnalysisType.SINGLE_TRANSLATION_UNIT;
|
|
16
|
+
/**
|
|
17
|
+
* @returns Rule identifier according to MISRA-C:2012
|
|
18
|
+
*/
|
|
19
|
+
get name(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Checks if the provided switch statement has a Boolean condition
|
|
22
|
+
* @param switchStmt The switch statement to check
|
|
23
|
+
* @returns Returns true if the switch statement has a Boolean condition, otherwise false
|
|
24
|
+
*/
|
|
25
|
+
switchHasBooleanCondition(switchStmt: Switch): boolean;
|
|
10
26
|
/**
|
|
11
27
|
* Checks if the given joinpoint is a switch statement with an essentially Boolean condition
|
|
12
28
|
* @param $jp - Joinpoint to analyze
|
|
@@ -21,6 +37,6 @@ export default class Rule_16_7_NonBooleanSwitchCondition extends MISRARule {
|
|
|
21
37
|
* @param $jp - Joinpoint to transform
|
|
22
38
|
* @returns Report detailing the transformation result
|
|
23
39
|
*/
|
|
24
|
-
|
|
40
|
+
apply($jp: Joinpoint): MISRATransformationReport;
|
|
25
41
|
}
|
|
26
42
|
//# sourceMappingURL=Rule_16_7_NonBooleanSwitchCondition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule_16_7_NonBooleanSwitchCondition.d.ts","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Rule_16_7_NonBooleanSwitchCondition.d.ts","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,SAAS,EAAE,MAAM,EAAW,MAAM,qCAAqC,CAAC;AACxG,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAwB,yBAAyB,EAA2B,MAAM,gBAAgB,CAAC;AAIxH;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,mCAAoC,SAAQ,SAAS;IACtE;;OAEG;IACH,QAAQ,CAAC,QAAQ,KAAK;IAEtB;;OAEG;IACH,QAAQ,CAAC,YAAY,wCAAwC;IAE7D;;OAEG;IACH,IAAa,IAAI,IAAI,MAAM,CAE1B;IAED;;;;OAIG;IACH,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAatD;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO;IAU1D;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,yBAAyB;CAmBnD"}
|
|
@@ -1,13 +1,40 @@
|
|
|
1
|
-
import { Switch } from "@specs-feup/clava/api/Joinpoints.js";
|
|
1
|
+
import { BinaryOp, BuiltinType, Switch, UnaryOp } from "@specs-feup/clava/api/Joinpoints.js";
|
|
2
2
|
import MISRARule from "../../MISRARule.js";
|
|
3
|
-
import { MISRASwitchConverter, MISRATransformationReport, MISRATransformationType } from "../../MISRA.js";
|
|
4
|
-
import {
|
|
3
|
+
import { AnalysisType, MISRASwitchConverter, MISRATransformationReport, MISRATransformationType } from "../../MISRA.js";
|
|
4
|
+
import { hasConditionalBreak } from "../../utils/SwitchUtils.js";
|
|
5
|
+
import { hasDefinedType } from "../../utils/JoinpointUtils.js";
|
|
5
6
|
/**
|
|
6
|
-
* MISRA Rule 16.7: A switch-expression shall not have essentially Boolean type.
|
|
7
|
+
* MISRA-C Rule 16.7: A switch-expression shall not have essentially Boolean type.
|
|
7
8
|
*/
|
|
8
9
|
export default class Rule_16_7_NonBooleanSwitchCondition extends MISRARule {
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* A positive integer starting from 1 that indicates the rule's priority, determining the order in which rules are applied.
|
|
12
|
+
*/
|
|
13
|
+
priority = 5;
|
|
14
|
+
/**
|
|
15
|
+
* Scope of analysis
|
|
16
|
+
*/
|
|
17
|
+
analysisType = AnalysisType.SINGLE_TRANSLATION_UNIT;
|
|
18
|
+
/**
|
|
19
|
+
* @returns Rule identifier according to MISRA-C:2012
|
|
20
|
+
*/
|
|
21
|
+
get name() {
|
|
22
|
+
return "16.7";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Checks if the provided switch statement has a Boolean condition
|
|
26
|
+
* @param switchStmt The switch statement to check
|
|
27
|
+
* @returns Returns true if the switch statement has a Boolean condition, otherwise false
|
|
28
|
+
*/
|
|
29
|
+
switchHasBooleanCondition(switchStmt) {
|
|
30
|
+
const switchCondition = switchStmt.condition;
|
|
31
|
+
if (switchCondition instanceof BinaryOp || switchCondition instanceof UnaryOp) {
|
|
32
|
+
const logicalOps = new Set(["lt", "gt", "le", "ge", "eq", "ne", "not", "l_not", "and", "or"]);
|
|
33
|
+
return logicalOps.has(switchCondition.kind);
|
|
34
|
+
}
|
|
35
|
+
return hasDefinedType(switchCondition) &&
|
|
36
|
+
switchCondition.type instanceof BuiltinType &&
|
|
37
|
+
switchCondition.type.builtinKind === "Bool";
|
|
11
38
|
}
|
|
12
39
|
/**
|
|
13
40
|
* Checks if the given joinpoint is a switch statement with an essentially Boolean condition
|
|
@@ -18,9 +45,9 @@ export default class Rule_16_7_NonBooleanSwitchCondition extends MISRARule {
|
|
|
18
45
|
match($jp, logErrors = false) {
|
|
19
46
|
if (!($jp instanceof Switch))
|
|
20
47
|
return false;
|
|
21
|
-
const booleanCondition = switchHasBooleanCondition($jp);
|
|
48
|
+
const booleanCondition = this.switchHasBooleanCondition($jp);
|
|
22
49
|
if (booleanCondition && logErrors) {
|
|
23
|
-
this.logMISRAError($jp, `Switch statement controlling expression ${$jp.condition.code} must not have essentially boolean type.`);
|
|
50
|
+
this.logMISRAError($jp, `Switch statement controlling expression '${$jp.condition.code}' must not have essentially boolean type.`);
|
|
24
51
|
}
|
|
25
52
|
return booleanCondition;
|
|
26
53
|
}
|
|
@@ -31,10 +58,10 @@ export default class Rule_16_7_NonBooleanSwitchCondition extends MISRARule {
|
|
|
31
58
|
* @param $jp - Joinpoint to transform
|
|
32
59
|
* @returns Report detailing the transformation result
|
|
33
60
|
*/
|
|
34
|
-
|
|
61
|
+
apply($jp) {
|
|
35
62
|
if (!this.match($jp))
|
|
36
63
|
return new MISRATransformationReport(MISRATransformationType.NoChange);
|
|
37
|
-
if (
|
|
64
|
+
if (hasConditionalBreak($jp)) {
|
|
38
65
|
this.logMISRAError($jp, `The switch statement's controlling expression ${$jp.condition.code} must not be of a boolean type and cannot be transformed due to a conditional break statement.`);
|
|
39
66
|
return new MISRATransformationReport(MISRATransformationType.NoChange);
|
|
40
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule_16_7_NonBooleanSwitchCondition.js","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Rule_16_7_NonBooleanSwitchCondition.js","sourceRoot":"","sources":["../../../src/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAa,MAAM,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACxG,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,mCAAoC,SAAQ,SAAS;IACtE;;OAEG;IACM,QAAQ,GAAG,CAAC,CAAC;IAEtB;;OAEG;IACM,YAAY,GAAG,YAAY,CAAC,uBAAuB,CAAC;IAE7D;;OAEG;IACH,IAAa,IAAI;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,yBAAyB,CAAC,UAAkB;QACxC,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC;QAE7C,IAAI,eAAe,YAAY,QAAQ,IAAI,eAAe,YAAY,OAAO,EAAE,CAAC;YAC5E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9F,OAAO,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,cAAc,CAAC,eAAe,CAAC;YAClC,eAAe,CAAC,IAAI,YAAY,WAAW;YAC3C,eAAe,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAc,EAAE,YAAqB,KAAK;QAC5C,IAAI,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAE3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,gBAAgB,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,4CAA4C,GAAG,CAAC,SAAS,CAAC,IAAI,2CAA2C,CAAC,CAAA;QACtI,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAc;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAChB,OAAO,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,mBAAmB,CAAC,GAAa,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,iDAAkD,GAAc,CAAC,SAAS,CAAC,IAAI,gGAAgG,CAAC,CAAA;YACxM,OAAO,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAa,CAAC,CAAC;QACxE,IAAI,mBAAmB,EAAE,CAAC;YACtB,OAAO,IAAI,yBAAyB,CAChC,uBAAuB,CAAC,WAAW,EACnC,mBAAmB,CACtB,CAAC;QACN,CAAC;QACD,sDAAsD;QACtD,OAAO,IAAI,yBAAyB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;CACJ"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Call, Joinpoint } from "@specs-feup/clava/api/Joinpoints.js";
|
|
2
|
+
import { AnalysisType, MISRATransformationReport } from "../../MISRA.js";
|
|
3
|
+
import UserConfigurableRule from "../UserConfigurableRule.js";
|
|
4
|
+
/**
|
|
5
|
+
* MISRA-C Rule 17.3: A function shall not be declared implicitly
|
|
6
|
+
*/
|
|
7
|
+
export default class Rule_17_3_ImplicitFunction extends UserConfigurableRule {
|
|
8
|
+
/**
|
|
9
|
+
* A positive integer starting from 1 that indicates the rule's priority, determining the order in which rules are applied.
|
|
10
|
+
*/
|
|
11
|
+
readonly priority = 1;
|
|
12
|
+
/**
|
|
13
|
+
* Scope of analysis
|
|
14
|
+
*/
|
|
15
|
+
readonly analysisType = AnalysisType.SINGLE_TRANSLATION_UNIT;
|
|
16
|
+
/**
|
|
17
|
+
* Standards to which this rule applies to
|
|
18
|
+
*/
|
|
19
|
+
protected readonly appliesTo: Set<string>;
|
|
20
|
+
/**
|
|
21
|
+
* @returns Rule identifier according to MISRA-C:2012
|
|
22
|
+
*/
|
|
23
|
+
get name(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Returns the prefix to be used for error messages related to the given joinpoint
|
|
26
|
+
*
|
|
27
|
+
* @param $jp - Joinpoint where the violation was detected
|
|
28
|
+
* @returns Returns a prefix to prepend to error messages if no configuration is specified or if the configuration does not contain a fix for this violation
|
|
29
|
+
*/
|
|
30
|
+
getErrorMsgPrefix(callJp: Call): string;
|
|
31
|
+
/**
|
|
32
|
+
* Retrieves the fix for a implicit call specified on the config file (.h or .c)
|
|
33
|
+
* @param callJp
|
|
34
|
+
* @param errorMsgPrefix
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
getFixFromConfig(callJp: Call): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Checks if the given joinpoint represents a call to an implicit function.
|
|
40
|
+
*
|
|
41
|
+
* @param $jp - Joinpoint to analyze
|
|
42
|
+
* @param logErrors - [logErrors=false] - Whether to log errors if a violation is detected
|
|
43
|
+
* @returns Returns true if the joinpoint violates the rule, false otherwise
|
|
44
|
+
*/
|
|
45
|
+
match($jp: Joinpoint, logErrors?: boolean): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Transforms every implicit call by adding a missing include directive or extern statement specified on the config file.
|
|
48
|
+
*
|
|
49
|
+
* - If the configuration is missing or the specified fix is invalid (i.e., not a '.h' or '.c' file), no transformation is performed and the call is left unchanged.
|
|
50
|
+
* - The fix is applied only if it successfully resolves the issue (i.e., makes the call explicit and the file compiles with no error).
|
|
51
|
+
* - Otherwise, the fix is removed.
|
|
52
|
+
*
|
|
53
|
+
* @param $jp - Joinpoint to transform
|
|
54
|
+
* @returns Report detailing the transformation result
|
|
55
|
+
*/
|
|
56
|
+
apply($jp: Joinpoint): MISRATransformationReport;
|
|
57
|
+
/**
|
|
58
|
+
* Attempts to resolve implicit function calls in a file by adding missing includes or extern statements based on the configuration file.
|
|
59
|
+
* @param fileJp The file to analyze
|
|
60
|
+
* @returns `true` if any changes were made to the file, otherwise `false`.
|
|
61
|
+
*/
|
|
62
|
+
private solveImplicitCalls;
|
|
63
|
+
private solveWithInclude;
|
|
64
|
+
private solveWithExtern;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=Rule_17_3_ImplicitFunction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rule_17_3_ImplicitFunction.d.ts","sourceRoot":"","sources":["../../../src/rules/Section17_Functions/Rule_17_3_ImplicitFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAU,SAAS,EAAW,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAA2B,MAAM,gBAAgB,CAAC;AAKlG,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,oBAAoB;IACxE;;OAEG;IACH,QAAQ,CAAC,QAAQ,KAAK;IAEtB;;OAEG;IACH,QAAQ,CAAC,YAAY,wCAAwC;IAE7D;;OAEG;IACH,mBAA4B,SAAS,cAAoB;IAEzD;;OAEG;IACH,IAAa,IAAI,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM;IAIvC;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS;IA4BlD;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO;IAa1D;;;;;;;;;OASG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,yBAAyB;IAqBhD;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,eAAe;CAwB1B"}
|