@specs-feup/clava-misra 1.0.0 → 1.0.1
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 +117 -0
- package/README.md +70 -15
- package/dist/MISRA.d.ts +129 -0
- package/dist/MISRA.d.ts.map +1 -0
- package/dist/MISRA.js +245 -0
- package/dist/MISRA.js.map +1 -0
- package/dist/MISRAContext.d.ts +21 -0
- package/dist/MISRAContext.d.ts.map +1 -0
- package/dist/MISRAContext.js +75 -0
- package/dist/MISRAContext.js.map +1 -0
- package/dist/MISRARule.d.ts +56 -0
- package/dist/MISRARule.d.ts.map +1 -0
- package/dist/MISRARule.js +45 -0
- package/dist/MISRARule.js.map +1 -0
- package/dist/MISRATool.d.ts +12 -0
- package/dist/MISRATool.d.ts.map +1 -0
- package/dist/MISRATool.js +84 -0
- package/dist/MISRATool.js.map +1 -0
- package/dist/foo.d.ts +2 -0
- package/dist/foo.d.ts.map +1 -0
- package/{src/foo.ts → dist/foo.js} +3 -2
- package/dist/foo.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +5 -0
- package/dist/main.js.map +1 -0
- package/dist/misra/MISRAAnalyser.d.ts +14 -0
- package/dist/misra/MISRAAnalyser.d.ts.map +1 -0
- package/{src/misra/MISRAAnalyser.ts → dist/misra/MISRAAnalyser.js} +13 -23
- package/dist/misra/MISRAAnalyser.js.map +1 -0
- package/dist/misra/MISRAPass.d.ts +27 -0
- package/dist/misra/MISRAPass.d.ts.map +1 -0
- package/dist/misra/MISRAPass.js +60 -0
- package/dist/misra/MISRAPass.js.map +1 -0
- package/dist/misra/MISRAPassResult.d.ts +13 -0
- package/dist/misra/MISRAPassResult.d.ts.map +1 -0
- package/dist/misra/MISRAPassResult.js +11 -0
- package/dist/misra/MISRAPassResult.js.map +1 -0
- package/dist/misra/MISRAReporter.d.ts +20 -0
- package/dist/misra/MISRAReporter.d.ts.map +1 -0
- package/dist/misra/MISRAReporter.js +43 -0
- package/dist/misra/MISRAReporter.js.map +1 -0
- package/dist/misra/passes/S10_EssentialTypePass.d.ts +42 -0
- package/dist/misra/passes/S10_EssentialTypePass.d.ts.map +1 -0
- package/dist/misra/passes/S10_EssentialTypePass.js +370 -0
- package/dist/misra/passes/S10_EssentialTypePass.js.map +1 -0
- package/dist/misra/passes/S12_ExpressionPass.d.ts +18 -0
- package/dist/misra/passes/S12_ExpressionPass.d.ts.map +1 -0
- package/dist/misra/passes/S12_ExpressionPass.js +72 -0
- package/dist/misra/passes/S12_ExpressionPass.js.map +1 -0
- package/dist/misra/passes/S13_SideEffectPass.d.ts +18 -0
- package/dist/misra/passes/S13_SideEffectPass.d.ts.map +1 -0
- package/dist/misra/passes/S13_SideEffectPass.js +105 -0
- package/dist/misra/passes/S13_SideEffectPass.js.map +1 -0
- package/dist/misra/passes/S15_ControlFlowPass.d.ts +19 -0
- package/dist/misra/passes/S15_ControlFlowPass.d.ts.map +1 -0
- package/dist/misra/passes/S15_ControlFlowPass.js +94 -0
- package/dist/misra/passes/S15_ControlFlowPass.js.map +1 -0
- package/dist/misra/passes/S16_SwitchStatementPass.d.ts +17 -0
- package/dist/misra/passes/S16_SwitchStatementPass.d.ts.map +1 -0
- package/dist/misra/passes/S16_SwitchStatementPass.js +152 -0
- package/dist/misra/passes/S16_SwitchStatementPass.js.map +1 -0
- package/dist/misra/passes/S17_FunctionPass.d.ts +12 -0
- package/dist/misra/passes/S17_FunctionPass.d.ts.map +1 -0
- package/dist/misra/passes/S17_FunctionPass.js +38 -0
- package/dist/misra/passes/S17_FunctionPass.js.map +1 -0
- package/dist/misra/passes/S18_PointersArraysPass.d.ts +17 -0
- package/dist/misra/passes/S18_PointersArraysPass.d.ts.map +1 -0
- package/dist/misra/passes/S18_PointersArraysPass.js +115 -0
- package/dist/misra/passes/S18_PointersArraysPass.js.map +1 -0
- package/dist/misra/passes/S19_OverlappingStoragePass.d.ts +11 -0
- package/dist/misra/passes/S19_OverlappingStoragePass.d.ts.map +1 -0
- package/dist/misra/passes/S19_OverlappingStoragePass.js +20 -0
- package/dist/misra/passes/S19_OverlappingStoragePass.js.map +1 -0
- package/dist/misra/passes/S21_StandardLibPass.d.ts +20 -0
- package/dist/misra/passes/S21_StandardLibPass.d.ts.map +1 -0
- package/dist/misra/passes/S21_StandardLibPass.js +77 -0
- package/dist/misra/passes/S21_StandardLibPass.js.map +1 -0
- package/dist/misra/passes/S3_CommentPass.d.ts +12 -0
- package/dist/misra/passes/S3_CommentPass.d.ts.map +1 -0
- package/dist/misra/passes/S3_CommentPass.js +27 -0
- package/dist/misra/passes/S3_CommentPass.js.map +1 -0
- package/dist/misra/passes/S5_IdentifierPass.d.ts +13 -0
- package/dist/misra/passes/S5_IdentifierPass.d.ts.map +1 -0
- package/dist/misra/passes/S5_IdentifierPass.js +60 -0
- package/dist/misra/passes/S5_IdentifierPass.js.map +1 -0
- package/dist/misra/passes/S6_TypePass.d.ts +11 -0
- package/dist/misra/passes/S6_TypePass.d.ts.map +1 -0
- package/dist/misra/passes/S6_TypePass.js +25 -0
- package/dist/misra/passes/S6_TypePass.js.map +1 -0
- package/dist/misra/passes/S7_LiteralsConstantsPass.d.ts +14 -0
- package/dist/misra/passes/S7_LiteralsConstantsPass.d.ts.map +1 -0
- package/dist/misra/passes/S7_LiteralsConstantsPass.js +71 -0
- package/dist/misra/passes/S7_LiteralsConstantsPass.js.map +1 -0
- package/dist/misra/passes/S8_DeclDefPass.d.ts +18 -0
- package/dist/misra/passes/S8_DeclDefPass.d.ts.map +1 -0
- package/dist/misra/passes/S8_DeclDefPass.js +127 -0
- package/dist/misra/passes/S8_DeclDefPass.js.map +1 -0
- package/dist/misra/sections/Section10_EssentialTypeModel.d.ts +33 -0
- package/dist/misra/sections/Section10_EssentialTypeModel.d.ts.map +1 -0
- package/{src/misra/sections/Section10_EssentialTypeModel.ts → dist/misra/sections/Section10_EssentialTypeModel.js} +58 -73
- package/dist/misra/sections/Section10_EssentialTypeModel.js.map +1 -0
- package/dist/misra/sections/Section11_PointerTypeConversions.d.ts +12 -0
- package/dist/misra/sections/Section11_PointerTypeConversions.d.ts.map +1 -0
- package/{src/misra/sections/Section11_PointerTypeConversions.ts → dist/misra/sections/Section11_PointerTypeConversions.js} +16 -27
- package/dist/misra/sections/Section11_PointerTypeConversions.js.map +1 -0
- package/dist/misra/sections/Section12_Expressions.d.ts +15 -0
- package/dist/misra/sections/Section12_Expressions.d.ts.map +1 -0
- package/dist/misra/sections/Section12_Expressions.js +70 -0
- package/dist/misra/sections/Section12_Expressions.js.map +1 -0
- package/dist/misra/sections/Section13_SideEffects.d.ts +14 -0
- package/dist/misra/sections/Section13_SideEffects.d.ts.map +1 -0
- package/dist/misra/sections/Section13_SideEffects.js +90 -0
- package/dist/misra/sections/Section13_SideEffects.js.map +1 -0
- package/dist/misra/sections/Section14_ControlStmtExprs.d.ts +8 -0
- package/dist/misra/sections/Section14_ControlStmtExprs.d.ts.map +1 -0
- package/{src/misra/sections/Section14_ControlStmtExprs.ts → dist/misra/sections/Section14_ControlStmtExprs.js} +8 -10
- package/dist/misra/sections/Section14_ControlStmtExprs.js.map +1 -0
- package/dist/misra/sections/Section15_ControlFlow.d.ts +14 -0
- package/dist/misra/sections/Section15_ControlFlow.d.ts.map +1 -0
- package/dist/misra/sections/Section15_ControlFlow.js +97 -0
- package/dist/misra/sections/Section15_ControlFlow.js.map +1 -0
- package/dist/misra/sections/Section16_SwitchStatements.d.ts +13 -0
- package/dist/misra/sections/Section16_SwitchStatements.d.ts.map +1 -0
- package/{src/misra/sections/Section16_SwitchStatements.ts → dist/misra/sections/Section16_SwitchStatements.js} +49 -74
- package/dist/misra/sections/Section16_SwitchStatements.js.map +1 -0
- package/dist/misra/sections/Section17_Functions.d.ts +9 -0
- package/dist/misra/sections/Section17_Functions.d.ts.map +1 -0
- package/{src/misra/sections/Section17_Functions.ts → dist/misra/sections/Section17_Functions.js} +10 -13
- package/dist/misra/sections/Section17_Functions.js.map +1 -0
- package/dist/misra/sections/Section18_PointersAndArrays.d.ts +13 -0
- package/dist/misra/sections/Section18_PointersAndArrays.d.ts.map +1 -0
- package/{src/misra/sections/Section18_PointersAndArrays.ts → dist/misra/sections/Section18_PointersAndArrays.js} +36 -40
- package/dist/misra/sections/Section18_PointersAndArrays.js.map +1 -0
- package/dist/misra/sections/Section19_OverlappingStorage.d.ts +8 -0
- package/dist/misra/sections/Section19_OverlappingStorage.d.ts.map +1 -0
- package/dist/misra/sections/Section19_OverlappingStorage.js +16 -0
- package/dist/misra/sections/Section19_OverlappingStorage.js.map +1 -0
- package/dist/misra/sections/Section20_PreprocessingDirectives.d.ts +8 -0
- package/dist/misra/sections/Section20_PreprocessingDirectives.d.ts.map +1 -0
- package/{src/misra/sections/Section20_PreprocessingDirectives.ts → dist/misra/sections/Section20_PreprocessingDirectives.js} +7 -9
- package/dist/misra/sections/Section20_PreprocessingDirectives.js.map +1 -0
- package/dist/misra/sections/Section21_StandardLibraries.d.ts +17 -0
- package/dist/misra/sections/Section21_StandardLibraries.d.ts.map +1 -0
- package/dist/misra/sections/Section21_StandardLibraries.js +54 -0
- package/dist/misra/sections/Section21_StandardLibraries.js.map +1 -0
- package/dist/misra/sections/Section2_UnusedCode.d.ts +9 -0
- package/dist/misra/sections/Section2_UnusedCode.d.ts.map +1 -0
- package/{src/misra/sections/Section2_UnusedCode.ts → dist/misra/sections/Section2_UnusedCode.js} +11 -16
- package/dist/misra/sections/Section2_UnusedCode.js.map +1 -0
- package/dist/misra/sections/Section3_Comments.d.ts +9 -0
- package/dist/misra/sections/Section3_Comments.d.ts.map +1 -0
- package/{src/misra/sections/Section3_Comments.ts → dist/misra/sections/Section3_Comments.js} +7 -10
- package/dist/misra/sections/Section3_Comments.js.map +1 -0
- package/dist/misra/sections/Section5_Identifiers.d.ts +12 -0
- package/dist/misra/sections/Section5_Identifiers.d.ts.map +1 -0
- package/dist/misra/sections/Section5_Identifiers.js +139 -0
- package/dist/misra/sections/Section5_Identifiers.js.map +1 -0
- package/dist/misra/sections/Section6_Types.d.ts +8 -0
- package/dist/misra/sections/Section6_Types.d.ts.map +1 -0
- package/dist/misra/sections/Section6_Types.js +23 -0
- package/dist/misra/sections/Section6_Types.js.map +1 -0
- package/dist/misra/sections/Section7_LiteralsConstants.d.ts +11 -0
- package/dist/misra/sections/Section7_LiteralsConstants.d.ts.map +1 -0
- package/{src/misra/sections/Section7_LiteralsConstants.ts → dist/misra/sections/Section7_LiteralsConstants.js} +18 -25
- package/dist/misra/sections/Section7_LiteralsConstants.js.map +1 -0
- package/dist/misra/sections/Section8_DeclarationsDefinitions.d.ts +15 -0
- package/dist/misra/sections/Section8_DeclarationsDefinitions.d.ts.map +1 -0
- package/{src/misra/sections/Section8_DeclarationsDefinitions.ts → dist/misra/sections/Section8_DeclarationsDefinitions.js} +18 -33
- package/dist/misra/sections/Section8_DeclarationsDefinitions.js.map +1 -0
- package/dist/misra/tests/utils.d.ts +10 -0
- package/dist/misra/tests/utils.d.ts.map +1 -0
- package/dist/misra/tests/utils.js +33 -0
- package/dist/misra/tests/utils.js.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.d.ts +15 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.d.ts.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.js +33 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.js.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.d.ts +16 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.d.ts.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.js +60 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.js.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.d.ts +19 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.d.ts.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.js +42 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.js.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.d.ts +43 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.d.ts.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.js +103 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.js.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.d.ts +26 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.d.ts.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.js +49 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.js.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.d.ts +26 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.d.ts.map +1 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.js +49 -0
- package/dist/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.js.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.d.ts +31 -0
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.d.ts.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.js +71 -0
- package/dist/rules/Section17_Functions/Rule_17_4_NonVoidReturn.js.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.d.ts +27 -0
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.d.ts.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.js +58 -0
- package/dist/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.js.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.d.ts +28 -0
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.d.ts.map +1 -0
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.js +44 -0
- package/dist/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.js.map +1 -0
- package/dist/rules/Section20-PreprocessingDirectives/Rule_20_2_InvalidHeaderFileName.d.ts +55 -0
- package/dist/rules/Section20-PreprocessingDirectives/Rule_20_2_InvalidHeaderFileName.d.ts.map +1 -0
- package/dist/rules/Section20-PreprocessingDirectives/Rule_20_2_InvalidHeaderFileName.js +108 -0
- package/dist/rules/Section20-PreprocessingDirectives/Rule_20_2_InvalidHeaderFileName.js.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.d.ts +43 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.d.ts.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.js +68 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.js.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.d.ts +29 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.d.ts.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.js +53 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.js.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.d.ts +15 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.d.ts.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.js +35 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.js.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.d.ts +13 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.d.ts.map +1 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.js +53 -0
- package/dist/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.js.map +1 -0
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.d.ts +13 -0
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.d.ts.map +1 -0
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.js +32 -0
- package/dist/rules/Section3_Comments/Rule_3_1_CommentSequences.js.map +1 -0
- package/dist/rules/Section3_Comments/Rule_3_2_LineSplicing.d.ts +10 -0
- package/dist/rules/Section3_Comments/Rule_3_2_LineSplicing.d.ts.map +1 -0
- package/dist/rules/Section3_Comments/Rule_3_2_LineSplicing.js +26 -0
- package/dist/rules/Section3_Comments/Rule_3_2_LineSplicing.js.map +1 -0
- package/dist/rules/index.d.ts +20 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +38 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/tests/Section17_Functions/misra_config.json +10 -0
- package/dist/tests/utils.d.ts +10 -0
- package/dist/tests/utils.d.ts.map +1 -0
- package/dist/tests/utils.js +29 -0
- package/dist/tests/utils.js.map +1 -0
- package/dist/utils/utils.d.ts +102 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +202 -0
- package/dist/utils/utils.js.map +1 -0
- package/jest.config.js +6 -6
- package/package.json +40 -8
- package/src/MISRA.ts +266 -0
- package/src/MISRAContext.ts +91 -0
- package/src/MISRARule.ts +77 -0
- package/src/MISRATool.ts +96 -0
- package/src/main.ts +4 -33
- package/src/misra-old/MISRAAnalyser.ts +60 -0
- package/src/misra-old/MISRAAnalyserResult.ts +16 -0
- package/src/misra-old/sections/Section10_EssentialTypeModel.ts +377 -0
- package/src/misra-old/sections/Section11_PointerTypeConversions.ts +104 -0
- package/src/{misra → misra-old}/sections/Section12_Expressions.ts +7 -7
- package/src/{misra → misra-old}/sections/Section13_SideEffects.ts +15 -15
- package/src/misra-old/sections/Section14_ControlStmtExprs.ts +27 -0
- package/src/{misra → misra-old}/sections/Section15_ControlFlow.ts +10 -10
- package/src/misra-old/sections/Section18_PointersAndArrays.ts +108 -0
- package/src/{misra → misra-old}/sections/Section19_OverlappingStorage.ts +4 -4
- package/src/misra-old/sections/Section20_PreprocessingDirectives.ts +22 -0
- package/src/misra-old/sections/Section21_StandardLibraries.ts +99 -0
- package/src/{misra → misra-old}/sections/Section5_Identifiers.ts +16 -15
- package/src/{misra → misra-old}/sections/Section6_Types.ts +4 -4
- package/src/misra-old/sections/Section7_LiteralsConstants.ts +76 -0
- package/src/misra-old/sections/Section8_DeclarationsDefinitions.ts +133 -0
- package/src/rules/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.ts +40 -0
- package/src/rules/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.ts +69 -0
- package/src/rules/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.ts +46 -0
- package/src/rules/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.ts +113 -0
- package/src/rules/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.ts +57 -0
- package/src/rules/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.ts +56 -0
- package/src/rules/Section17_Functions/Rule_17_4_NonVoidReturn.ts +78 -0
- package/src/rules/Section17_Functions/Rule_17_6_StaticArraySizeParam.ts +68 -0
- package/src/rules/Section17_Functions/Rule_17_7_UnusedReturnValue.ts +47 -0
- package/src/rules/Section20-PreprocessingDirectives/Rule_20_2_InvalidHeaderFileName.ts +120 -0
- package/src/rules/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.ts +75 -0
- package/src/rules/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.ts +60 -0
- package/src/rules/Section2_UnusedCode/Rule_2_6_UnusedLabels.ts +46 -0
- package/src/rules/Section2_UnusedCode/Rule_2_7_UnusedParameters.ts +65 -0
- package/src/rules/Section3_Comments/Rule_3_1_CommentSequences.ts +41 -0
- package/src/rules/Section3_Comments/Rule_3_2_LineSplicing.ts +36 -0
- package/src/rules/index.ts +40 -0
- package/src/tests/Section16_SwitchStatements/Rule_16_2_TopLevelSwitch.test.ts +55 -0
- package/src/tests/Section16_SwitchStatements/Rule_16_3_UnconditionalBreak.test.ts +70 -0
- package/src/tests/Section16_SwitchStatements/Rule_16_4_SwitchHasDefault.test.ts +128 -0
- package/src/tests/Section16_SwitchStatements/Rule_16_5_DefaultFirstOrLast.test.ts +132 -0
- package/src/tests/Section16_SwitchStatements/Rule_16_6_SwitchMinTwoClauses.test.ts +146 -0
- package/src/tests/Section16_SwitchStatements/Rule_16_7_NonBooleanSwitchCondition.test.ts +102 -0
- package/src/tests/Section17_Functions/Rule_17_4_NonVoidReturn.test.ts +85 -0
- package/src/tests/Section17_Functions/Rule_17_4_NonVoidReturn_MissingConfig.test.ts +77 -0
- package/src/tests/Section17_Functions/Rule_17_6_StaticArraySizeParam.test.ts +36 -0
- package/src/tests/Section17_Functions/Rule_17_7_UnusedReturnValue.test.ts +44 -0
- package/src/tests/Section17_Functions/misra_config.json +10 -0
- package/src/tests/Section2_UnusedCode/Rule_2_3_UnusedTypeDecl.test.ts +175 -0
- package/src/tests/Section2_UnusedCode/Rule_2_4_UnusedTagDecl.test.ts +219 -0
- package/src/tests/Section2_UnusedCode/Rule_2_6_UnusedLabels.test.ts +49 -0
- package/src/tests/Section2_UnusedCode/Rule_2_7_UnusedParameters.test.ts +55 -0
- package/src/tests/Section3_Comments/Rule_3_1_CommentSequences.test.ts +37 -0
- package/src/tests/utils.ts +39 -0
- package/src/utils/utils.ts +221 -0
- package/tsconfig.json +4 -3
- package/typedoc.config.js +1 -1
- package/CxxSources/lib.cpp +0 -3
- package/CxxSources/lib.h +0 -8
- package/CxxSources/main.cpp +0 -40
- package/TODO.md +0 -1
- package/consumer_order.txt +0 -2
- package/enum_integer_type.txt +0 -0
- package/is_temporary.txt +0 -0
- package/omp.txt +0 -0
- package/src/misra/passes/S16_SwitchStatementPass.ts +0 -168
- package/src/misra/passes/S3_CommentPass.ts +0 -40
- package/src/misra/sections/Section21_StandardLibraries.ts +0 -65
- package/src/misra/tests/S10_EssentialTypes.test.ts +0 -253
- package/src/misra/tests/S12_Expressions.test.ts +0 -43
- package/src/misra/tests/S13_SideEffects.test.ts +0 -77
- package/src/misra/tests/S15_ControlFlow.test.ts +0 -144
- package/src/misra/tests/S16_SwitchStatements.test.ts +0 -164
- package/src/misra/tests/S17_Functions.test.ts +0 -46
- package/src/misra/tests/S18_PointersArrays.test.ts +0 -167
- package/src/misra/tests/S19_OverlappingStorage.test.ts +0 -38
- package/src/misra/tests/S3_Comments.test.ts +0 -36
- package/src/misra/tests/S6_Types.test.ts +0 -36
- package/src/misra/tests/S7_LiteralsConstants.test.ts +0 -48
- package/src/misra/tests/utils.ts +0 -47
- package/types_with_templates.txt +0 -0
- /package/src/{misra → misra-old}/MISRAPass.ts +0 -0
- /package/src/{misra → misra-old}/MISRAPassResult.ts +0 -0
- /package/src/{misra → misra-old}/MISRAReporter.ts +0 -0
- /package/src/{misra → misra-old}/passes/S10_EssentialTypePass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S12_ExpressionPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S13_SideEffectPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S15_ControlFlowPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S17_FunctionPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S18_PointersArraysPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S19_OverlappingStoragePass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S21_StandardLibPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S5_IdentifierPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S6_TypePass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S7_LiteralsConstantsPass.ts +0 -0
- /package/src/{misra → misra-old}/passes/S8_DeclDefPass.ts +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Section10_EssentialTypeModel.d.ts","sourceRoot":"","sources":["../../../src/misra/sections/Section10_EssentialTypeModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAA8D,IAAI,EAAE,UAAU,EAAuF,MAAM,qCAAqC,CAAC;AACzO,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAIhD,oBAAY,cAAc;IACtB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;CACpB;AAED,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,aAAa;IACnE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC;gBAE5C,KAAK,EAAE,MAAM,EAAE;IAY3B,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,cAAc;IA8BpD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO;IAI9C,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc;IAmB9D,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kCAAkC;IA0D1C,OAAO,CAAC,6BAA6B;IAqCrC,OAAO,CAAC,0BAA0B;IAiClC,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC,OAAO,CAAC,MAAM,CAAC,eAAe;IAiB9B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAIhC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAcjC,OAAO,CAAC,qCAAqC;IAgC7C,OAAO,CAAC,2BAA2B;CAuBtC"}
|
@@ -1,23 +1,22 @@
|
|
1
1
|
import Query from "@specs-feup/lara/api/weaver/Query.js";
|
2
|
-
import {
|
2
|
+
import { TernaryOp, UnaryOp, BinaryOp, Cast, BuiltinType, Expression, IntLiteral, EnumType, QualType, ReturnStmt, Call, Op, ParenExpr } from "@specs-feup/clava/api/Joinpoints.js";
|
3
3
|
import MISRAAnalyser from "../MISRAAnalyser.js";
|
4
4
|
import Fix from "@specs-feup/clava/api/clava/analysis/Fix.js";
|
5
5
|
import ClavaJoinPoints from "@specs-feup/clava/api/clava/ClavaJoinPoints.js";
|
6
|
-
|
7
|
-
|
8
|
-
UNSIGNED = "unsigned"
|
9
|
-
CHAR = "char"
|
10
|
-
SIGNED = "signed"
|
11
|
-
ENUM = "enum"
|
12
|
-
FLOAT = "float"
|
13
|
-
BOOL = "bool"
|
14
|
-
UNKOWN = "unkown"
|
15
|
-
};
|
16
|
-
|
6
|
+
export var EssentialTypes;
|
7
|
+
(function (EssentialTypes) {
|
8
|
+
EssentialTypes["UNSIGNED"] = "unsigned";
|
9
|
+
EssentialTypes["CHAR"] = "char";
|
10
|
+
EssentialTypes["SIGNED"] = "signed";
|
11
|
+
EssentialTypes["ENUM"] = "enum";
|
12
|
+
EssentialTypes["FLOAT"] = "float";
|
13
|
+
EssentialTypes["BOOL"] = "bool";
|
14
|
+
EssentialTypes["UNKOWN"] = "unkown";
|
15
|
+
})(EssentialTypes || (EssentialTypes = {}));
|
16
|
+
;
|
17
17
|
export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
18
|
-
ruleMapper
|
19
|
-
|
20
|
-
constructor(rules: number[]) {
|
18
|
+
ruleMapper;
|
19
|
+
constructor(rules) {
|
21
20
|
super(rules);
|
22
21
|
this.ruleMapper = new Map([
|
23
22
|
[1, this.r10_1_appropriateEssentialOperands.bind(this)],
|
@@ -28,13 +27,11 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
28
27
|
[8, this.r10_8_noWiderCompositeCasts.bind(this)]
|
29
28
|
]);
|
30
29
|
}
|
31
|
-
|
32
|
-
static getEssentialType(bType: Type): EssentialTypes {
|
30
|
+
static getEssentialType(bType) {
|
33
31
|
let type = bType.desugarAll;
|
34
32
|
while (type instanceof QualType) {
|
35
33
|
type = type.unqualifiedType.desugarAll;
|
36
34
|
}
|
37
|
-
|
38
35
|
if (type instanceof BuiltinType) {
|
39
36
|
if (type.builtinKind === "Bool") {
|
40
37
|
return EssentialTypes.BOOL;
|
@@ -55,19 +52,16 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
55
52
|
else if (type instanceof EnumType) {
|
56
53
|
return type.name === undefined ? EssentialTypes.SIGNED : EssentialTypes.ENUM;
|
57
54
|
}
|
58
|
-
|
59
55
|
return EssentialTypes.UNKOWN;
|
60
56
|
}
|
61
|
-
|
62
|
-
static isInteger($et: EssentialTypes): boolean {
|
57
|
+
static isInteger($et) {
|
63
58
|
return $et === EssentialTypes.SIGNED || $et === EssentialTypes.UNSIGNED;
|
64
59
|
}
|
65
|
-
|
66
|
-
static getExprEssentialType($expr: Expression): EssentialTypes {
|
60
|
+
static getExprEssentialType($expr) {
|
67
61
|
if ($expr instanceof BinaryOp) {
|
68
62
|
if ($expr.kind === "add") {
|
69
63
|
if ((this.getExprEssentialType($expr.left) === EssentialTypes.CHAR && this.isInteger(this.getExprEssentialType($expr.right)))
|
70
|
-
|
64
|
+
|| (this.getExprEssentialType($expr.right) === EssentialTypes.CHAR && this.isInteger(this.getExprEssentialType($expr.left)))) {
|
71
65
|
return EssentialTypes.CHAR;
|
72
66
|
}
|
73
67
|
}
|
@@ -81,24 +75,21 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
81
75
|
}
|
82
76
|
return this.getEssentialType($expr.type);
|
83
77
|
}
|
84
|
-
|
85
|
-
private restrictOperand($expr: Expression, $restrictedType: EssentialTypes, $baseExpr: Expression, $castTo?: BuiltinType) {
|
78
|
+
restrictOperand($expr, $restrictedType, $baseExpr, $castTo) {
|
86
79
|
const et = Section10_EssentialTypeModel.getExprEssentialType($expr);
|
87
80
|
if (et === $restrictedType) {
|
88
81
|
const fix = $castTo ? new Fix($expr, ($jp) => {
|
89
|
-
$jp.replaceWith(ClavaJoinPoints.cStyleCast($castTo, $jp
|
82
|
+
$jp.replaceWith(ClavaJoinPoints.cStyleCast($castTo, $jp));
|
90
83
|
}) : undefined;
|
91
84
|
this.logMISRAError($baseExpr, `Operand ${$expr.code} of expression ${$baseExpr.code} must not have essentially ${et} type.`, fix);
|
92
85
|
}
|
93
86
|
}
|
94
|
-
|
95
|
-
private restrictOperandList($expr: Expression, $restrictedTypes: EssentialTypes[], $baseExpr: Expression, $castTo?: BuiltinType) {
|
87
|
+
restrictOperandList($expr, $restrictedTypes, $baseExpr, $castTo) {
|
96
88
|
for (const type of $restrictedTypes) {
|
97
89
|
this.restrictOperand($expr, type, $baseExpr, $castTo);
|
98
90
|
}
|
99
91
|
}
|
100
|
-
|
101
|
-
private r10_1_appropriateEssentialOperands($startNode: Joinpoint) { //missing exception and compound operators
|
92
|
+
r10_1_appropriateEssentialOperands($startNode) {
|
102
93
|
Query.searchFrom($startNode, Op).get().forEach(op => {
|
103
94
|
if (op instanceof TernaryOp) {
|
104
95
|
this.restrictOperandList(op.cond, [EssentialTypes.CHAR, EssentialTypes.ENUM, EssentialTypes.FLOAT, EssentialTypes.SIGNED, EssentialTypes.UNSIGNED], op);
|
@@ -107,12 +98,14 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
107
98
|
switch (op.kind) {
|
108
99
|
case "shl":
|
109
100
|
case "shr":
|
110
|
-
if (!(op.right instanceof IntLiteral))
|
101
|
+
if (!(op.right instanceof IntLiteral))
|
102
|
+
this.restrictOperand(op.right, EssentialTypes.SIGNED, op);
|
111
103
|
case "and":
|
112
104
|
case "or":
|
113
105
|
case "x_or":
|
114
106
|
this.restrictOperand(op.left, EssentialTypes.SIGNED, op);
|
115
|
-
if (op.kind !== "shl" && op.kind !== "shr")
|
107
|
+
if (op.kind !== "shl" && op.kind !== "shr")
|
108
|
+
this.restrictOperand(op.right, EssentialTypes.SIGNED, op);
|
116
109
|
case "rem":
|
117
110
|
this.restrictOperand(op.left, EssentialTypes.FLOAT, op);
|
118
111
|
this.restrictOperand(op.right, EssentialTypes.FLOAT, op);
|
@@ -155,15 +148,13 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
155
148
|
}
|
156
149
|
}, this);
|
157
150
|
}
|
158
|
-
|
159
|
-
|
160
|
-
Query.searchFrom($startNode, BinaryOp, {kind: /(add|sub)/}).get().forEach(bOp => {
|
151
|
+
r10_2_appropriateCharOperands($startNode) {
|
152
|
+
Query.searchFrom($startNode, BinaryOp, { kind: /(add|sub)/ }).get().forEach(bOp => {
|
161
153
|
if (bOp.kind === "add") {
|
162
154
|
if (Section10_EssentialTypeModel.getExprEssentialType(bOp.left) === EssentialTypes.CHAR && Section10_EssentialTypeModel.getExprEssentialType(bOp.right) === EssentialTypes.CHAR) {
|
163
155
|
this.logMISRAError(bOp, `Both operands of addition ${bOp.code} have essentially character type.`);
|
164
156
|
return;
|
165
157
|
}
|
166
|
-
|
167
158
|
let otherType;
|
168
159
|
if (Section10_EssentialTypeModel.getExprEssentialType(bOp.left) === EssentialTypes.CHAR) {
|
169
160
|
otherType = Section10_EssentialTypeModel.getExprEssentialType(bOp.right);
|
@@ -171,7 +162,6 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
171
162
|
else if (Section10_EssentialTypeModel.getExprEssentialType(bOp.right) === EssentialTypes.CHAR) {
|
172
163
|
otherType = Section10_EssentialTypeModel.getExprEssentialType(bOp.left);
|
173
164
|
}
|
174
|
-
|
175
165
|
if (otherType && !Section10_EssentialTypeModel.isInteger(otherType)) {
|
176
166
|
this.logMISRAError(bOp, `One operand of addition ${bOp.code} has essentially character type, so the other one must have either essentially signed or unsigned type.`);
|
177
167
|
return;
|
@@ -192,9 +182,8 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
192
182
|
}
|
193
183
|
}, this);
|
194
184
|
}
|
195
|
-
|
196
|
-
|
197
|
-
Query.searchFrom($startNode, BinaryOp, {kind: "assign"}).get().forEach(bOp => {
|
185
|
+
r10_3_noInvalidAssignments($startNode) {
|
186
|
+
Query.searchFrom($startNode, BinaryOp, { kind: "assign" }).get().forEach(bOp => {
|
198
187
|
if (Section10_EssentialTypeModel.getEssentialType(bOp.left.type) !== Section10_EssentialTypeModel.getEssentialType(bOp.right.type)) {
|
199
188
|
this.logMISRAError(bOp, `Value ${bOp.right.code} cannot be assigned to ${bOp.left.code}, since it has a different essential type category.`);
|
200
189
|
}
|
@@ -203,7 +192,7 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
203
192
|
}
|
204
193
|
}, this);
|
205
194
|
Query.searchFrom($startNode, ReturnStmt).get().forEach(ret => {
|
206
|
-
const fun = ret.getAncestor("function")
|
195
|
+
const fun = ret.getAncestor("function");
|
207
196
|
console.log(ret.returnExpr.code, ret.returnExpr.bitWidth);
|
208
197
|
console.log(fun.bitWidth);
|
209
198
|
if (Section10_EssentialTypeModel.getEssentialType(ret.returnExpr.type) !== Section10_EssentialTypeModel.getEssentialType(fun.returnType)) {
|
@@ -225,26 +214,23 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
225
214
|
}
|
226
215
|
}, this);
|
227
216
|
}
|
228
|
-
|
229
|
-
private static checkBoolSource(subExpr: Expression) {
|
217
|
+
static checkBoolSource(subExpr) {
|
230
218
|
if (subExpr.type.desugarAll instanceof BuiltinType && subExpr.type.desugarAll.builtinKind === "Bool") {
|
231
219
|
return true;
|
232
220
|
}
|
233
221
|
else if (subExpr instanceof IntLiteral && (Number(subExpr.value) === 0 || Number(subExpr.value) === 1)) {
|
234
222
|
return true;
|
235
223
|
}
|
236
|
-
else
|
224
|
+
else
|
225
|
+
return false;
|
237
226
|
}
|
238
|
-
|
239
|
-
private r10_5_noInvalidCasts($startNode: Joinpoint) {//chars, anonymous enums
|
227
|
+
r10_5_noInvalidCasts($startNode) {
|
240
228
|
Query.searchFrom($startNode, Cast).get().forEach(cast => {
|
241
229
|
const fromType = cast.fromType.desugarAll;
|
242
230
|
const toType = cast.toType.desugarAll;
|
243
|
-
|
244
231
|
if (toType instanceof BuiltinType) {
|
245
|
-
console.log(toType.builtinKind)
|
232
|
+
console.log(toType.builtinKind);
|
246
233
|
}
|
247
|
-
|
248
234
|
if (toType instanceof BuiltinType && toType.builtinKind === "Bool" && !Section10_EssentialTypeModel.checkBoolSource(cast.subExpr)) {
|
249
235
|
this.logMISRAError(cast, "Only essentially boolean values, or the integer constants 0 or 1, may be cast to an essentially boolean type.");
|
250
236
|
}
|
@@ -262,12 +248,10 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
262
248
|
}
|
263
249
|
}, this);
|
264
250
|
}
|
265
|
-
|
266
|
-
private static isCompositeBinaryExpr($op: BinaryOp) {
|
251
|
+
static isCompositeBinaryExpr($op) {
|
267
252
|
return /(add)|(sub)|(mul)|(div)|(rem)|(shl)|(shr)|(l_and)|(l_or)|(xor)/.test($op.kind);
|
268
253
|
}
|
269
|
-
|
270
|
-
private static isCompositeExpr($expr: Expression): Expression | undefined {
|
254
|
+
static isCompositeExpr($expr) {
|
271
255
|
if ($expr instanceof ParenExpr) {
|
272
256
|
return this.isCompositeExpr($expr.subExpr);
|
273
257
|
}
|
@@ -281,10 +265,10 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
281
265
|
return $expr;
|
282
266
|
}
|
283
267
|
}
|
284
|
-
else
|
268
|
+
else
|
269
|
+
return undefined;
|
285
270
|
}
|
286
|
-
|
287
|
-
private static compositeExprWidth($op: Expression): number {
|
271
|
+
static compositeExprWidth($op) {
|
288
272
|
if ($op instanceof BinaryOp && Section10_EssentialTypeModel.isCompositeBinaryExpr($op)) {
|
289
273
|
const leftW = Section10_EssentialTypeModel.compositeExprWidth($op.left);
|
290
274
|
const rightW = Section10_EssentialTypeModel.compositeExprWidth($op.right);
|
@@ -298,28 +282,29 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
298
282
|
else if ($op instanceof ParenExpr) {
|
299
283
|
return this.compositeExprWidth($op.subExpr);
|
300
284
|
}
|
301
|
-
else
|
285
|
+
else
|
286
|
+
return $op.bitWidth;
|
302
287
|
}
|
303
|
-
|
304
|
-
private static transformBinaryOp($expr: BinaryOp, $type: Type) {
|
288
|
+
static transformBinaryOp($expr, $type) {
|
305
289
|
$expr.left.replaceWith(ClavaJoinPoints.cStyleCast($type, $expr.left));
|
306
290
|
}
|
307
|
-
|
308
|
-
private static transformTernaryOp($expr: TernaryOp, $type: Type, $bitWidth: number) {
|
291
|
+
static transformTernaryOp($expr, $type, $bitWidth) {
|
309
292
|
const trueExpr = this.isCompositeExpr($expr.trueExpr);
|
310
293
|
const falseExpr = this.isCompositeExpr($expr.falseExpr);
|
311
294
|
if (trueExpr && this.compositeExprWidth(trueExpr) < $bitWidth) {
|
312
|
-
if (trueExpr instanceof TernaryOp)
|
313
|
-
|
295
|
+
if (trueExpr instanceof TernaryOp)
|
296
|
+
this.transformTernaryOp(trueExpr, $type, $bitWidth);
|
297
|
+
else if (trueExpr instanceof BinaryOp)
|
298
|
+
this.transformBinaryOp(trueExpr, $type);
|
314
299
|
}
|
315
|
-
|
316
300
|
if (falseExpr && this.compositeExprWidth(falseExpr) < $type.bitWidth) {
|
317
|
-
if (falseExpr instanceof TernaryOp)
|
318
|
-
|
301
|
+
if (falseExpr instanceof TernaryOp)
|
302
|
+
this.transformTernaryOp(falseExpr, $type, $bitWidth);
|
303
|
+
else if (falseExpr instanceof BinaryOp)
|
304
|
+
this.transformBinaryOp(falseExpr, $type);
|
319
305
|
}
|
320
306
|
}
|
321
|
-
|
322
|
-
private r10_6_noWiderCompositeExprAssignments($startNode: Joinpoint) { //unfinished for rets and params
|
307
|
+
r10_6_noWiderCompositeExprAssignments($startNode) {
|
323
308
|
Query.searchFrom($startNode, Expression).get().forEach(expr => {
|
324
309
|
const compositeExpr = Section10_EssentialTypeModel.isCompositeExpr(expr);
|
325
310
|
if (compositeExpr) {
|
@@ -350,8 +335,7 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
350
335
|
}
|
351
336
|
}, this);*/
|
352
337
|
}
|
353
|
-
|
354
|
-
private r10_8_noWiderCompositeCasts($startNode: Joinpoint) {
|
338
|
+
r10_8_noWiderCompositeCasts($startNode) {
|
355
339
|
Query.searchFrom($startNode, Cast).get().forEach(cast => {
|
356
340
|
const compositeExpr = Section10_EssentialTypeModel.isCompositeExpr(cast.subExpr);
|
357
341
|
if (compositeExpr) {
|
@@ -360,7 +344,7 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
360
344
|
}
|
361
345
|
else if (cast.bitWidth > Section10_EssentialTypeModel.compositeExprWidth(compositeExpr)) {
|
362
346
|
this.logMISRAError(compositeExpr, `Composite expression ${cast.subExpr.code} cannot be cast to ${cast.toType.code} since it is a wider type.`, new Fix(cast, cast => {
|
363
|
-
const castJp = cast
|
347
|
+
const castJp = cast;
|
364
348
|
const compositeExpr = Section10_EssentialTypeModel.isCompositeExpr(castJp.subExpr);
|
365
349
|
if (compositeExpr instanceof BinaryOp) {
|
366
350
|
compositeExpr.left.replaceWith(ClavaJoinPoints.cStyleCast(cast.type, compositeExpr.left));
|
@@ -374,4 +358,5 @@ export default class Section10_EssentialTypeModel extends MISRAAnalyser {
|
|
374
358
|
}
|
375
359
|
});
|
376
360
|
}
|
377
|
-
}
|
361
|
+
}
|
362
|
+
//# sourceMappingURL=Section10_EssentialTypeModel.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Section10_EssentialTypeModel.js","sourceRoot":"","sources":["../../../src/misra/sections/Section10_EssentialTypeModel.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Program, FileJp } from "@specs-feup/clava/api/Joinpoints.js";
|
2
|
+
import MISRAAnalyser from "../MISRAAnalyser.js";
|
3
|
+
export default class Section11_PointerTypeConversions extends MISRAAnalyser {
|
4
|
+
ruleMapper: Map<number, (jp: Program | FileJp) => void>;
|
5
|
+
constructor(rules: number[]);
|
6
|
+
private static functionTypesMatch;
|
7
|
+
private r11_1_noFunctionPointerConversions;
|
8
|
+
private r11_4_noIntToPointer;
|
9
|
+
private r11_5_noConversionFromVoid;
|
10
|
+
private r11_7_noFloatConversions;
|
11
|
+
}
|
12
|
+
//# sourceMappingURL=Section11_PointerTypeConversions.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Section11_PointerTypeConversions.d.ts","sourceRoot":"","sources":["../../../src/misra/sections/Section11_PointerTypeConversions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAiF,MAAM,qCAAqC,CAAC;AACrJ,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAGhD,MAAM,CAAC,OAAO,OAAO,gCAAiC,SAAQ,aAAa;IACvE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC;gBAE5C,KAAK,EAAE,MAAM,EAAE;IAO3B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,OAAO,CAAC,kCAAkC;IAyB1C,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,wBAAwB;CAwBnC"}
|
@@ -1,19 +1,16 @@
|
|
1
1
|
import Query from "@specs-feup/lara/api/weaver/Query.js";
|
2
|
-
import {
|
2
|
+
import { Cast, FunctionType, PointerType, BuiltinType, IntLiteral, QualType } from "@specs-feup/clava/api/Joinpoints.js";
|
3
3
|
import MISRAAnalyser from "../MISRAAnalyser.js";
|
4
4
|
import Section10_EssentialTypeModel, { EssentialTypes } from "./Section10_EssentialTypeModel.js";
|
5
|
-
|
6
5
|
export default class Section11_PointerTypeConversions extends MISRAAnalyser {
|
7
|
-
ruleMapper
|
8
|
-
|
9
|
-
constructor(rules: number[]) {
|
6
|
+
ruleMapper;
|
7
|
+
constructor(rules) {
|
10
8
|
super(rules);
|
11
9
|
this.ruleMapper = new Map([
|
12
10
|
[7, this.r11_7_noFloatConversions.bind(this)]
|
13
11
|
]);
|
14
12
|
}
|
15
|
-
|
16
|
-
private static functionTypesMatch(t1: FunctionType, t2: FunctionType) {
|
13
|
+
static functionTypesMatch(t1, t2) {
|
17
14
|
console.log(t1.returnType.kind, t2.returnType.kind);
|
18
15
|
if (t1.returnType != t2.returnType) {
|
19
16
|
return false;
|
@@ -26,20 +23,16 @@ export default class Section11_PointerTypeConversions extends MISRAAnalyser {
|
|
26
23
|
return false;
|
27
24
|
}
|
28
25
|
}
|
29
|
-
|
30
26
|
return true;
|
31
27
|
}
|
32
|
-
|
33
|
-
private r11_1_noFunctionPointerConversions($startNode: Joinpoint) { //type equality not working
|
28
|
+
r11_1_noFunctionPointerConversions($startNode) {
|
34
29
|
Query.searchFrom($startNode, Cast).get().forEach(cast => {
|
35
30
|
const fromType = cast.fromType.desugarAll;
|
36
31
|
const toType = cast.toType.desugarAll;
|
37
|
-
|
38
32
|
if (fromType instanceof PointerType && toType instanceof PointerType && fromType.pointee.desugarAll instanceof FunctionType && toType.pointee.desugarAll instanceof FunctionType) {
|
39
33
|
console.log("hello");
|
40
34
|
if (!Section11_PointerTypeConversions.functionTypesMatch(fromType.pointee.desugarAll, toType.pointee.desugarAll)) {
|
41
35
|
this.logMISRAError(cast, "A function pointer can only be converted into another function pointer if the types match.");
|
42
|
-
|
43
36
|
}
|
44
37
|
}
|
45
38
|
else if (fromType instanceof PointerType && fromType.pointee.desugarAll instanceof FunctionType) {
|
@@ -54,50 +47,46 @@ export default class Section11_PointerTypeConversions extends MISRAAnalyser {
|
|
54
47
|
}
|
55
48
|
});
|
56
49
|
}
|
57
|
-
|
58
|
-
private r11_4_noIntToPointer($startNode: Joinpoint) {
|
50
|
+
r11_4_noIntToPointer($startNode) {
|
59
51
|
Query.searchFrom($startNode, Cast).get().forEach(cast => {
|
60
52
|
const fromType = cast.fromType.desugarAll;
|
61
53
|
const toType = cast.toType.desugarAll;
|
62
54
|
if (fromType.isPointer !== toType.isPointer) {
|
63
55
|
this.logMISRAError(cast, "Integers should not be converted to pointers and vice-versa.");
|
64
56
|
}
|
65
|
-
})
|
57
|
+
});
|
66
58
|
}
|
67
|
-
|
68
|
-
private r11_5_noConversionFromVoid($startNode: Joinpoint) {
|
59
|
+
r11_5_noConversionFromVoid($startNode) {
|
69
60
|
Query.searchFrom($startNode, Cast).get().forEach(cast => {
|
70
61
|
const fromType = cast.fromType.desugarAll;
|
71
|
-
const toType =cast.toType.desugarAll;
|
62
|
+
const toType = cast.toType.desugarAll;
|
72
63
|
if (fromType instanceof PointerType && fromType.pointee instanceof BuiltinType && fromType.pointee.isVoid
|
73
64
|
&& toType instanceof PointerType && !(toType.pointee instanceof BuiltinType && toType.pointee.isVoid)) {
|
74
65
|
this.logMISRAError(cast, "Pointer to void should not be converted to pointer to object");
|
75
66
|
}
|
76
67
|
});
|
77
68
|
}
|
78
|
-
|
79
|
-
private r11_7_noFloatConversions($startNode: Joinpoint) {
|
69
|
+
r11_7_noFloatConversions($startNode) {
|
80
70
|
Query.searchFrom($startNode, Cast).get().forEach(cast => {
|
81
71
|
let fromType = cast.fromType.desugarAll;
|
82
72
|
let toType = cast.fromType.desugarAll;
|
83
|
-
|
84
73
|
if (fromType instanceof QualType) {
|
85
74
|
fromType = fromType.unqualifiedType.desugarAll;
|
86
75
|
}
|
87
76
|
if (toType instanceof QualType) {
|
88
77
|
toType = toType.unqualifiedType.desugarAll;
|
89
78
|
}
|
90
|
-
|
91
79
|
if (fromType instanceof PointerType && !(toType instanceof PointerType)
|
92
|
-
|
93
|
-
|
80
|
+
&& Section10_EssentialTypeModel.getEssentialType(toType) !== EssentialTypes.SIGNED
|
81
|
+
&& Section10_EssentialTypeModel.getEssentialType(toType) !== EssentialTypes.UNSIGNED) {
|
94
82
|
this.logMISRAError(cast, "A pointer to object cannot be cast to a non-integer arithmetic type.");
|
95
83
|
}
|
96
84
|
else if (toType instanceof PointerType && !(fromType instanceof PointerType)
|
97
|
-
|
98
|
-
|
85
|
+
&& Section10_EssentialTypeModel.getEssentialType(fromType) !== EssentialTypes.SIGNED
|
86
|
+
&& Section10_EssentialTypeModel.getEssentialType(fromType) !== EssentialTypes.UNSIGNED) {
|
99
87
|
this.logMISRAError(cast, "A non-arithmetic integer value cannot be cast to a pointer to object.");
|
100
88
|
}
|
101
89
|
}, this);
|
102
90
|
}
|
103
|
-
}
|
91
|
+
}
|
92
|
+
//# sourceMappingURL=Section11_PointerTypeConversions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Section11_PointerTypeConversions.js","sourceRoot":"","sources":["../../../src/misra/sections/Section11_PointerTypeConversions.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { Program, FileJp } from "@specs-feup/clava/api/Joinpoints.js";
|
2
|
+
import MISRAAnalyser from "../MISRAAnalyser.js";
|
3
|
+
export default class Section12_Expressions extends MISRAAnalyser {
|
4
|
+
ruleMapper: Map<number, (jp: Program | FileJp) => void>;
|
5
|
+
constructor(rules: number[]);
|
6
|
+
private static isAdditive;
|
7
|
+
private static isMultiplicative;
|
8
|
+
private static isShift;
|
9
|
+
private static isRelational;
|
10
|
+
private static isEquality;
|
11
|
+
private static isSamePrecedence;
|
12
|
+
private r12_1_explicitPrecedence;
|
13
|
+
private r12_3_noCommaOperator;
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=Section12_Expressions.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Section12_Expressions.d.ts","sourceRoot":"","sources":["../../../src/misra/sections/Section12_Expressions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAA6C,MAAM,qCAAqC,CAAC;AACjH,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,aAAa;IAC5D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC;gBAE5C,KAAK,EAAE,MAAM,EAAE;IAQ3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,qBAAqB;CAehC"}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import Query from "@specs-feup/lara/api/weaver/Query.js";
|
2
|
+
import { BinaryOp, Op, Loop } from "@specs-feup/clava/api/Joinpoints.js";
|
3
|
+
import MISRAAnalyser from "../MISRAAnalyser.js";
|
4
|
+
import ClavaJoinPoints from "@specs-feup/clava/api/clava/ClavaJoinPoints.js";
|
5
|
+
import Fix from "@specs-feup/clava/api/clava/analysis/Fix.js";
|
6
|
+
export default class Section12_Expressions extends MISRAAnalyser {
|
7
|
+
ruleMapper;
|
8
|
+
constructor(rules) {
|
9
|
+
super(rules);
|
10
|
+
this.ruleMapper = new Map([
|
11
|
+
[1, this.r12_1_explicitPrecedence.bind(this)],
|
12
|
+
[3, this.r12_3_noCommaOperator.bind(this)]
|
13
|
+
]);
|
14
|
+
}
|
15
|
+
static isAdditive(op) {
|
16
|
+
return op === "add" || op === "sub";
|
17
|
+
}
|
18
|
+
static isMultiplicative(op) {
|
19
|
+
return op === "mul" || op === "div" || op === "rem";
|
20
|
+
}
|
21
|
+
static isShift(op) {
|
22
|
+
return op === "shl" || op === "shr";
|
23
|
+
}
|
24
|
+
static isRelational(op) {
|
25
|
+
return op === "lt" || op === "gt" || op === "le" || op === "ge";
|
26
|
+
}
|
27
|
+
static isEquality(op) {
|
28
|
+
return op === "eq" || op === "ne";
|
29
|
+
}
|
30
|
+
static isSamePrecedence(op1, op2) {
|
31
|
+
if (op1 === op2)
|
32
|
+
return true;
|
33
|
+
for (const fun of [this.isAdditive, this.isMultiplicative, this.isShift, this.isRelational, this.isEquality]) {
|
34
|
+
if (fun(op1) && fun(op2)) {
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
return false;
|
39
|
+
}
|
40
|
+
r12_1_explicitPrecedence($startNode) {
|
41
|
+
for (const bOp of Query.searchFrom($startNode, BinaryOp, { isAssignment: false })) {
|
42
|
+
if ((bOp.kind === "ptr_mem_d" || bOp.kind === "ptr_mem_i")
|
43
|
+
|| (!bOp.getAncestor("binaryOp") && !bOp.getAncestor("ternaryOp"))
|
44
|
+
|| (bOp.parent instanceof BinaryOp && bOp.parent.isAssignment)
|
45
|
+
|| (bOp.parent instanceof Op && Section12_Expressions.isSamePrecedence(bOp.kind, bOp.parent.kind))
|
46
|
+
|| (bOp.parent.instanceOf("parenExpr")))
|
47
|
+
continue;
|
48
|
+
this.logMISRAError(bOp, `Operator precedence in expression ${bOp.code} is not explicit.`, new Fix(bOp, ($jp) => {
|
49
|
+
const parenExpr = ClavaJoinPoints.parenthesis($jp);
|
50
|
+
bOp.replaceWith(parenExpr);
|
51
|
+
}));
|
52
|
+
}
|
53
|
+
}
|
54
|
+
r12_3_noCommaOperator($startNode) {
|
55
|
+
Query.searchFrom($startNode, BinaryOp, { operator: ',' }).get().forEach(op => {
|
56
|
+
const loopAncestor = op.getAncestor("loop");
|
57
|
+
if (loopAncestor instanceof Loop && (loopAncestor?.step?.contains(op) || loopAncestor?.cond?.contains(op) || loopAncestor?.init?.contains(op))) {
|
58
|
+
console.log(`Cannot eliminate comma operator in expression ${op.code} since it is at the head of a loop.`);
|
59
|
+
this.logMISRAError(op, "Use of the comma operator is not allowed.");
|
60
|
+
}
|
61
|
+
else {
|
62
|
+
this.logMISRAError(op, "Use of the comma operator is not allowed.", new Fix(op, ($jp) => {
|
63
|
+
$jp.insertBefore($jp.left.stmt);
|
64
|
+
$jp.replaceWith($jp.right);
|
65
|
+
}));
|
66
|
+
}
|
67
|
+
}, this);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
//# sourceMappingURL=Section12_Expressions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Section12_Expressions.js","sourceRoot":"","sources":["../../../src/misra/sections/Section12_Expressions.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { Program, FileJp } from "@specs-feup/clava/api/Joinpoints.js";
|
2
|
+
import MISRAAnalyser from "../MISRAAnalyser.js";
|
3
|
+
export default class Section13_SideEffects extends MISRAAnalyser {
|
4
|
+
ruleMapper: Map<number, (jp: Program | FileJp) => void>;
|
5
|
+
constructor(rules: number[]);
|
6
|
+
private checkPotentialPersistentSideEffects;
|
7
|
+
private r13_1_initListSideEffects;
|
8
|
+
private static visitAllExprs;
|
9
|
+
private checkIncrementSideEffects;
|
10
|
+
private r13_3_noIncrementSideEffects;
|
11
|
+
private r13_4_noUseOfAssignmentValue;
|
12
|
+
private r13_5_shortCircuitSideEffects;
|
13
|
+
}
|
14
|
+
//# sourceMappingURL=Section13_SideEffects.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Section13_SideEffects.d.ts","sourceRoot":"","sources":["../../../src/misra/sections/Section13_SideEffects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,EAA2E,MAAM,qCAAqC,CAAC;AAC/I,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,aAAa;IAC5D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC;gBAE5C,KAAK,EAAE,MAAM,EAAE;IAU3B,OAAO,CAAC,mCAAmC;IAoB3C,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,MAAM,CAAC,aAAa;IAa5B,OAAO,CAAC,yBAAyB;IA2BjC,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,6BAA6B;CAGxC"}
|