apicompatanamdw/compatanalysercmd/headeranalyser/src/Issues.cpp
changeset 3 ebe3f8f03b59
parent 0 638b9c697799
child 12 a0eee409ff14
equal deleted inserted replaced
2:0cb2248d0edc 3:ebe3f8f03b59
   136 const char* KIssueTypeChangeInType = "has changed its type";
   136 const char* KIssueTypeChangeInType = "has changed its type";
   137 const char* KIssueTypeChangeInInitialisation = "has changed its initialisation value";
   137 const char* KIssueTypeChangeInInitialisation = "has changed its initialisation value";
   138 const char* KIssueTypeNewOverride = "overridden in derivable class";
   138 const char* KIssueTypeNewOverride = "overridden in derivable class";
   139 //const char* KIssueTypeRemovedOverride = "removed override in derivable class";
   139 //const char* KIssueTypeRemovedOverride = "removed override in derivable class";
   140 const char* KIssueTypeEmpty = "contains nothing to be analysed";
   140 const char* KIssueTypeEmpty = "contains nothing to be analysed";
       
   141 const char* KIssueTypeDefaultParam = "has changed one of its default parameters";
       
   142 const char* KIssueTypeOverload = "has been overloaded";
       
   143 
   141 
   144 
   142 // Table of the issue type descriptions
   145 // Table of the issue type descriptions
   143 const char* KIssueTypeDesc[EIssueTypeCount] = 
   146 const char* KIssueTypeDesc[EIssueTypeCount] = 
   144 {
   147 {
   145     KIssueTypeRemoval,
   148     KIssueTypeRemoval,
   164     KIssueTypeBaseSize,
   167     KIssueTypeBaseSize,
   165     KIssueTypeUnderConstruction,
   168     KIssueTypeUnderConstruction,
   166     KIssueTypeParamConst,
   169     KIssueTypeParamConst,
   167     KIssueTypeParamConst2,
   170     KIssueTypeParamConst2,
   168 	KIssueTypeReturnConst,
   171 	KIssueTypeReturnConst,
   169     KIssueTypeReturnConst2    
   172     KIssueTypeReturnConst2,
       
   173 	KIssueTypeDefaultParam,
       
   174 	KIssueTypeOverload
   170 };
   175 };
   171 
   176 
   172 template <typename T>
   177 template <typename T>
   173 string GetIgnoreInfoFromAttribute(const HANodeIterator& node, const T* attribute)
   178 string GetIgnoreInfoFromAttribute(const HANodeIterator& node, const T* attribute)
   174 {
   179 {
   553 
   558 
   554     }
   559     }
   555 	return ignoreinfo;
   560 	return ignoreinfo;
   556 }
   561 }
   557 
   562 
   558 //	Param non-const to const,                    
   563 //	Param,                    
   559 //	ESeverityNULL,        
   564 //	ESeverityInformative,        
   560 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeParamConst>(bool accessible)
   565 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeDefaultParam>(bool accessible)
   561 {
   566 {
   562 	if ( !accessible )
   567 	return ESeverityInformative;
   563 	{
   568 }
   564 		return ESeverityNULL;
   569 template <> string ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeDefaultParam>(const HANodeIterator& baseline,const HANodeIterator& current)
   565 	}
   570 {
   566 	return ESeverityNULL;
   571     string ignoreinfo=KIgnoreInfoNone;
   567 }
       
   568 template <> string ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParamConst>(const HANodeIterator& baseline,const HANodeIterator& current)
       
   569 {
       
   570 	string ignoreinfo=KIgnoreInfoNone;
       
   571     //ignoreinfo = GenerateFunctionSignature(*this);
       
   572     DOMElement * element = static_cast<DOMElement*>(current.current);
   572     DOMElement * element = static_cast<DOMElement*>(current.current);
   573     DOMNodeList* childs = element->getChildNodes();
   573     DOMNodeList* childs = element->getChildNodes();
   574     
   574     
   575     XMLSize_t childcount = childs->getLength();
   575     XMLSize_t childcount = childs->getLength();
   576 
   576 
   597 
   597 
   598     }
   598     }
   599 	return ignoreinfo;
   599 	return ignoreinfo;
   600 }
   600 }
   601 
   601 
   602 //	Param const to non-const,                    
   602 //	Param non-const to const,                    
   603 //	ESeverityFCBreak,        
   603 //	ESeverityNULL,        
   604 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeParamConst2>(bool accessible)
   604 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeParamConst>(bool accessible)
   605 {
   605 {
   606 	if ( !accessible )
   606 	if ( !accessible )
   607 	{
   607 	{
   608 		return ESeverityPossibleFCBreak;
   608 		return ESeverityNULL;
   609 	}
   609 	}
   610 	return ESeverityFCBreak;
   610 	return ESeverityNULL;
   611 }
   611 }
   612 template <> string ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParamConst2>(const HANodeIterator& baseline,const HANodeIterator& current)
   612 template <> string ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParamConst>(const HANodeIterator& baseline,const HANodeIterator& current)
   613 {
   613 {
   614 	string ignoreinfo=KIgnoreInfoNone;
   614 	string ignoreinfo=KIgnoreInfoNone;
   615     //ignoreinfo = GenerateFunctionSignature(*this);
   615     //ignoreinfo = GenerateFunctionSignature(*this);
   616     DOMElement * element = static_cast<DOMElement*>(current.current);
   616     DOMElement * element = static_cast<DOMElement*>(current.current);
   617     DOMNodeList* childs = element->getChildNodes();
   617     DOMNodeList* childs = element->getChildNodes();
   641 
   641 
   642     }
   642     }
   643 	return ignoreinfo;
   643 	return ignoreinfo;
   644 }
   644 }
   645 
   645 
       
   646 //	Param const to non-const,                    
       
   647 //	ESeverityFCBreak,        
       
   648 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeParamConst2>(bool accessible)
       
   649 {
       
   650 	if ( !accessible )
       
   651 	{
       
   652 		return ESeverityPossibleFCBreak;
       
   653 	}
       
   654 	return ESeverityFCBreak;
       
   655 }
       
   656 template <> string ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParamConst2>(const HANodeIterator& baseline,const HANodeIterator& current)
       
   657 {
       
   658 	string ignoreinfo=KIgnoreInfoNone;
       
   659     //ignoreinfo = GenerateFunctionSignature(*this);
       
   660     DOMElement * element = static_cast<DOMElement*>(current.current);
       
   661     DOMNodeList* childs = element->getChildNodes();
       
   662     
       
   663     XMLSize_t childcount = childs->getLength();
       
   664 
       
   665     unsigned int i = 0;
       
   666     for (i = 0; i < childcount; ++i)
       
   667     {
       
   668         DOMNode* child = childs->item(i);
       
   669         HANodeIterator childit(current);
       
   670         childit.current = child;
       
   671 
       
   672         short nodetype = childit->getNodeType();
       
   673         if (nodetype == DOMNode::ELEMENT_NODE)
       
   674         {
       
   675             const XMLCh * defaultval = childit.GetAttribute(KXMLDefaultString);
       
   676             if ( defaultval )
       
   677             {
       
   678                 ignoreinfo += toString(defaultval);
       
   679             }
       
   680             else
       
   681             {
       
   682             }
       
   683             ignoreinfo += ";";
       
   684         }
       
   685 
       
   686     }
       
   687 	return ignoreinfo;
       
   688 }
       
   689 
   646 //	Return,                   
   690 //	Return,                   
   647 //	ESeverityBBCBreak,        
   691 //	ESeverityBBCBreak,        
   648 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeReturn>(bool accessible)
   692 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeReturn>(bool accessible)
   649 {
   693 {
   650 	if ( !accessible )
   694 	if ( !accessible )
   746 		ignoreinfo = toString(access);
   790 		ignoreinfo = toString(access);
   747 	}
   791 	}
   748 	return ignoreinfo;
   792 	return ignoreinfo;
   749 }
   793 }
   750 
   794 
       
   795 //	Overloaded function,                               	
       
   796 //	ESeverityBBCBreak,                 
       
   797 template <> TBCSeverity BCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeOverload>(bool accessible)
       
   798 {
       
   799 	if ( !accessible )
       
   800 	{
       
   801 		return ESeverityNULL;
       
   802 	}
       
   803 	return ESeverityBBCBreak;
       
   804 }
       
   805 template <> string ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeOverload>(const HANodeIterator& baseline,const HANodeIterator& current)
       
   806 {
       
   807 	string ignoreinfo=KIgnoreInfoNone;
       
   808 	return ignoreinfo;
       
   809 }
       
   810 
   751 ///////////////////////////////////////////////////////////////////////////////////////////////////////////
   811 ///////////////////////////////////////////////////////////////////////////////////////////////////////////
   752 //EIssueIdentityInlineFunction,
   812 //EIssueIdentityInlineFunction,
   753 //   Removal,                  
   813 //   Removal,                  
   754 //    {ESeverityInformative,   
   814 //    {ESeverityInformative,   
   755 template <> TBCSeverity BCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeRemoval>(bool accessible)
   815 template <> TBCSeverity BCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeRemoval>(bool accessible)
   778 template <> string ignoreInfo<EIssueIdentityInlineFunction,EIssueTypeParam>(const HANodeIterator& baseline,const HANodeIterator& current)
   838 template <> string ignoreInfo<EIssueIdentityInlineFunction,EIssueTypeParam>(const HANodeIterator& baseline,const HANodeIterator& current)
   779 {
   839 {
   780 	return ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParam>(baseline,current);
   840 	return ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParam>(baseline,current);
   781 }
   841 }
   782 
   842 
       
   843 //	Param,                    
       
   844 //	ESeverityInformative,     
       
   845 template <> TBCSeverity BCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeDefaultParam>(bool accessible)
       
   846 {
       
   847 	return ESeverityInformative;
       
   848 }
       
   849 template <> string ignoreInfo<EIssueIdentityInlineFunction,EIssueTypeDefaultParam>(const HANodeIterator& baseline,const HANodeIterator& current)
       
   850 {
       
   851 	return ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeDefaultParam>(baseline,current);
       
   852 }
       
   853 
   783 //	Param non-const to const,                    
   854 //	Param non-const to const,                    
   784 //	ESeverityNULL,        
   855 //	ESeverityNULL,        
   785 template <> TBCSeverity BCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeParamConst>(bool accessible)
   856 template <> TBCSeverity BCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeParamConst>(bool accessible)
   786 {
   857 {
   787 	if ( !accessible )
   858 	if ( !accessible )
   939 template <> string ignoreInfo<EIssueIdentityVirtualFunction,EIssueTypeParam>(const HANodeIterator& baseline,const HANodeIterator& current)
  1010 template <> string ignoreInfo<EIssueIdentityVirtualFunction,EIssueTypeParam>(const HANodeIterator& baseline,const HANodeIterator& current)
   940 {
  1011 {
   941 	return ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParam>(baseline,current);
  1012 	return ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeParam>(baseline,current);
   942 }
  1013 }
   943 
  1014 
       
  1015 //	Param,                    
       
  1016 //	ESeverityInformative,  
       
  1017 
       
  1018 template <> TBCSeverity BCseverityAccessible<EIssueIdentityVirtualFunction,EIssueTypeDefaultParam>(bool accessible)
       
  1019 {	
       
  1020 	return ESeverityInformative;
       
  1021 }
       
  1022 template <> string ignoreInfo<EIssueIdentityVirtualFunction,EIssueTypeDefaultParam>(const HANodeIterator& baseline,const HANodeIterator& current)
       
  1023 {
       
  1024 	return ignoreInfo<EIssueIdentityExportedFunction,EIssueTypeDefaultParam>(baseline,current);
       
  1025 }
   944 //	Return,                   
  1026 //	Return,                   
   945 //	ESeverityBBCBreak,     
  1027 //	ESeverityBBCBreak,     
   946 template <> TBCSeverity BCseverityAccessible<EIssueIdentityVirtualFunction,EIssueTypeReturn>(bool accessible)
  1028 template <> TBCSeverity BCseverityAccessible<EIssueIdentityVirtualFunction,EIssueTypeReturn>(bool accessible)
   947 {
  1029 {
   948 	if ( !accessible )
  1030 	if ( !accessible )
  1997 	{
  2079 	{
  1998 		return ESeveritySCNULL;
  2080 		return ESeveritySCNULL;
  1999 	}
  2081 	}
  2000 	return ESeveritySCBreak;
  2082 	return ESeveritySCBreak;
  2001 }
  2083 }
       
  2084 //	Param,                    
       
  2085 //	ESeveritySCInformative,        
       
  2086 template <> TSCSeverity SCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeDefaultParam>(bool accessible)
       
  2087 {
       
  2088 	if ( !accessible )
       
  2089 	{
       
  2090 		return ESeveritySCNULL;
       
  2091 	}
       
  2092 	return ESeveritySCInformative;
       
  2093 }
  2002 
  2094 
  2003 //	Param non-const to const,                    
  2095 //	Param non-const to const,                    
  2004 //	ESeveritySCBreak, 
  2096 //	ESeveritySCBreak, 
  2005 template <> TSCSeverity SCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeParamConst>(bool accessible)
  2097 template <> TSCSeverity SCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeParamConst>(bool accessible)
  2006 {
  2098 {
  2064 		return ESeveritySCNULL;
  2156 		return ESeveritySCNULL;
  2065 	}
  2157 	}
  2066 	return ESeveritySCBreak;
  2158 	return ESeveritySCBreak;
  2067 }
  2159 }
  2068 
  2160 
  2069 
  2161 //	Overloaded function,                               	
       
  2162 //	ESeveritySCNULL,                 
       
  2163 template <> TSCSeverity SCseverityAccessible<EIssueIdentityExportedFunction,EIssueTypeOverload>(bool accessible)
       
  2164 {
       
  2165 	return ESeveritySCNULL;
       
  2166 }
  2070 ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  2167 ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  2071 //EIssueIdentityInlineFunction,
  2168 //EIssueIdentityInlineFunction,
  2072 //   Removal,                  
  2169 //   Removal,                  
  2073 //    {ESeveritySCBreak,   
  2170 //    {ESeveritySCBreak,   
  2074 template <> TSCSeverity SCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeRemoval>(bool accessible)
  2171 template <> TSCSeverity SCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeRemoval>(bool accessible)
  2089 		return ESeveritySCNULL;
  2186 		return ESeveritySCNULL;
  2090 	}
  2187 	}
  2091 	return ESeveritySCBreak;
  2188 	return ESeveritySCBreak;
  2092 }
  2189 }
  2093 
  2190 
       
  2191 //	Param,                    
       
  2192 //	ESeveritySCInformative,     
       
  2193 template <> TSCSeverity SCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeDefaultParam>(bool accessible)
       
  2194 {
       
  2195 	if ( !accessible )
       
  2196 	{
       
  2197 		return ESeveritySCNULL;
       
  2198 	}
       
  2199 	return ESeveritySCInformative;
       
  2200 }
       
  2201 
  2094 //	Param non-const to const,                    
  2202 //	Param non-const to const,                    
  2095 //	ESeveritySCBreak,
  2203 //	ESeveritySCBreak,
  2096 template <> TSCSeverity SCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeParamConst>(bool accessible)
  2204 template <> TSCSeverity SCseverityAccessible<EIssueIdentityInlineFunction,EIssueTypeParamConst>(bool accessible)
  2097 {
  2205 {
  2098 	if ( !accessible )
  2206 	if ( !accessible )
  2154 	{
  2262 	{
  2155 		return ESeveritySCNULL;
  2263 		return ESeveritySCNULL;
  2156 	}
  2264 	}
  2157 	return ESeveritySCBreak;
  2265 	return ESeveritySCBreak;
  2158 }
  2266 }
  2159 
       
  2160 
  2267 
  2161 ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  2268 ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  2162 //EIssueIdentityExportedVirtualFunction,
  2269 //EIssueIdentityExportedVirtualFunction,
  2163 //   Removal,                  
  2270 //   Removal,                  
  2164 //    {ESeveritySCBreak,        
  2271 //    {ESeveritySCBreak,        
  2204 	{
  2311 	{
  2205 		return ESeveritySCNULL;
  2312 		return ESeveritySCNULL;
  2206 	}
  2313 	}
  2207 	return ESeveritySCBreak;
  2314 	return ESeveritySCBreak;
  2208 }
  2315 }
  2209 
  2316 //	Param,                    
       
  2317 //	ESeveritySCInformative,  
       
  2318 template <> TSCSeverity SCseverityAccessible<EIssueIdentityVirtualFunction,EIssueTypeDefaultParam>(bool accessible)
       
  2319 {
       
  2320 	if ( !accessible )
       
  2321 	{
       
  2322 		return ESeveritySCNULL;
       
  2323 	}
       
  2324 	return ESeveritySCInformative;
       
  2325 }
  2210 //	Return,                   
  2326 //	Return,                   
  2211 //	ESeveritySCBreak,     
  2327 //	ESeveritySCBreak,     
  2212 template <> TSCSeverity SCseverityAccessible<EIssueIdentityVirtualFunction,EIssueTypeReturn>(bool accessible)
  2328 template <> TSCSeverity SCseverityAccessible<EIssueIdentityVirtualFunction,EIssueTypeReturn>(bool accessible)
  2213 {
  2329 {
  2214 	if ( !accessible )
  2330 	if ( !accessible )