deprecated/buildtools/buildsystemtools/scanlog/Scanlog.pm
changeset 664 44b0e894b7ab
parent 655 3f65fd25dfd4
equal deleted inserted replaced
654:7c11c3d8d025 664:44b0e894b7ab
       
     1 # Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 # All rights reserved.
       
     3 # This component and the accompanying materials are made available
       
     4 # under the terms of "Eclipse Public License v1.0"
       
     5 # which accompanies this distribution, and is available
       
     6 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 #
       
     8 # Initial Contributors:
       
     9 # Nokia Corporation - initial contribution.
       
    10 #
       
    11 # Contributors:
       
    12 #
       
    13 # Description:
       
    14 # summarise an automated build log
       
    15 # documentation available in generic\tools\e32toolp\docs\scanlog.txt
       
    16 # please update the documentation when modifying this file
       
    17 # 
       
    18 #
       
    19 
       
    20 package Scanlog;
       
    21 
       
    22 use strict;
       
    23 use Carp;
       
    24 
       
    25 # CheckForErrors
       
    26 #
       
    27 # Inputs
       
    28 # $line - Line of text to check
       
    29 #
       
    30 # Outputs
       
    31 # Return true for presence of error in the line
       
    32 # Return false for no error found
       
    33 #
       
    34 # Description
       
    35 # This function matches the input against a known set of Error Strings
       
    36 sub CheckForErrors
       
    37 {
       
    38   my ($line) = @_;
       
    39 
       
    40 	# FLEXlm license server errors
       
    41 	if ($line =~ /FLEXlm error:/)
       
    42 	{
       
    43 		return 1;
       
    44 	}
       
    45 
       
    46 	# BLDMAKE ERROR: Can't find "\INTERNET\GROUP\BLD.INF"
       
    47 	# ABLD ERROR: Project Bldmake directory "\EPOC32\BUILD\APP-FRAMEWORK\UIKLAF\GROUP\" does not exist
       
    48 
       
    49 	if ($line =~ /(ABLD|BLDMAKE) ERROR:/)
       
    50 	{
       
    51 		return 1;
       
    52 	}
       
    53 
       
    54 	# "\WAPENG\GROUP\BLD.INF" FATAL ERROR(S):
       
    55 
       
    56 	if ($line =~ /FATAL ERROR\(S\):/)
       
    57 	{
       
    58 		return 1;
       
    59 	}
       
    60 
       
    61 
       
    62 	# NMAKE : fatal error U1077: 'C:\apps\DevStudio\VC\BIN\NMAKE.EXE' : return code '0x2'
       
    63 
       
    64 	if ($line =~ /fatal error U1077/)
       
    65 	{
       
    66 		return 1;
       
    67 	}
       
    68 	
       
    69 	# match all falal error
       
    70 	if ($line =~ /^fatal error/i)
       
    71 	{
       
    72 		return 1;
       
    73 	}
       
    74 
       
    75 	# NMAKE : warning U4010: 'FINALCOPYFXCM' : build failed; /K specified, continuing ...
       
    76 
       
    77 	if ($line =~ /warning U4010/)
       
    78 	{
       
    79 		return 1;
       
    80 	}
       
    81 
       
    82 	# make: *** [SAVESPACECONVTOOL] Error 2
       
    83 
       
    84 	if ($line =~ /make(\.exe)?(\[\d+\])?: \*\*\* /)
       
    85 	{
       
    86 		return 1;
       
    87 	}
       
    88 
       
    89 	# make: Target `SAVESPACE' not remade because of errors.
       
    90 
       
    91 	if ($line =~ /make(\.exe)?(\[\d+\])?: .* not remade /)
       
    92 	{
       
    93 		return 1;
       
    94 	}
       
    95 
       
    96 	# "..\UCRT\Ecrt0.cpp", line 24: Error:  #390: function "main" may not be called or have its address taken
       
    97 	# "EUSER\\epoc\\arm\\Uc_i64.cia", line 16: Error: A1356W: Instruction not supported on targeted CPU
       
    98 
       
    99 	if ($line =~ /"(.*)", line (\d+): (Error: +(.\d+.*?):.*)$/)
       
   100 	{
       
   101 		return 1;
       
   102 	}
       
   103 
       
   104 	# Fatal error: Internal fault: 0x5c6e (200322) in _ZN17CContactLocalView20HandleDatabaseEventLE23TContactDbObserverEvent
       
   105 
       
   106 	if ($line =~ /error: ((Internal fault):.*)$/)
       
   107 	{
       
   108 		return 1;
       
   109 	}
       
   110 	
       
   111 	# Exception: STATUS_ACCESS_VIOLATION
       
   112 	# networkPrim.c
       
   113   #    0 [main] make 2020 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
       
   114   #  265 [main] make 2020 open_stackdumpfile: Dumping stack trace to make.exe.stackdump
       
   115 	if ($line =~ /Exception: STATUS_ACCESS_VIOLATION/)
       
   116 	{
       
   117 		return 1;
       
   118 	}
       
   119 
       
   120 	# MSGBROWSER.WINSCW:3233: target `\EPOC32\RELEASE\WINSCW\UDEB\Z\System\Data' given more than once in the same rule.
       
   121 	if ($line =~ /target .* given more than once in the same rule/)
       
   122 	{
       
   123 		return 1;
       
   124 	}
       
   125 	
       
   126 	# ERROR: <anything>
       
   127 	if ($line =~ /^ERROR: /m)
       
   128 	{
       
   129 		return 1;
       
   130 	}
       
   131 	
       
   132 	# ERROR (for CDB errors)
       
   133 	if ($line =~ /^ERROR\t/)
       
   134 	{
       
   135 		return 1;
       
   136 	}
       
   137 	
       
   138 	# elf2e32 : Error: E1035: Undefined Symbol blah blah blah
       
   139 	# elf2e32 : Error: E1036: Symbol blah blah blah
       
   140 	if ($line =~ /^\s*elf2e32\s*:\s*Error\s*:\s*/i)
       
   141 	{
       
   142 		return 1;
       
   143 	}
       
   144 	
       
   145 	# Not already returned so return false
       
   146 	return 0;
       
   147 }
       
   148 
       
   149 # CheckForRemarks
       
   150 #
       
   151 # Inputs
       
   152 # $iLine - Line of text to check
       
   153 #
       
   154 # Outputs
       
   155 # Return true for presence of Warning in the line according to the warning codes
       
   156 # defined in the checkList array
       
   157 # The list is the current known EABI warnings which are considered to be 
       
   158 # Remarks
       
   159 # Return false for no Warning found
       
   160 #
       
   161 # Description
       
   162 # This function matches the input against a known set of Warning Strings defined
       
   163 # in the array CheckList
       
   164 my %RVCT_checklist=(
       
   165 
       
   166  
       
   167 # Warnings to be fixed if deemed safe
       
   168 
       
   169  "#111-D" => "statement is unreachable",
       
   170  "#186-D" => "pointless comparison of unsigned integer with zero",
       
   171  "#236-D" => "controlling expression is constant",
       
   172  "#494-D" => "declaring a void parameter list with a typedef is nonstandard",
       
   173  "C2874W" => "xxx may be used before set",
       
   174  "C3017W" => "xxx may be used before set",
       
   175  
       
   176 # Warnings not required to be fixed, too risky
       
   177 
       
   178  "#1293-D" => "assignment in condition",
       
   179  
       
   180 # Warnings not required to be fixed, too big a workload
       
   181 
       
   182  "#177-D" => "variable abc was declared but never referenced",
       
   183  "#550-D" => "variable xxx was set but never used",
       
   184  "#830-D" => "function \"XXX::operator new(xyz)\" has no corresponding operator delete (to be called if an exception is thrown during initialization of an allocated object)",
       
   185  "L6331W" => "No eligible global symbol matches pattern _ll_cmpeq.",
       
   186  );
       
   187 
       
   188 sub CheckForRemarks
       
   189 {
       
   190     my ($line) = @_;
       
   191 
       
   192     # "..\UCRT\Ecrt0.cpp", line 12: Warning:  #335-D: linkage specification is not allowed
       
   193     # "s16c.o(.directive)", line 70: Warning: L6331W: s16c.o(.directive)(line 70, col 14) No eligible global symbol matches pattern _fsqrt.
       
   194     if ($line =~ /".*", line \d+: Warning: +(.\d+.*?):/)
       
   195     {
       
   196 	    # Some compiler warnings about about style rather than substance. The RVCT
       
   197 	    # compiler warnings are easily identified, and the RVCT_checklist above
       
   198 	    # classifies the warnings present in the Symbian OS source code which are
       
   199 	    # not currently considered to be violations of the "zero warnings" policy.
       
   200 	    # It is the responsibility of the Master Codeline Forum to manage this list,
       
   201 	    # as part of the "zero warnings" policy.
       
   202 		return defined($RVCT_checklist{$1});
       
   203     }
       
   204 
       
   205 	# Command line warning D4025 : overriding '/O1' with '/Od'
       
   206     if ($line =~ /Command line warning D4025 : /)
       
   207     {
       
   208     	# This could be fixed by more subtle code in cl_win.pm
       
   209     	# which avoids putting both /O1 and /Od on the command line
       
   210 		return 1;
       
   211 	}
       
   212 			
       
   213 	# REMARK:
       
   214     if( $line =~ /^REMARK: /m)
       
   215     {
       
   216         return 1;
       
   217     }
       
   218 
       
   219 	# Windows Event log warning from GNU Make - Treat as remark for the time being.
       
   220 	if ($line =~ /^EventType:\s+Error\s+Source:\s+GNU\s+Make/)
       
   221 	{
       
   222 		return 1;
       
   223 	}
       
   224 
       
   225   # This is used convert what would be picked up as warning in to a remark, as remarks are check for first
       
   226 	# It also returns an additional value of the number of lines to slurp up to get the so the multi line
       
   227 	# warning (remark) is only seen once.
       
   228 	
       
   229 	# ..\SETEL\ET_PHONE.CPP:19: warning: cannot find matching deallocation function 
       
   230   # ..\SETEL\ET_PHONE.CPP:19: warning: for 'CReqEntry'
       
   231 	if ($line =~ /:\d+: warning: cannot find matching deallocation function/)
       
   232 	{
       
   233 		return 1,1;
       
   234 	}
       
   235 
       
   236 	# fix to get scanlog catch the output of #pragma message (...) as a remark
       
   237 	#Codewarrior 3.0 doesn't output line number for #pragma message, whereas 3.1.1 outputs line number.
       
   238 	#The regexp below matches both the cases
       
   239     if( $line =~ /((:\d+)*: note: )/)
       
   240     {
       
   241         return 1;
       
   242     }
       
   243 	
       
   244 	# getrel failed.
       
   245 	# Error: testtools_stat_desktop DP00391_DeveloperProduct not found
       
   246 	if( $line =~ /^Error:.+not found/)
       
   247     {
       
   248         return 1;
       
   249     }
       
   250 	# Not already returned so return false
       
   251     return 0;
       
   252 	
       
   253 }
       
   254 
       
   255 # CheckForWarnings
       
   256 #
       
   257 # Inputs
       
   258 # $iLine - Line of text to check
       
   259 #
       
   260 # Outputs
       
   261 # Return true for presence of Warning in the line
       
   262 # Return false for no Warning found
       
   263 #
       
   264 # Description
       
   265 # This function matches the input against a known set of Warning Strings
       
   266 sub CheckForWarnings
       
   267 {
       
   268   my ($line) = @_;
       
   269 
       
   270 	# linkfouraif.rss(25) : Warning: (047) the STRUCT that this resource is based on contains a
       
   271 
       
   272 	if ($line =~ /\\\\(.*?)\(\d+\)\s:\sWarning:\s\(\d+\)/)
       
   273 
       
   274 	{               
       
   275               
       
   276 		return 1;
       
   277 	}
       
   278 
       
   279 
       
   280 	# RCOMP Warning: Unmatched enum name used as simple initialiser
       
   281 
       
   282 	if ($line =~ /Warning: Unmatched/i)
       
   283 	{
       
   284 		return 1;
       
   285 	}
       
   286 
       
   287 
       
   288 	# BLDMAKE WARNING: read-only ABLD.BAT will be overwritten
       
   289 
       
   290 	if ($line =~ /^BLDMAKE WARNING:/)
       
   291 	{
       
   292 		return 1;
       
   293 	}
       
   294 
       
   295 
       
   296 	# \FORM\GROUP\BLD.INF WARNING(S):
       
   297 	# \FORM\GROUP\BLD.INF(28) : Exported source file \form\group\tagma.rtf not found
       
   298 
       
   299 	if ($line =~ /WARNING\(S\)/)
       
   300 	{
       
   301 		return 1;
       
   302 	}
       
   303 
       
   304 	# WARNING: Can't find following headers in User or System Include Paths
       
   305 	# WARNING: Frozen .DEF file \CSTUBSHELL\BMARM\STUBRUNU.DEF not found - project not frozen
       
   306 	# WARNING: Not attempting to create any import libraries.
       
   307 	# WARNING: rls_string STRING_r_ssl_error_ssl_AlertNoRenegotiation; either has incorrect syntax or no value
       
   308 
       
   309 	if ($line =~ /^WARNING: /m)
       
   310 	{
       
   311 		return 1;
       
   312 	}
       
   313 
       
   314 	# \BIOMSG\BITSINC\BioTestUtils.inl(4) : warning C4100: 'iOperation' : unreferenced formal parameter
       
   315 
       
   316 	if ($line =~ /\(\d+\) : warning C/)
       
   317 	{
       
   318 		return 1;
       
   319 	}
       
   320 
       
   321 	# LINK : warning LNK4005: no objects used from library \EPOC32\RELEASE\WINS\UDEB\ESTOR.LIB
       
   322 
       
   323 	if ($line =~ /LINK : warning/)
       
   324 	{
       
   325 		return 1;
       
   326 	}
       
   327 
       
   328 	# ..\\..\\BAFL\\SRC\\Bacline.cpp:68: warning: value computed is not used
       
   329 
       
   330 	if ($line =~ /:\d+: warning:/)
       
   331 	{
       
   332 		return 1;
       
   333 	}
       
   334 
       
   335 	# "..\UCRT\Ecrt0.cpp", line 12: Warning:  #335-D: linkage specification is not allowed
       
   336 	# "s16c.o(.directive)", line 70: Warning: L6331W: s16c.o(.directive)(line 70, col 14) No eligible global symbol matches pattern _fsqrt.
       
   337 
       
   338 	if ($line =~ /"(.*)", line (\d+): (Warning: +(.\d+.*?):.*)$/)
       
   339 	{
       
   340 		return 1;
       
   341 	}
       
   342 		
       
   343 	# /../../kvm/VmEPOC/src/emuNetDebuggerTransport.c
       
   344 	# ### mwccsym2 Usage Warning:
       
   345 	# #   Specified directory 'Z:/epoc32/include/libcnot' not found
       
   346 	# ... t_winscw_udeb_cw_obj_g/serialDebuggerTransport.o
       
   347 	# Linking lib ... winscw_udeb_cw_bin/tkmidp20_kvm.lib 
       
   348 
       
   349 	if ($line =~ /Usage Warning:/)
       
   350 	{
       
   351 		return 1;
       
   352 	}
       
   353 	# mwld.exe: No symbols were exported
       
   354 
       
   355 	if ($line =~ /mwld.exe:/)
       
   356 	{
       
   357 		return 1;
       
   358 	}
       
   359 
       
   360 	# === target == tools\e32tools
       
   361   #	make -r  -k -f "\EPOC32\BUILD\TOOLS\E32TOOLS\GROUP\TOOLS.make" SAVESPACE CFG=REL VERBOSE=-s KEEPGOING=-k
       
   362 	#		nmake -nologo -x - -s -k -f "\EPOC32\BUILD\TOOLS\E32TOOLS\GROUP\ERUNTEST\TOOLS\ERUNTEST.TOOLS" REL CLEANBUILDREL
       
   363 	# Command line warning D4002 : ignoring unknown option '/Op'
       
   364 	
       
   365 	if ($line =~ /^Command line warning/m)
       
   366 	{
       
   367 		return 1;
       
   368 	}
       
   369 		
       
   370 	# MAKEDEF WARNING: 1 export(s) not yet Frozen:
       
   371 
       
   372 	if ($line =~ /^MAKEDEF WARNING:/m)
       
   373 	{
       
   374 		return 1;
       
   375 	}
       
   376 
       
   377 	# Comment from PETRAN which is actually a warning rather than an error
       
   378 	# ERROR: bad relocation:  [00004f60] = 00000f68
       
   379 
       
   380 	if ($line =~ /ERROR: bad relocation:/)
       
   381 	{
       
   382 		return 1;
       
   383 	}
       
   384 
       
   385 	# 1 warning
       
   386 
       
   387 	if ($line =~ /^(\d+) warning/m)
       
   388 	{
       
   389 		return 1;
       
   390 	}
       
   391 
       
   392 	# Windows Event log warning from Sophos Antivirus Scan
       
   393 	if ($line =~ /^EventType:\s+Error\s+Source:\s+SweepNT/)
       
   394 	{
       
   395 		return 1;
       
   396 	}
       
   397 
       
   398         # WARN (for CDB warnings)
       
   399 
       
   400 	if ($line =~ /^WARN\t/)
       
   401 	{
       
   402 		return 1;
       
   403 	}
       
   404 	
       
   405 	#elf2e32 : Warning: W1041: Unsupported Target Type 'PLUGIN3'.
       
   406         #Elf2e32: Warning: New Symbol _Z24ImplementationGroupProxyRi found, export(s) not yet Frozen
       
   407 	if ($line =~ /^\s*elf2e32\s*:\s*Warning\s*:\s*/i)
       
   408 	{
       
   409 		return 1;
       
   410 	}
       
   411 	
       
   412 	#Can't locate FileRead.pm in @INC (@INC contains:.......
       
   413 	if ($line =~ /^Can't locate (.*) in \@INC/ )
       
   414 	{
       
   415 		return 1;
       
   416 	}
       
   417 
       
   418 	# Not already returned so return false
       
   419 	return 0;
       
   420 }
       
   421 
       
   422 # CheckForIgnore
       
   423 #
       
   424 # Inputs
       
   425 # $iLine - Line of text to check
       
   426 #
       
   427 # Outputs
       
   428 # Return true if line can be ignored
       
   429 # Return false if line cannot be ignored
       
   430 #
       
   431 # Description
       
   432 # This function matches the input against a known set of Warning Strings which can be ignored
       
   433 sub CheckForIgnore
       
   434 {
       
   435 	my ($line) = @_;
       
   436 	
       
   437 	# "..\\..\\..\\E32\\nkern\\arm\\Ncsched.cia", line 617: Warning: A1495E: Target of branch is a data address
       
   438 	if ($line =~ /"(.*)", line (\d+): Warning: A1495E: Target of branch is a data address/)
       
   439 	{
       
   440 		return 1;
       
   441 	}
       
   442 	
       
   443 	# BLDMAKE WARNING: ARMV7 requires at least RVCT 3.1.674.
       
   444 	# It's not useful to heed this warning, as we're already on control of which platforms we're going to build
       
   445 	if ($line =~ /^BLDMAKE WARNING: ARMV\d requires at least RVCT /)
       
   446 	{
       
   447 		return 1;
       
   448 	}
       
   449 	
       
   450 	# Not already returned so return false
       
   451 	return 0;
       
   452 }
       
   453 
       
   454 
       
   455 
       
   456 
       
   457 # CheckForNotBuilt
       
   458 #
       
   459 # Inputs
       
   460 # $iLine - Line of text to check
       
   461 #
       
   462 # Outputs
       
   463 # Return true for presence of Warning in the line
       
   464 # Return false for no Warning found
       
   465 # $iNotBuilt - Name of thing not built
       
   466 #
       
   467 # Description
       
   468 # This function matches the input against a known set of Strings for things not built
       
   469 sub CheckForNotBuilt
       
   470 {
       
   471   my ($line) = @_;
       
   472   
       
   473   # MISSING COMPONENT alp2csh: can't find tools\sdk_eng\alp2csh\group\bld.inf
       
   474 
       
   475 	if ($line =~ /^MISSING COMPONENT (.*):.* find (.*)$/m)
       
   476 	{
       
   477 		return (1,$2);
       
   478 	}
       
   479 
       
   480 	# MISSING: \EPOC32\RELEASE\WINS\UDEB\OPLR.DLL
       
   481 
       
   482 	if ($line =~ /^MISSING: (\S+)/m)
       
   483 	{
       
   484 		return (1,$1);
       
   485 	}
       
   486 	
       
   487 	# Not already returned so return false
       
   488 	return 0;
       
   489 }
       
   490 
       
   491 # CheckForMissing
       
   492 #
       
   493 # Inputs
       
   494 # $iLine - Line of text to check
       
   495 #
       
   496 # Outputs
       
   497 # Return true for presence of Warning in the line
       
   498 # Return false for no Warning found
       
   499 # $iNotBuilt - Name of thing not built
       
   500 #
       
   501 # Description
       
   502 # This function matches the input against a known set of Strings for things not built
       
   503 sub CheckForMissing
       
   504 {
       
   505   my ($line) = @_;
       
   506   
       
   507 	if ($line =~ /fatal error U1073: .* make '(.*)'/)
       
   508 	{
       
   509 		return (1,$1);
       
   510 	}
       
   511 	
       
   512 	# Not already returned so return false
       
   513 	return 0;
       
   514 }
       
   515 
       
   516 # CheckForRealTimeErrors
       
   517 #
       
   518 # Inputs
       
   519 # $iLine - Line of text to check
       
   520 #
       
   521 # Outputs
       
   522 # Return true for presence of a Real Time Error in the line
       
   523 #        plus string detailing error (if available)
       
   524 # Return false for no Real Time Error found
       
   525 #
       
   526 # Description
       
   527 # This function matches the input against a known set of Error Strings
       
   528 # At the time of adding this subroutine, such error strings were only reported by P4GetSource.pm
       
   529 # Scripts calling this subroutine should note that, for example, lines beginning with "ERROR:" will
       
   530 # also be considered to be errors by subroutine CheckForErrors, above. 
       
   531 sub CheckForRealTimeErrors
       
   532 {
       
   533   my ($line) = @_;
       
   534 
       
   535 	if ($line =~ /^Error:\s*RealTimeBuild:\s*(.*)/mi)
       
   536 	{
       
   537 		return (1,$1);  # Return True plus any other text on line
       
   538 	}
       
   539 	
       
   540 	# Not already returned so return False
       
   541 	return 0;
       
   542 }
       
   543 
       
   544 
       
   545 
       
   546 # CheckForMigrationNotes
       
   547 #
       
   548 # Inputs
       
   549 # $iLine - Line of text to check
       
   550 #
       
   551 # Outputs
       
   552 # Return true for presence of Migration_Note in the line
       
   553 # Return false for no Migration_Note found
       
   554 #
       
   555 # Description
       
   556 # This function matches the input against a known set of Migration_Note Strings
       
   557 
       
   558 my %migration_list=(
       
   559 # Warnings to be fixed over longer period as they may indicate errors in code
       
   560 
       
   561  "#61-D" => "integer operation result is out of range",
       
   562  "#68-D" => "integer conversion resulted in a change of sign",
       
   563  "#108-D" => "signed bit field of length 1",
       
   564  "#128-D" => "loop is not reachable from preceding code",
       
   565  "#191-D" => "type qualifier is meaningless on cast type",
       
   566  "A1495E" => "Target of branch is a data address",
       
   567  "A1608W" => "MOV pc,<rn> instruction used, but BX <rn> is preferred",
       
   568  "A1745W" => "This register combination is DEPRECATED",
       
   569  "A1764W" => "SWP instructions are deprecated in architecture ARMv6 and above",
       
   570  "A1786W" => "This instruction using SP is deprecated in ARMv7",
       
   571  "A1788W" => "Explicit use of PC in this instruction is deprecated",
       
   572  "#1446-D" => "non-POD class type passed through ellipsis",
       
   573  "#1559-D" => "dllexport/dllimport conflict with \"foo\"; dllexport assumed",
       
   574  "#1566-D" => "dllexport/dllimport conflict with \"foo\"; dllimport/dllexport dropped"
       
   575   );
       
   576 
       
   577 
       
   578 sub CheckForMigrationNotes
       
   579 {
       
   580   my ($line) = @_;
       
   581 
       
   582 if ($line =~ /".*", line \d+: Warning: +(.\d+.*?):/)
       
   583     {
       
   584     # Some compiler warnings may indicate errors that should be fixed when a
       
   585     # migration to a new compiler has occured. These may have been long standing
       
   586     # issues in the OS and whilst not currently considered to be violations of the
       
   587     #"zero warnings" policy should be fixed in any new development work.
       
   588     # It is the responsibility of the Master Codeline Forum to manage this list.
       
   589     return defined($migration_list{$1});
       
   590     }
       
   591 
       
   592 
       
   593 if ($line =~ m/^MIGRATION_NOTE:\s*(.*)/i)
       
   594   {
       
   595   return (1,$1);
       
   596   }
       
   597 
       
   598 if ($line =~ m/^WARNING: Working Directory: "(.*)\\sf\\app\\techview\\buildverification\\smoketest\\(.*)"	Executing: "abld.bat (.*)":/i)
       
   599   {
       
   600   return 1;
       
   601   }
       
   602 
       
   603 return 0;
       
   604 }
       
   605 
       
   606 
       
   607 # CheckForAdvisoryNotes
       
   608 #
       
   609 # Inputs
       
   610 # $iLine - Line of text to check
       
   611 #
       
   612 # Outputs
       
   613 # Return true if the input matches against a known set of Advisory_Note strings defined in the advisory_list
       
   614 # Return false for no Advisory_Note found
       
   615 #
       
   616 # Description
       
   617 # This function matches the input against a known set of Advisory_Note Strings defined
       
   618 # in the array CheckList
       
   619 my %Advisory_checklist=(
       
   620 # Warnings categorized as advisory notes
       
   621 'M:/clean-src/os/unref/orphan/comtv\\toolkit ' => 0,
       
   622 'M:/clean-src/os/unref/orphan/comtv\\commsui ' => 0,
       
   623 'M:/clean-src/os/unref/orphan/comtv\\apps ' => 0,
       
   624 'M:/clean-src/os/unref/orphan/comtt/edg\\group ' => 0,
       
   625 'M:/clean-src/os/unref/orphan/comtt\\edg ' => 0,
       
   626 'M:/clean-src/os/unref/orphan/comgen/openenv/oetools/docs\\test ' => 0,
       
   627 'M:/clean-src/os/unref/orphan/comgen\\networking ' => 0,
       
   628 'M:/clean-src/os/unref/orphan/cedprd/tools\\baseline ' => 0,
       
   629 'M:/clean-src/os/unref/orphan/cedprd\\tools ' => 0,
       
   630 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/XSRproduct\\pkgdef ' => 0,
       
   631 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/XSRproduct\\Messages ' => 0,
       
   632 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/XSRproduct\\group ' => 0,
       
   633 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/XSRproduct/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   634 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/Wi-Fiproduct\\pkgdef ' => 0,
       
   635 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/Wi-Fiproduct\\Messages ' => 0,
       
   636 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/Wi-Fiproduct\\group ' => 0,
       
   637 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/Wi-Fiproduct/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   638 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard4cproduct\\pkgdef ' => 0,
       
   639 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard4cproduct\\Messages ' => 0,
       
   640 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard4cproduct\\group ' => 0,
       
   641 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard4cproduct/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   642 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard3cproduct\\pkgdef ' => 0,
       
   643 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard3cproduct\\Messages ' => 0,
       
   644 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard3cproduct\\group ' => 0,
       
   645 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/sdcard3cproduct/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   646 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/midp2.0product\\pkgdef ' => 0,
       
   647 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/midp2.0product\\Messages ' => 0,
       
   648 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/midp2.0product\\group ' => 0,
       
   649 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/midp2.0product/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   650 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/javaproduct\\pkgdef ' => 0,
       
   651 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/javaproduct\\Messages ' => 0,
       
   652 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/javaproduct\\group ' => 0,
       
   653 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/javaproduct/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   654 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchiproduct\\pkgdef ' => 0,
       
   655 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchiproduct\\Messages ' => 0,
       
   656 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchiproduct\\group ' => 0,
       
   657 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchiproduct/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   658 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchi1.1product\\pkgdef ' => 0,
       
   659 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchi1.1product\\Messages ' => 0,
       
   660 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchi1.1product\\group ' => 0,
       
   661 'M:/clean-src/os/unref/orphan/cedprd/SuppKit/cldchi1.1product/com/symbian/sdk/productinstaller\\graphics ' => 0,
       
   662 'M:/clean-src/os/unref/orphan/cedprd/DevKit\\SourceDefinitions ' => 0,
       
   663 'M:/clean-src/os/unref/orphan/cedprd/DevKit\\PackageDefinitions ' => 0,
       
   664 'M:/clean-src/os/unref/orphan/cedprd\\DevKit ' => 0,
       
   665 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT09_Test\\src ' => 0,
       
   666 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT09_Test\\results ' => 0,
       
   667 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT09_Test\\group ' => 0,
       
   668 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT08_Prototype\\src ' => 0,
       
   669 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT08_Prototype\\results ' => 0,
       
   670 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT08_Prototype\\group ' => 0,
       
   671 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT07_Deprecated\\src ' => 0,
       
   672 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT07_Deprecated\\results ' => 0,
       
   673 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT07_Deprecated\\group ' => 0,
       
   674 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT06_Released\\src ' => 0,
       
   675 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT06_Released\\results ' => 0,
       
   676 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT06_Released\\group ' => 0,
       
   677 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT05_PubAll\\src ' => 0,
       
   678 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT05_PubAll\\results ' => 0,
       
   679 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT05_PubAll\\group ' => 0,
       
   680 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT04_PubPartner\\src ' => 0,
       
   681 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT04_PubPartner\\results ' => 0,
       
   682 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT04_PubPartner\\group ' => 0,
       
   683 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT03_IntComp\\src ' => 0,
       
   684 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT03_IntComp\\results ' => 0,
       
   685 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT03_IntComp\\group ' => 0,
       
   686 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT02_IntTech\\src ' => 0,
       
   687 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT02_IntTech\\results ' => 0,
       
   688 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT02_IntTech\\group ' => 0,
       
   689 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT01_NoAPIs\\src ' => 0,
       
   690 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT01_NoAPIs\\results ' => 0,
       
   691 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/UnitTests/PCT01_NoAPIs\\group ' => 0,
       
   692 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/IntegrationTests/PCT10_Integration\\src ' => 0,
       
   693 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/IntegrationTests/PCT10_Integration\\results ' => 0,
       
   694 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/IntegrationTests/PCT10_Integration\\group ' => 0,
       
   695 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T25_All_Test\\src ' => 0,
       
   696 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T25_All_Test\\group ' => 0,
       
   697 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T24_All_Prototype\\src ' => 0,
       
   698 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T24_All_Prototype\\group ' => 0,
       
   699 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T23_All_Deprecated\\src ' => 0,
       
   700 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T23_All_Deprecated\\group ' => 0,
       
   701 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T22_All_Released\\src ' => 0,
       
   702 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T22_All_Released\\group ' => 0,
       
   703 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T21_PubAll_Test\\src ' => 0,
       
   704 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T21_PubAll_Test\\group ' => 0,
       
   705 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T20_PubAll_Proto\\src ' => 0,
       
   706 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T20_PubAll_Proto\\group ' => 0,
       
   707 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T19_PubAll_Dep\\src ' => 0,
       
   708 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T19_PubAll_Dep\\group ' => 0,
       
   709 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T18_PubAll_Rel\\src ' => 0,
       
   710 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T18_PubAll_Rel\\group ' => 0,
       
   711 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T17_PubAll_All\\src ' => 0,
       
   712 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T17_PubAll_All\\group ' => 0,
       
   713 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T16_PubPartner_Test\\src ' => 0,
       
   714 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T16_PubPartner_Test\\group ' => 0,
       
   715 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T15_PubPartner_Proto\\src ' => 0,
       
   716 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T15_PubPartner_Proto\\group ' => 0,
       
   717 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T14_PubPartner_Dep\\src ' => 0,
       
   718 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T14_PubPartner_Dep\\group ' => 0,
       
   719 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T13_PubPartner_Rel\\src ' => 0,
       
   720 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T13_PubPartner_Rel\\group ' => 0,
       
   721 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T12_PubPartner_All\\src ' => 0,
       
   722 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T12_PubPartner_All\\group ' => 0,
       
   723 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T11_IntComp_Test\\src ' => 0,
       
   724 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T11_IntComp_Test\\group ' => 0,
       
   725 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T10_IntComp_Proto\\src ' => 0,
       
   726 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T10_IntComp_Proto\\group ' => 0,
       
   727 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T09_IntComp_Dep\\src ' => 0,
       
   728 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T09_IntComp_Dep\\group ' => 0,
       
   729 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T08_IntComp_Rel\\src ' => 0,
       
   730 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T08_IntComp_Rel\\group ' => 0,
       
   731 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T07_IntComp_All\\src ' => 0,
       
   732 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T07_IntComp_All\\group ' => 0,
       
   733 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T06_IntTech_Test\\src ' => 0,
       
   734 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T06_IntTech_Test\\group ' => 0,
       
   735 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T05_IntTech_Proto\\src ' => 0,
       
   736 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T05_IntTech_Proto\\group ' => 0,
       
   737 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T04_IntTech_Dep\\src ' => 0,
       
   738 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T04_IntTech_Dep\\group ' => 0,
       
   739 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T03_IntTech_Rel\\src ' => 0,
       
   740 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T03_IntTech_Rel\\group ' => 0,
       
   741 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T02_IntTech_All\\src ' => 0,
       
   742 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T02_IntTech_All\\group ' => 0,
       
   743 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T01_Unclassified\\src ' => 0,
       
   744 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/TestData/Components/T01_Unclassified\\group ' => 0,
       
   745 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker\\TestData ' => 0,
       
   746 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker/src\\ProgramCheckerBase ' => 0,
       
   747 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker\\src ' => 0,
       
   748 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker\\group ' => 0,
       
   749 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker\\docs ' => 0,
       
   750 'M:/clean-src/os/buildtools/srcanamdw_os/programchecker\\bin ' => 0,
       
   751 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT_TestLib\\src ' => 0,
       
   752 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT_TestLib\\group ' => 0,
       
   753 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.3\\src ' => 0,
       
   754 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.3\\group ' => 0,
       
   755 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.3\\data ' => 0,
       
   756 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.2\\src ' => 0,
       
   757 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.2\\group ' => 0,
       
   758 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.2\\data ' => 0,
       
   759 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.1\\src ' => 0,
       
   760 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.1\\group ' => 0,
       
   761 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC4.1\\data ' => 0,
       
   762 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC3\\src ' => 0,
       
   763 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC3\\group ' => 0,
       
   764 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC3\\data ' => 0,
       
   765 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC2.2\\src ' => 0,
       
   766 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC2.2\\group ' => 0,
       
   767 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC2.2\\data ' => 0,
       
   768 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT08.TC2.1\\data ' => 0,
       
   769 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT06.TC2\\src ' => 0,
       
   770 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT06.TC2\\group ' => 0,
       
   771 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC4\\src ' => 0,
       
   772 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC4\\group ' => 0,
       
   773 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC4\\data ' => 0,
       
   774 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC3\\src ' => 0,
       
   775 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC3\\group ' => 0,
       
   776 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC3\\data ' => 0,
       
   777 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC2\\src ' => 0,
       
   778 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC2\\group ' => 0,
       
   779 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC2\\data ' => 0,
       
   780 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC1\\src ' => 0,
       
   781 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC1\\group ' => 0,
       
   782 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT05.TC1\\data ' => 0,
       
   783 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC5.2\\src ' => 0,
       
   784 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC5.2\\group ' => 0,
       
   785 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC5.1\\src ' => 0,
       
   786 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC5.1\\group ' => 0,
       
   787 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC5\\data ' => 0,
       
   788 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC4.2\\src ' => 0,
       
   789 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC4.2\\group ' => 0,
       
   790 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC4.2\\data ' => 0,
       
   791 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC4.1\\data ' => 0,
       
   792 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC3.2\\src ' => 0,
       
   793 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC3.2\\group ' => 0,
       
   794 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC3.2\\data ' => 0,
       
   795 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC3.1\\data ' => 0,
       
   796 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC2\\src ' => 0,
       
   797 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC2\\group ' => 0,
       
   798 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC2\\data ' => 0,
       
   799 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT04.TC1\\data ' => 0,
       
   800 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT03.TC3\\src ' => 0,
       
   801 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT03.TC3\\group ' => 0,
       
   802 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT03.TC3\\data ' => 0,
       
   803 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT03.TC2\\src ' => 0,
       
   804 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT03.TC2\\group ' => 0,
       
   805 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT03.TC2\\data ' => 0,
       
   806 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT03.TC1\\data ' => 0,
       
   807 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC3\\src ' => 0,
       
   808 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC3\\group ' => 0,
       
   809 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC3\\data ' => 0,
       
   810 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC2\\src ' => 0,
       
   811 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC2\\group ' => 0,
       
   812 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC2\\data ' => 0,
       
   813 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC1.3\\data ' => 0,
       
   814 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT02.TC1.2\\data ' => 0,
       
   815 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.3\\src ' => 0,
       
   816 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.3\\group ' => 0,
       
   817 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.3\\data ' => 0,
       
   818 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.2\\src ' => 0,
       
   819 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.2\\group ' => 0,
       
   820 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.2\\data ' => 0,
       
   821 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.1\\src ' => 0,
       
   822 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.1\\group ' => 0,
       
   823 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC5.1\\data ' => 0,
       
   824 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC3.2\\src ' => 0,
       
   825 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC3.2\\group ' => 0,
       
   826 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC3.2\\data ' => 0,
       
   827 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC3.1\\src ' => 0,
       
   828 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC3.1\\group ' => 0,
       
   829 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC3.1\\data ' => 0,
       
   830 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC2.3\\src ' => 0,
       
   831 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC2.3\\group ' => 0,
       
   832 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/tests/TestData/RMT01.TC2.3\\data ' => 0,
       
   833 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool\\tests ' => 0,
       
   834 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/src\\XML ' => 0,
       
   835 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool/src\\GCCBinUtils ' => 0,
       
   836 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool\\src ' => 0,
       
   837 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool\\sample ' => 0,
       
   838 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool\\group ' => 0,
       
   839 'M:/clean-src/os/buildtools/srcanamdw_os/migrationtool\\docs ' => 0,
       
   840 'M:/clean-src/os/buildtools/binanamdw_os\\depcheck ' => 0,
       
   841 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests/T_ImportsAnalyser\\TestData ' => 0,
       
   842 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests\\T_ImportsAnalyser ' => 0,
       
   843 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests/T_CapSearch\\TestData ' => 0,
       
   844 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests\\T_CapSearch ' => 0,
       
   845 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests/T_CapImportCheck\\TestData ' => 0,
       
   846 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests\\T_CapImportCheck ' => 0,
       
   847 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests/T_CapCheck\\TestData ' => 0,
       
   848 'M:/clean-src/os/buildtools/binanamdw_os/captools/tests\\T_CapCheck ' => 0,
       
   849 'M:/clean-src/os/buildtools/binanamdw_os/captools\\src ' => 0,
       
   850 'M:/clean-src/os/buildtools/binanamdw_os/captools/sample\\ImportsAnalyser ' => 0,
       
   851 'M:/clean-src/os/buildtools/binanamdw_os/captools/sample\\CapSearch ' => 0,
       
   852 'M:/clean-src/os/buildtools/binanamdw_os/captools/sample\\CapImportCheck ' => 0,
       
   853 'M:/clean-src/os/buildtools/binanamdw_os/captools/sample/CapCheck\\Sample_XML_ECL ' => 0,
       
   854 'M:/clean-src/os/buildtools/binanamdw_os/captools/sample\\CapCheck ' => 0,
       
   855 'M:/clean-src/os/buildtools/binanamdw_os/captools\\group ' => 0,
       
   856 'M:/clean-src/os/buildtools/binanamdw_os/captools/docs\\Design ' => 0,
       
   857 'M:/clean-src/os/buildtools/binanamdw_os/captools\\data ' => 0,
       
   858 
       
   859 );
       
   860 
       
   861 sub CheckForAdvisoryNotes
       
   862 {
       
   863     my ($line) = @_;
       
   864     
       
   865     # "s16c.o(.directive)", line 70: Warning: L6331W: s16c.o(.directive)(line 70, col 14) No eligible global symbol matches pattern _fsqrt.
       
   866     if ($line =~ /".*", line \d+: Warning: +(.\d+.*?):/)
       
   867     {
       
   868 	    # Some compiler warnings about about style rather than substance. The RVCT
       
   869 	    # compiler warnings are easily identified, and the Advisory_checklist above
       
   870 	    # classifies the warnings present in the Symbian OS source code which are
       
   871 	    # not currently considered to be violations of the "zero warnings" policy.
       
   872 	    # It is the responsibility of the Master Codeline Forum to manage this list,
       
   873 	    # as part of the "zero warnings" policy.
       
   874 		return defined($Advisory_checklist{$1});
       
   875     } 
       
   876 	
       
   877 	# ignore undesired codes in //EPOC/
       
   878 	if ($line =~ /ADVISORY NOTE: Missing distribution.policy.s60 file in (.*)/)
       
   879     {
       
   880 		if (exists $Advisory_checklist{$1}){		
       
   881 			return $Advisory_checklist{$1};
       
   882 			}
       
   883 		else{
       
   884 			return 1;
       
   885 			}
       
   886     } 
       
   887 	
       
   888     # Downgrade Kits errors and warnings
       
   889     if (($line =~ /^WARNING: .+ matched against rule/i) ||
       
   890         ($line =~ /^WARNING: .+ matched tests/i))
       
   891     {
       
   892 	    # Kits generation is not critical in MCL products and it 
       
   893 	    # should not be BRAG affecting.
       
   894 		return 1;
       
   895     } 
       
   896 
       
   897 	if ($line =~ /returning cat X/)
       
   898 	{
       
   899 		# Look for the phrase returning cat X. This is generated due to distribution policy file being remvoed
       
   900 		
       
   901 		return 1;
       
   902 	}
       
   903 
       
   904 	if ($line =~ /ERROR.*Unable to perform a comparison using empty databases/i) 
       
   905 	{
       
   906 		# Look for the phrase BC Comparision. Generates when base comparision is failed due to the unavailability of the base build.
       
   907 
       
   908 		return 1;
       
   909 	}
       
   910 
       
   911 	if ($line =~ /ERROR: Fatal exception \"execSpecialInstructions() failed with \d{1,} lines on stderr\"/i) 
       
   912 	{
       
   913 		# Look for the Run variability warnings. Generates while processing the variabilities.
       
   914 
       
   915 		return 1;
       
   916 	}
       
   917 	
       
   918 	if ($line =~ /WARN.*API Classifier load failed/i) 
       
   919 	{
       
   920 		# Look for the classifier load warnings. Generates when unable to load the API's.
       
   921 
       
   922 		return 1;
       
   923 	}
       
   924 
       
   925 	if ($line =~ /WARNING: Envinfo overall status was not found/i) 
       
   926 	{
       
   927 		# Look for the classifier load warnings. Generates when unable to load the API's.
       
   928 
       
   929 		return 1;
       
   930 	}
       
   931 
       
   932 	if ($line =~ /warning:\s*no newline at end of file/i && $line !~ /\.((rls)|(rsc)|(rss)|(rh)|(ra)|(hrh)|(rsg)|(loc)):\d{1,}:\d{1,}:\s*/i) 
       
   933 	{
       
   934 		# no newline at end of file warnings are to be captured as it can create some issues with different compilers
       
   935 		# currently this will not work as remarks section is capturing this, which should not. 
       
   936 		# Resource files should not be considered.
       
   937 
       
   938 		return 1;
       
   939 	}
       
   940 	
       
   941 	if ($line =~ /^ADVISORY NOTE:/) 
       
   942 	{
       
   943 		# For use by any advisory notes.
       
   944 
       
   945 		return 1;
       
   946 	}
       
   947 	
       
   948 		if ($line =~ /^ERROR: Fatal exception \"ProcessVariability: Unable to copy .* \[Errno 13\] Permission denied: .*/) 
       
   949 	{
       
   950 		# For buildrefdoc permission denied intermittent error
       
   951 
       
   952 		return 1;
       
   953 	}
       
   954 
       
   955 # This is used convert what would be picked up as warning in to a advisory note, as advisory notes are check for first
       
   956 	# It also returns an additional value of the number of lines to slurp up to get the so the multi line
       
   957 	# warning (advisorynote) is only seen once.
       
   958 
       
   959 
       
   960 
       
   961 # This is used convert what would be picked up as error in to a advisory note, as advisory notes are check for first
       
   962 	# It also returns an additional value of the number of lines to slurp up to get the so the multi line
       
   963 	# errors (advisorynote) is only seen once.
       
   964         
       
   965 }
       
   966 1;