@@ -24,6 +24,8 @@ internal class InstrumentationHelper : IInstrumentationHelper
2424 private readonly IFileSystem _fileSystem ;
2525 private readonly ISourceRootTranslator _sourceRootTranslator ;
2626 private ILogger _logger ;
27+ private static readonly RegexOptions s_regexOptions =
28+ RegexOptions . Multiline | RegexOptions . Compiled | RegexOptions . IgnoreCase ;
2729
2830 public InstrumentationHelper ( IProcessExitHandler processExitHandler , IRetryHelper retryHelper , IFileSystem fileSystem , ILogger logger , ISourceRootTranslator sourceRootTranslator )
2931 {
@@ -331,7 +333,7 @@ public bool IsValidFilterExpression(string filter)
331333 if ( filter . EndsWith ( "]" ) )
332334 return false ;
333335
334- if ( new Regex ( @"[^\w*]" ) . IsMatch ( filter . Replace ( "." , "" ) . Replace ( "?" , "" ) . Replace ( "[" , "" ) . Replace ( "]" , "" ) ) )
336+ if ( new Regex ( @"[^\w*]" , s_regexOptions , TimeSpan . FromSeconds ( 10 ) ) . IsMatch ( filter . Replace ( "." , "" ) . Replace ( "?" , "" ) . Replace ( "[" , "" ) . Replace ( "]" , "" ) ) )
335337 return false ;
336338
337339 return true ;
@@ -358,7 +360,7 @@ public bool IsModuleExcluded(string module, string[] excludeFilters)
358360#pragma warning restore IDE0057 // Use range operator
359361 modulePattern = WildcardToRegex ( modulePattern ) ;
360362
361- var regex = new Regex ( modulePattern ) ;
363+ var regex = new Regex ( modulePattern , s_regexOptions , TimeSpan . FromSeconds ( 10 ) ) ;
362364
363365 if ( regex . IsMatch ( module ) )
364366 return true ;
@@ -387,7 +389,7 @@ public bool IsModuleIncluded(string module, string[] includeFilters)
387389
388390 modulePattern = WildcardToRegex ( modulePattern ) ;
389391
390- var regex = new Regex ( modulePattern ) ;
392+ var regex = new Regex ( modulePattern , s_regexOptions , TimeSpan . FromSeconds ( 10 ) ) ;
391393
392394 if ( regex . IsMatch ( module ) )
393395 return true ;
@@ -421,7 +423,7 @@ public bool IsTypeIncluded(string module, string type, string[] includeFilters)
421423 }
422424
423425 public bool IsLocalMethod ( string method )
424- => new Regex ( WildcardToRegex ( "<*>*__*|*" ) ) . IsMatch ( method ) ;
426+ => new Regex ( WildcardToRegex ( "<*>*__*|*" ) , s_regexOptions , TimeSpan . FromSeconds ( 10 ) ) . IsMatch ( method ) ;
425427
426428 public void SetLogger ( ILogger logger )
427429 {
@@ -443,7 +445,7 @@ private static bool IsTypeFilterMatch(string module, string type, string[] filte
443445 typePattern = WildcardToRegex ( typePattern ) ;
444446 modulePattern = WildcardToRegex ( modulePattern ) ;
445447
446- if ( new Regex ( typePattern ) . IsMatch ( type ) && new Regex ( modulePattern ) . IsMatch ( module ) )
448+ if ( new Regex ( typePattern , s_regexOptions , TimeSpan . FromSeconds ( 10 ) ) . IsMatch ( type ) && new Regex ( modulePattern , s_regexOptions , TimeSpan . FromSeconds ( 10 ) ) . IsMatch ( module ) )
447449 return true ;
448450 }
449451
0 commit comments