81 Analyser::Analyser(char** args, int argc) : iCPPParser(NULL) |
81 Analyser::Analyser(char** args, int argc) : iCPPParser(NULL) |
82 { |
82 { |
83 iCmdLine = new CommandLine(args, argc); |
83 iCmdLine = new CommandLine(args, argc); |
84 iUseBaselinePlatformData = false; |
84 iUseBaselinePlatformData = false; |
85 iUseCurrentPlatformData = false; |
85 iUseCurrentPlatformData = false; |
86 iUseForcedHeaders = true; |
|
87 iBasePlatformData = 0; |
86 iBasePlatformData = 0; |
88 iProductPlatformData = 0; |
87 iProductPlatformData = 0; |
89 } |
88 } |
90 |
89 |
91 // ---------------------------------------------------------------------------- |
90 // ---------------------------------------------------------------------------- |
912 // If analysing in bundle, validate for include guard before addition to bundle. |
911 // If analysing in bundle, validate for include guard before addition to bundle. |
913 validateHeaders(tmpfiles, invalid); |
912 validateHeaders(tmpfiles, invalid); |
914 // Exclude "iInvalidFiles" from bundle analysis. Analyse them only singly. |
913 // Exclude "iInvalidFiles" from bundle analysis. Analyse them only singly. |
915 if( invalid.size() ) |
914 if( invalid.size() ) |
916 { |
915 { |
917 for( int i=0 ; i < invalid.size() ; i++ ) |
916 for( int i=0 ; i < (int)invalid.size() ; i++ ) |
918 { |
917 { |
919 |
918 |
920 PlatformHeaders::iterator pairIter = FindHeaderPair(invalid[i].first, pfHeaders); |
919 PlatformHeaders::iterator pairIter = FindHeaderPair(invalid[i].first, pfHeaders); |
921 //No need to check if the invalid file exists in pfHeaders, as it already done above. |
920 //No need to check if the invalid file exists in pfHeaders, as it already done above. |
922 HeaderPair temp(pairIter->first, pairIter->second); |
921 HeaderPair temp(pairIter->first, pairIter->second); |
1128 // Set temp directories for parsers |
1127 // Set temp directories for parsers |
1129 parser->setTemp(iParams.getParameter(TEMPDIR)); |
1128 parser->setTemp(iParams.getParameter(TEMPDIR)); |
1130 parser2->setTemp(iParams.getParameter(TEMPDIR)); |
1129 parser2->setTemp(iParams.getParameter(TEMPDIR)); |
1131 |
1130 |
1132 // Set forced headers |
1131 // Set forced headers |
1133 if(iUseForcedHeaders) |
1132 parser->setForcedHeaders(iForcedBaselineHeaders); |
1134 { |
1133 parser2->setForcedHeaders(iForcedCurrentHeaders); |
1135 parser->setForcedHeaders(iForcedBaselineHeaders); |
1134 |
1136 parser2->setForcedHeaders(iForcedCurrentHeaders); |
|
1137 } |
|
1138 |
|
1139 if (createThread) |
1135 if (createThread) |
1140 { |
1136 { |
1141 //if the number of threads in this group has reached pre-defined max count, destroy all the threads in this group before creating one. |
1137 //if the number of threads in this group has reached pre-defined max count, destroy all the threads in this group before creating one. |
1142 //boost::thread_group object does not destroy a thread when it goes to completion. if the threads are not destroyed lot of memory will be eaten up unneccessarily |
1138 //boost::thread_group object does not destroy a thread when it goes to completion. if the threads are not destroyed lot of memory will be eaten up unneccessarily |
1143 if(gHeaderThreads.size() >= MAX_THREAD_COUNT) |
1139 if(gHeaderThreads.size() >= MAX_THREAD_COUNT) |
1297 int Analyser::analyse() |
1293 int Analyser::analyse() |
1298 { |
1294 { |
1299 // Local variable instantiation |
1295 // Local variable instantiation |
1300 int ret = 0; |
1296 int ret = 0; |
1301 iHeaderSetInUse = false; |
1297 iHeaderSetInUse = false; |
1302 iUseForcedHeaders = true; |
|
1303 iUseThread = false; |
1298 iUseThread = false; |
1304 string epocroot; |
1299 string epocroot; |
1305 int bundlesize = 1; |
1300 int bundlesize = 1; |
1306 unsigned int amount, amount2; |
1301 unsigned int amount, amount2; |
1307 iOnlySystemIncludeRequired = false; |
1302 iOnlySystemIncludeRequired = false; |
1402 list<string>::iterator removedbegin = removedFiles.begin(); |
1397 list<string>::iterator removedbegin = removedFiles.begin(); |
1403 list<string>::iterator removedend = removedFiles.end(); |
1398 list<string>::iterator removedend = removedFiles.end(); |
1404 for(; removedbegin != removedend; removedbegin++) |
1399 for(; removedbegin != removedend; removedbegin++) |
1405 { |
1400 { |
1406 string filename = *removedbegin; |
1401 string filename = *removedbegin; |
1407 report.addIssue(filename, "", EIssueIdentityFile, EIssueTypeRemoval, ESeverityBBCBreak, ESeveritySCBreak, "", 0, "",""); |
1402 report.addIssue(filename, "", EIssueIdentityFile, EIssueTypeRemoval, ESeverityBBCBreak, ESeveritySCBreak, "", 0,"", "",""); |
1408 } |
1403 } |
1409 |
1404 |
1410 int issues = 0; |
1405 int issues = 0; |
1411 PlatformHeaders unsuccessfulHeaders; |
1406 PlatformHeaders unsuccessfulHeaders; |
1412 vector<pair<string, string> > unsuccessfulHeaderNames; |
1407 vector<pair<string, string> > unsuccessfulHeaderNames; |
1481 mainThreads.join_all(); // wait for all threads in mainThreads to complete |
1476 mainThreads.join_all(); // wait for all threads in mainThreads to complete |
1482 compErrors += mergeVectorCompErrs + unsuccessfulCompErrs + platformUnsuccessfulCompErrs; |
1477 compErrors += mergeVectorCompErrs + unsuccessfulCompErrs + platformUnsuccessfulCompErrs; |
1483 report.finishReport(); |
1478 report.finishReport(); |
1484 |
1479 |
1485 // List number of files which had compilation errors and could not be compiled |
1480 // List number of files which had compilation errors and could not be compiled |
1486 if ( _current_files + excludedHeaderSize < _total_files ) |
1481 if ( _current_files + (int)excludedHeaderSize < _total_files ) |
1487 cout << "\n" << ( _total_files - (_current_files + excludedHeaderSize) ) <<" files out of " << _total_files << " had some issues and could not be analysed.\n" << endl; |
1482 cout << "\n" << ( _total_files - (_current_files + excludedHeaderSize) ) <<" files out of " << _total_files << " had some issues and could not be analysed.\n" << endl; |
1488 |
1483 |
1489 // Wrap up the run and print statistics |
1484 // Wrap up the run and print statistics |
1490 unsigned int count = _total_files * 2; |
1485 unsigned int count = _total_files * 2; |
1491 |
1486 |
1566 bundlesize == 1 ) |
1561 bundlesize == 1 ) |
1567 |
1562 |
1568 { |
1563 { |
1569 if( basebegin != baseend ) |
1564 if( basebegin != baseend ) |
1570 { |
1565 { |
1571 if(!iUseForcedHeaders) |
1566 //Add compilation error to the report |
1572 { |
1567 string compilationError = iCompErrTxt; |
1573 //Add compilation error to the report |
1568 report.addIssue((*basebegin), "", EIssueIdentityFile, EIssueTypeCompilationError, ESeverityBBCBreak, ESeveritySCBreak, "", 0,"", |
1574 string compilationError = iCompErrTxt; |
1569 (*currentbegin),compilationError); |
1575 report.addIssue((*basebegin), "", EIssueIdentityFile, EIssueTypeCompilationError, ESeverityBBCBreak, ESeveritySCBreak, "", 0, |
1570 issues++; |
1576 (*currentbegin),compilationError); |
1571 |
1577 issues++; |
|
1578 } |
|
1579 else |
|
1580 unsuccessfulHeaders.push_back(pair<string,string>(*basebegin,*currentbegin)); |
|
1581 |
|
1582 compErrors++; |
1572 compErrors++; |
1583 } |
1573 } |
1584 } |
1574 } |
1585 else |
1575 else |
1586 { |
1576 { |
1590 stringvector curfilename; |
1580 stringvector curfilename; |
1591 basefilename.push_back(*basebegin); |
1581 basefilename.push_back(*basebegin); |
1592 curfilename.push_back(*currentbegin); |
1582 curfilename.push_back(*currentbegin); |
1593 if (!AnalyseBundle(basefilename,curfilename,report, issues)) |
1583 if (!AnalyseBundle(basefilename,curfilename,report, issues)) |
1594 { |
1584 { |
1595 if(!iUseForcedHeaders) |
1585 //Add compilation error to the report |
1596 { |
1586 string compilationError = iCompErrTxt; |
1597 //Add compilation error to the report |
1587 report.addIssue((*basebegin), "", EIssueIdentityFile, EIssueTypeCompilationError, ESeverityBBCBreak, ESeveritySCBreak, "", 0,"", |
1598 string compilationError = iCompErrTxt; |
1588 (*currentbegin),compilationError); |
1599 report.addIssue((*basebegin), "", EIssueIdentityFile, EIssueTypeCompilationError, ESeverityBBCBreak, ESeveritySCBreak, "", 0, |
1589 issues++; |
1600 (*currentbegin),compilationError); |
|
1601 issues++; |
|
1602 } |
|
1603 else |
|
1604 unsuccessfulHeaders.push_back(pair<string,string>(*basebegin,*currentbegin)); |
|
1605 |
|
1606 compErrors++; |
1590 compErrors++; |
1607 } |
1591 } |
1608 basebegin++; |
1592 basebegin++; |
1609 currentbegin++; |
1593 currentbegin++; |
1610 } |
1594 } |
1616 |
1600 |
1617 fnmapiter++; |
1601 fnmapiter++; |
1618 processedcount++; |
1602 processedcount++; |
1619 } |
1603 } |
1620 |
1604 |
1621 if( compErrors > 0 && iUseForcedHeaders ) |
1605 if (iNotRemovedFiles.size() != 0) |
1622 { |
|
1623 iUseForcedHeaders = false; |
|
1624 issues = 0; |
|
1625 compErrors = 0; |
|
1626 AnalyseHeaders(unsuccessfulHeaders, 1, report, issues, compErrors); |
|
1627 iUseForcedHeaders = true; |
|
1628 } |
|
1629 |
|
1630 if (iNotRemovedFiles.size() != 0) |
|
1631 { |
1606 { |
1632 list<string> tempvar; |
1607 list<string> tempvar; |
1633 list<string>::iterator removefile = iNotRemovedFiles.begin(); |
1608 list<string>::iterator removefile = iNotRemovedFiles.begin(); |
1634 list<string>::iterator fileend = iNotRemovedFiles.end(); |
1609 list<string>::iterator fileend = iNotRemovedFiles.end(); |
1635 for(; removefile != fileend; removefile++) |
1610 for(; removefile != fileend; removefile++) |
1676 { |
1651 { |
1677 parser = new CPPParser(iParams.getParameter(BASELINEPLAT)); |
1652 parser = new CPPParser(iParams.getParameter(BASELINEPLAT)); |
1678 // Set temp directory for parser |
1653 // Set temp directory for parser |
1679 parser->setTemp(iParams.getParameter(TEMPDIR)); |
1654 parser->setTemp(iParams.getParameter(TEMPDIR)); |
1680 // Set forced headers |
1655 // Set forced headers |
1681 if(iUseForcedHeaders) |
|
1682 parser->setForcedHeaders(iForcedBaselineHeaders); |
1656 parser->setForcedHeaders(iForcedBaselineHeaders); |
1683 // Wrap allocated memory to an auto_ptr to get it deallocated properly. |
1657 // Wrap allocated memory to an auto_ptr to get it deallocated properly. |
1684 baseAutoPtr.reset(parser); |
1658 baseAutoPtr.reset(parser); |
1685 } |
1659 } |
1686 if( currParser ) |
1660 if( currParser ) |
1692 { |
1666 { |
1693 parser2 = new CPPParser(iParams.getParameter(CURRENTPLAT)); |
1667 parser2 = new CPPParser(iParams.getParameter(CURRENTPLAT)); |
1694 // Set temp directory for parser |
1668 // Set temp directory for parser |
1695 parser2->setTemp(iParams.getParameter(TEMPDIR)); |
1669 parser2->setTemp(iParams.getParameter(TEMPDIR)); |
1696 // Set forced headers |
1670 // Set forced headers |
1697 if(iUseForcedHeaders) |
|
1698 parser2->setForcedHeaders(iForcedCurrentHeaders); |
1671 parser2->setForcedHeaders(iForcedCurrentHeaders); |
1699 // Wrap allocated memory to an auto_ptr to get it deallocated properly. |
1672 // Wrap allocated memory to an auto_ptr to get it deallocated properly. |
1700 currAutoPtr.reset(parser2); |
1673 currAutoPtr.reset(parser2); |
1701 } |
1674 } |
1702 |
1675 |
1763 vector<pair<string,string> >::iterator duplicatedend2 = duplicatedbegin->second.end(); |
1736 vector<pair<string,string> >::iterator duplicatedend2 = duplicatedbegin->second.end(); |
1764 for(; duplicatedbegin2 != duplicatedend2; duplicatedbegin2++) |
1737 for(; duplicatedbegin2 != duplicatedend2; duplicatedbegin2++) |
1765 { |
1738 { |
1766 string macroname = duplicatedbegin2->first; |
1739 string macroname = duplicatedbegin2->first; |
1767 int lineNo = atoi(duplicatedbegin2->second.c_str()); |
1740 int lineNo = atoi(duplicatedbegin2->second.c_str()); |
1768 report.addIssue(filename, macroname, EIssueIdentityMacro, EIssueTypeNotAnalysed, ESeverityInformative, ESeveritySCInformative, "", lineNo, "", ""); |
1741 report.addIssue(filename, macroname, EIssueIdentityMacro, EIssueTypeNotAnalysed, ESeverityInformative, ESeveritySCInformative, "", lineNo, "","", ""); |
1769 issues++; |
1742 issues++; |
1770 } |
1743 } |
1771 } |
1744 } |
1772 |
1745 |
1773 // Current |
1746 // Current |
1782 vector<pair<string,string> >::iterator duplicatedend2 = duplicatedbegin->second.end(); |
1755 vector<pair<string,string> >::iterator duplicatedend2 = duplicatedbegin->second.end(); |
1783 for(; duplicatedbegin2 != duplicatedend2; duplicatedbegin2++) |
1756 for(; duplicatedbegin2 != duplicatedend2; duplicatedbegin2++) |
1784 { |
1757 { |
1785 string macroname = duplicatedbegin2->first; |
1758 string macroname = duplicatedbegin2->first; |
1786 int lineNo = atoi(duplicatedbegin2->second.c_str()); |
1759 int lineNo = atoi(duplicatedbegin2->second.c_str()); |
1787 report.addIssue("", macroname, EIssueIdentityMacro, EIssueTypeNotAnalysed, ESeverityInformative, ESeveritySCInformative, "", lineNo, filename, ""); |
1760 report.addIssue("", macroname, EIssueIdentityMacro, EIssueTypeNotAnalysed, ESeverityInformative, ESeveritySCInformative, "", lineNo,"", filename, ""); |
1788 issues++; |
1761 issues++; |
1789 } |
1762 } |
1790 } |
1763 } |
1791 |
1764 |
1792 // Removed macros |
1765 // Removed macros |
1804 for(; removedbegin2 != removedend2; removedbegin2++) |
1777 for(; removedbegin2 != removedend2; removedbegin2++) |
1805 { |
1778 { |
1806 string macroname = removedbegin2->first; |
1779 string macroname = removedbegin2->first; |
1807 //int lineNo = atoi(removedbegin2->second.c_str()); |
1780 //int lineNo = atoi(removedbegin2->second.c_str()); |
1808 // No need to pass the line no in removed case. |
1781 // No need to pass the line no in removed case. |
1809 report.addIssue(basefilename, macroname, EIssueIdentityMacro, EIssueTypeRemoval, ESeverityPossibleBBCBreak, ESeveritySCBreak, "", 0, currentfilename, ""); |
1782 report.addIssue(basefilename, macroname, EIssueIdentityMacro, EIssueTypeRemoval, ESeverityPossibleBBCBreak, ESeveritySCBreak, "", 0,"", currentfilename, ""); |
1810 issues++; |
1783 issues++; |
1811 } |
1784 } |
1812 } |
1785 } |
1813 |
1786 |
1814 // Changed macros |
1787 // Changed macros |
1826 for(; changedbegin2 != changedend2; changedbegin2++) |
1799 for(; changedbegin2 != changedend2; changedbegin2++) |
1827 { |
1800 { |
1828 string macroname = changedbegin2->first; |
1801 string macroname = changedbegin2->first; |
1829 string newcode = changedbegin2->second.first.second; |
1802 string newcode = changedbegin2->second.first.second; |
1830 int lineNo = atoi(changedbegin2->second.second.c_str()); |
1803 int lineNo = atoi(changedbegin2->second.second.c_str()); |
1831 report.addIssue(basefilename, macroname, EIssueIdentityMacro, EIssueTypeChange, ESeverityPossibleBBCBreak, ESeveritySCNULL, newcode, lineNo, currentfilename, ""); |
1804 report.addIssue(basefilename, macroname, EIssueIdentityMacro, EIssueTypeChange, ESeverityPossibleBBCBreak, ESeveritySCNULL, newcode, lineNo, "",currentfilename, ""); |
1832 issues++; |
1805 issues++; |
1833 } |
1806 } |
1834 } |
1807 } |
1835 |
1808 |
1836 |
1809 |
2644 |
2617 |
2645 if ( fileMatched = false ) |
2618 if ( fileMatched = false ) |
2646 { |
2619 { |
2647 // file does not exists in curdir |
2620 // file does not exists in curdir |
2648 report.addIssue(baseResource.RHFileName, includes.at(out).first, EIssueIdentityFile, |
2621 report.addIssue(baseResource.RHFileName, includes.at(out).first, EIssueIdentityFile, |
2649 EIssueTypeRemoval,ESeverityBBCBreak,ESeveritySCNULL, "", 0, curResource.RHFileName,""); |
2622 EIssueTypeRemoval,ESeverityBBCBreak,ESeveritySCNULL, "", 0, "",curResource.RHFileName,""); |
2650 break; |
2623 break; |
2651 } |
2624 } |
2652 } |
2625 } |
2653 if(includedHeaderPresent == false) |
2626 if(includedHeaderPresent == false) |
2654 { |
2627 { |
2655 // add issue, as field is removed in current file. |
2628 // add issue, as field is removed in current file. |
2656 report.addIssue(baseResource.RHFileName, bString, EIssueIdentityField, |
2629 report.addIssue(baseResource.RHFileName, bString, EIssueIdentityField, |
2657 EIssueTypeRemoval,ESeverityNULL,ESeveritySCBreak, "", 0, curResource.RHFileName,""); |
2630 EIssueTypeRemoval,ESeverityNULL,ESeveritySCBreak, "", 0, "",curResource.RHFileName,""); |
2658 } |
2631 } |
2659 } |
2632 } |
2660 |
2633 |
2661 for(int l = 0; l < (int)includes.size(); l++ ) |
2634 for(int l = 0; l < (int)includes.size(); l++ ) |
2662 { |
2635 { |
3195 //add issue member value mismatch |
3168 //add issue member value mismatch |
3196 string bVal = baseStruct.structName + "::" + baseStruct.members.at(bInner).elementName; |
3169 string bVal = baseStruct.structName + "::" + baseStruct.members.at(bInner).elementName; |
3197 string cVal = curStruct.members.at(cInner).elementValue; |
3170 string cVal = curStruct.members.at(cInner).elementValue; |
3198 int lineNo = curStruct.members.at(cInner).lineNo; |
3171 int lineNo = curStruct.members.at(cInner).lineNo; |
3199 report.addIssue(baseResource.RHFileName, bVal, EIssueIdentityStructMember, EIssueTypeChangeInInitialisation, |
3172 report.addIssue(baseResource.RHFileName, bVal, EIssueIdentityStructMember, EIssueTypeChangeInInitialisation, |
3200 ESeverityNULL, ESeveritySCBreak, cVal, lineNo,curResource.RHFileName,""); |
3173 ESeverityNULL, ESeveritySCBreak, cVal, lineNo,"",curResource.RHFileName,""); |
3201 } |
3174 } |
3202 } |
3175 } |
3203 else |
3176 else |
3204 { |
3177 { |
3205 // add issue tyechange |
3178 // add issue tyechange |
3206 string bType = baseStruct.structName + "::" + baseStruct.members.at(bInner).elementName; |
3179 string bType = baseStruct.structName + "::" + baseStruct.members.at(bInner).elementName; |
3207 string cType = curStruct.members.at(cInner).elementType; |
3180 string cType = curStruct.members.at(cInner).elementType; |
3208 int lineNo = curStruct.members.at(cInner).lineNo; |
3181 int lineNo = curStruct.members.at(cInner).lineNo; |
3209 report.addIssue(baseResource.RHFileName, bType, EIssueIdentityStructMember, EIssueTypeChangeInType, |
3182 report.addIssue(baseResource.RHFileName, bType, EIssueIdentityStructMember, EIssueTypeChangeInType, |
3210 ESeverityNULL, ESeveritySCBreak, cType, lineNo,curResource.RHFileName,""); |
3183 ESeverityNULL, ESeveritySCBreak, cType, lineNo,"",curResource.RHFileName,""); |
3211 } |
3184 } |
3212 |
3185 |
3213 break; |
3186 break; |
3214 |
3187 |
3215 }// memeber name matched |
3188 }// memeber name matched |
3219 { |
3192 { |
3220 // Add Issue Member not found // baseStruct.members.at(bInner) |
3193 // Add Issue Member not found // baseStruct.members.at(bInner) |
3221 string bMember = baseStruct.structName + "::" + baseStruct.members.at(bInner).elementName; |
3194 string bMember = baseStruct.structName + "::" + baseStruct.members.at(bInner).elementName; |
3222 int lineNo = curStruct.lineNo; |
3195 int lineNo = curStruct.lineNo; |
3223 report.addIssue(baseResource.RHFileName, bMember, EIssueIdentityStructMember, EIssueTypeRemoval, |
3196 report.addIssue(baseResource.RHFileName, bMember, EIssueIdentityStructMember, EIssueTypeRemoval, |
3224 ESeverityNULL,ESeveritySCBreak, "", lineNo,curResource.RHFileName,""); |
3197 ESeverityNULL,ESeveritySCBreak, "", lineNo,"",curResource.RHFileName,""); |
3225 } |
3198 } |
3226 }// loop base struct member |
3199 }// loop base struct member |
3227 |
3200 |
3228 }// struct name match |
3201 }// struct name match |
3229 }// loop curr structs |
3202 }// loop curr structs |
3230 |
3203 |
3231 if( structFound == false ) |
3204 if( structFound == false ) |
3232 { |
3205 { |
3233 //Add issue struct not found |
3206 //Add issue struct not found |
3234 report.addIssue(baseResource.RHFileName, baseStruct.structName, EIssueIdentityStruct, EIssueTypeRemoval, |
3207 report.addIssue(baseResource.RHFileName, baseStruct.structName, EIssueIdentityStruct, EIssueTypeRemoval, |
3235 ESeverityNULL, ESeveritySCBreak, "", 0,curResource.RHFileName,""); |
3208 ESeverityNULL, ESeveritySCBreak, "", 0,"",curResource.RHFileName,""); |
3236 } |
3209 } |
3237 }//loop base structs |
3210 }//loop base structs |
3238 |
3211 |
3239 // --------------Enum Comparison ------------ |
3212 // --------------Enum Comparison ------------ |
3240 vector<EnumMember>baseEnumNameEmptyMemberList; |
3213 vector<EnumMember>baseEnumNameEmptyMemberList; |
3309 string baseEnumVal = baseEnum.enumName +"::" + baseEnum.enums.at(outer).enumMemName; |
3282 string baseEnumVal = baseEnum.enumName +"::" + baseEnum.enums.at(outer).enumMemName; |
3310 string curEnumVal = curEnum.enums.at(inner).enumVal; |
3283 string curEnumVal = curEnum.enums.at(inner).enumVal; |
3311 int lineNo = curEnum.enums.at(inner).lineNo; |
3284 int lineNo = curEnum.enums.at(inner).lineNo; |
3312 |
3285 |
3313 report.addIssue(baseResource.RHFileName, baseEnumVal, EIssueIdentityEnumerationValue, EIssueTypeChangeInInitialisation, |
3286 report.addIssue(baseResource.RHFileName, baseEnumVal, EIssueIdentityEnumerationValue, EIssueTypeChangeInInitialisation, |
3314 ESeverityNULL, ESeveritySCBreak, curEnumVal, lineNo,curResource.RHFileName,""); |
3287 ESeverityNULL, ESeveritySCBreak, curEnumVal, lineNo,"",curResource.RHFileName,""); |
3315 } |
3288 } |
3316 } |
3289 } |
3317 break; |
3290 break; |
3318 } |
3291 } |
3319 } // loop cur mems |
3292 } // loop cur mems |
3322 { |
3295 { |
3323 // Add Enum Member Missing |
3296 // Add Enum Member Missing |
3324 string bMemName = baseEnum.enumName +"::" + baseEnum.enums.at(outer).enumMemName; |
3297 string bMemName = baseEnum.enumName +"::" + baseEnum.enums.at(outer).enumMemName; |
3325 int lineNo = curEnum.lineNo; |
3298 int lineNo = curEnum.lineNo; |
3326 report.addIssue(baseResource.RHFileName, bMemName, EIssueIdentityEnumerationValue, EIssueTypeRemoval, |
3299 report.addIssue(baseResource.RHFileName, bMemName, EIssueIdentityEnumerationValue, EIssueTypeRemoval, |
3327 ESeverityNULL, ESeveritySCBreak, "", lineNo,curResource.RHFileName,""); |
3300 ESeverityNULL, ESeveritySCBreak, "", lineNo,"",curResource.RHFileName,""); |
3328 |
3301 |
3329 } |
3302 } |
3330 }// loop base mems |
3303 }// loop base mems |
3331 |
3304 |
3332 break; |
3305 break; |
3337 { |
3310 { |
3338 // Enum List missing |
3311 // Enum List missing |
3339 string bEnum = baseEnum.enumName; |
3312 string bEnum = baseEnum.enumName; |
3340 string cEnum = curEnum.enumName; |
3313 string cEnum = curEnum.enumName; |
3341 report.addIssue(baseResource.RHFileName, bEnum, EIssueIdentityEnumerationValue, EIssueTypeRemoval, |
3314 report.addIssue(baseResource.RHFileName, bEnum, EIssueIdentityEnumerationValue, EIssueTypeRemoval, |
3342 ESeverityNULL, ESeveritySCBreak, cEnum, 0,curResource.RHFileName,""); |
3315 ESeverityNULL, ESeveritySCBreak, cEnum, 0,"",curResource.RHFileName,""); |
3343 } |
3316 } |
3344 }//base enums |
3317 }//base enums |
3345 |
3318 |
3346 // Now check for enum list with no enum name, in this case check member name and value |
3319 // Now check for enum list with no enum name, in this case check member name and value |
3347 if(baseEnumNameEmptyMemberList.size() > 0) |
3320 if(baseEnumNameEmptyMemberList.size() > 0) |
3364 string baseEnumVal = "::" + bEnumMem.enumMemName; |
3337 string baseEnumVal = "::" + bEnumMem.enumMemName; |
3365 string curEnumVal = cEnumMem.enumMemName; |
3338 string curEnumVal = cEnumMem.enumMemName; |
3366 int lineNo = cEnumMem.lineNo; |
3339 int lineNo = cEnumMem.lineNo; |
3367 |
3340 |
3368 report.addIssue(baseResource.RHFileName, baseEnumVal, EIssueIdentityEnumerationValue, EIssueTypeChangeInInitialisation, |
3341 report.addIssue(baseResource.RHFileName, baseEnumVal, EIssueIdentityEnumerationValue, EIssueTypeChangeInInitialisation, |
3369 ESeverityNULL, ESeveritySCBreak, curEnumVal, lineNo,curResource.RHFileName,""); |
3342 ESeverityNULL, ESeveritySCBreak, curEnumVal, lineNo,"",curResource.RHFileName,""); |
3370 } |
3343 } |
3371 break; |
3344 break; |
3372 } |
3345 } |
3373 } |
3346 } |
3374 if(enumMemFound == false) |
3347 if(enumMemFound == false) |
3375 { |
3348 { |
3376 // add issue enum mem mising |
3349 // add issue enum mem mising |
3377 string bMemName = "::" + bEnumMem.enumMemName; |
3350 string bMemName = "::" + bEnumMem.enumMemName; |
3378 report.addIssue(baseResource.RHFileName, bMemName, EIssueIdentityEnumerationValue, EIssueTypeRemoval, |
3351 report.addIssue(baseResource.RHFileName, bMemName, EIssueIdentityEnumerationValue, EIssueTypeRemoval, |
3379 ESeverityNULL, ESeveritySCBreak, "", 0,curResource.RHFileName,""); |
3352 ESeverityNULL, ESeveritySCBreak, "", 0,"",curResource.RHFileName,""); |
3380 } |
3353 } |
3381 } |
3354 } |
3382 } |
3355 } |
3383 |
3356 |
3384 |
3357 |
3396 macroFound = true; |
3369 macroFound = true; |
3397 if(baseMacro.macroVal != curMacro.macroVal ) |
3370 if(baseMacro.macroVal != curMacro.macroVal ) |
3398 { |
3371 { |
3399 //add issue macro value mismatch |
3372 //add issue macro value mismatch |
3400 report.addIssue(baseResource.RHFileName, baseMacro.macroName, EIssueIdentityMacro, EIssueTypeChange, |
3373 report.addIssue(baseResource.RHFileName, baseMacro.macroName, EIssueIdentityMacro, EIssueTypeChange, |
3401 ESeverityNULL, ESeveritySCBreak, curMacro.macroVal, curMacro.lineNo,curResource.RHFileName,""); |
3374 ESeverityNULL, ESeveritySCBreak, curMacro.macroVal, curMacro.lineNo,"",curResource.RHFileName,""); |
3402 } |
3375 } |
3403 break; // macro name matched |
3376 break; // macro name matched |
3404 } |
3377 } |
3405 |
3378 |
3406 } |
3379 } |
3407 |
3380 |
3408 if (macroFound == false ) |
3381 if (macroFound == false ) |
3409 { |
3382 { |
3410 // add issue macro not found |
3383 // add issue macro not found |
3411 report.addIssue(baseResource.RHFileName, baseMacro.macroName, EIssueIdentityMacro, EIssueTypeRemoval, |
3384 report.addIssue(baseResource.RHFileName, baseMacro.macroName, EIssueIdentityMacro, EIssueTypeRemoval, |
3412 ESeverityNULL, ESeveritySCBreak, "", 0,curResource.RHFileName,""); |
3385 ESeverityNULL, ESeveritySCBreak, "", 0,"",curResource.RHFileName,""); |
3413 } |
3386 } |
3414 } |
3387 } |
3415 |
3388 |
3416 |
3389 |
3417 |
3390 |