diff --git a/rules.ini b/rules.ini index 279d8dbd7..ecf3bd52b 100644 --- a/rules.ini +++ b/rules.ini @@ -22,7 +22,7 @@ RIM = \.rim$ ; BioWare RPF = \.rpf$ ; RAGE SCR = \.scr$ ; SCI SIERRA_EXE = (?:^|/)SIERRA\.EXE$ ; SCI -SND_OGG = (?:^|/)snd?_.+\.ogg$ ; GameMaker +SND_OGG = (?:^|/)snd?_\w+\.ogg$ ; GameMaker TAB = \.tab$ ; Apex Engine TGA = \.tga$ ; BioWare TLK = \.tlk$ ; BioWare @@ -92,7 +92,7 @@ FPS_Creator = (?:^|/)Files/languagebank/english/textfiles/fpsc-050\.ini$ Frostbite[] = (?:^|/)(?:Engine\.BuildInfo(?:_Win(?:64|32)_retail(?:_dll)?)?)\.dll$ Frostbite[] = (?:^|/)Runtime_Win64_retail\.BuildSettings$ GameBox = ^Nadeo\.ini$ -GameGuru = ^files/gamecore/projectiletypes/.+\.dds$ +GameGuru = ^files/gamecore/projectiletypes/[\w/]+\.dds$ GameMaker[] = (?:^|/)game\.(?:unx|ios)$ GameMaker[] = (?:^|/)libYoYoGamepad\.dylib$ GameMaker[] = (?:^|/)audiogroup1\.dat$ diff --git a/tests/Test.php b/tests/Test.php index 74a37eee8..ffd15fa7b 100644 --- a/tests/Test.php +++ b/tests/Test.php @@ -45,6 +45,13 @@ { $FailingTests[] = "$Type.$Name: Regex \"$Regex\" contains a capturing group"; } + + $RegexIssue = CheckRegexPerformance( $Regex ); + + if( $RegexIssue !== null ) + { + $FailingTests[] = "$Type.$Name: Regex \"$Regex\" $RegexIssue"; + } } } } @@ -147,6 +154,35 @@ function RegexHasCapturingGroups( string $regex ) : bool ); } +function CheckRegexPerformance( string $regex ) : ?string +{ + // Check for .+ or .*, skip if it's inside a character class like [.+] + if( preg_match( '/(? $Rulesets */ diff --git a/tests/types/Engine.GameGuru.txt b/tests/types/Engine.GameGuru.txt index ce6a2b35d..66070e7a1 100644 --- a/tests/types/Engine.GameGuru.txt +++ b/tests/types/Engine.GameGuru.txt @@ -1,13 +1,13 @@ -files/gamecore/projectiletypes/----.dds -files/gamecore/projectiletypes/---.dds -files/gamecore/projectiletypes/--.dds -files/gamecore/projectiletypes/-.dds -files/gamecore/projectiletypes/1.dds -files/gamecore/projectiletypes/11.dds -files/gamecore/projectiletypes/111.dds -files/gamecore/projectiletypes/1111.dds -files/gamecore/projectiletypes/@.dds -files/gamecore/projectiletypes/@@.dds +files/gamecore/projectiletypes/33.dds +files/gamecore/projectiletypes/333.dds +files/gamecore/projectiletypes/3333.dds +files/gamecore/projectiletypes/5.dds +files/gamecore/projectiletypes/55.dds +files/gamecore/projectiletypes/555.dds +files/gamecore/projectiletypes/5555.dds +files/gamecore/projectiletypes/BB.dds +files/gamecore/projectiletypes/BBB.dds +files/gamecore/projectiletypes/BBBB.dds files/gamecore/projectiletypes/Z.dds files/gamecore/projectiletypes/ZZ.dds files/gamecore/projectiletypes/ZZZ.dds diff --git a/tests/types/Evidence.SND_OGG.txt b/tests/types/Evidence.SND_OGG.txt index be956de9b..0c5522cc6 100644 --- a/tests/types/Evidence.SND_OGG.txt +++ b/tests/types/Evidence.SND_OGG.txt @@ -1,13 +1,13 @@ -/sn_----.ogg -/sn_---.ogg -/sn_--.ogg -/sn_-.ogg -/sn_1.ogg -/sn_11.ogg -/sn_111.ogg -/sn_1111.ogg -/sn_@.ogg -/sn_@@.ogg +/sn_33.ogg +/sn_333.ogg +/sn_3333.ogg +/sn_5.ogg +/sn_55.ogg +/sn_555.ogg +/sn_5555.ogg +/sn_BB.ogg +/sn_BBB.ogg +/sn_BBBB.ogg /sn_Z.ogg /sn_ZZ.ogg /sn_ZZZ.ogg @@ -20,16 +20,16 @@ /sn_aa.ogg /sn_aaa.ogg /sn_aaaa.ogg -/snd_----.ogg -/snd_---.ogg -/snd_--.ogg -/snd_-.ogg -/snd_1.ogg -/snd_11.ogg -/snd_111.ogg -/snd_1111.ogg -/snd_@.ogg -/snd_@@.ogg +/snd_33.ogg +/snd_333.ogg +/snd_3333.ogg +/snd_5.ogg +/snd_55.ogg +/snd_555.ogg +/snd_5555.ogg +/snd_BB.ogg +/snd_BBB.ogg +/snd_BBBB.ogg /snd_Z.ogg /snd_ZZ.ogg /snd_ZZZ.ogg @@ -42,16 +42,16 @@ /snd_aa.ogg /snd_aaa.ogg /snd_aaaa.ogg -sn_----.ogg -sn_---.ogg -sn_--.ogg -sn_-.ogg -sn_1.ogg -sn_11.ogg -sn_111.ogg -sn_1111.ogg -sn_@.ogg -sn_@@.ogg +sn_33.ogg +sn_333.ogg +sn_3333.ogg +sn_5.ogg +sn_55.ogg +sn_555.ogg +sn_5555.ogg +sn_BB.ogg +sn_BBB.ogg +sn_BBBB.ogg sn_Z.ogg sn_ZZ.ogg sn_ZZZ.ogg @@ -64,17 +64,16 @@ sn_a.ogg sn_aa.ogg sn_aaa.ogg sn_aaaa.ogg -sn_whatever.ogg -snd_----.ogg -snd_---.ogg -snd_--.ogg -snd_-.ogg -snd_1.ogg -snd_11.ogg -snd_111.ogg -snd_1111.ogg -snd_@.ogg -snd_@@.ogg +snd_33.ogg +snd_333.ogg +snd_3333.ogg +snd_5.ogg +snd_55.ogg +snd_555.ogg +snd_5555.ogg +snd_BB.ogg +snd_BBB.ogg +snd_BBBB.ogg snd_Z.ogg snd_ZZ.ogg snd_ZZZ.ogg diff --git a/tests/types/_NonMatchingTests.txt b/tests/types/_NonMatchingTests.txt index 6f8e84dfe..84d924919 100644 --- a/tests/types/_NonMatchingTests.txt +++ b/tests/types/_NonMatchingTests.txt @@ -1413,3 +1413,121 @@ odin_dll libodin_so notodin.dll notlibodin.so +AGSteam_dll +AGSteam.dlll +fAGSteam.dll +sub/dir/fAGSteam.dll +AGSteam.dl +gmsched_dll +gmsched.dlll +fgmsched.dll +sub/dir/fgmsched.dll +gmsched.dl +partner_xml_sig +partner.xml.sigg +fpartner.xml.sig +sub/dir/fpartner.xml.sig +partner.xml_sig +partner_xml.sig +yscfg_dat +yscfg.datt +fyscfg.dat +sub/dir/fyscfg.dat +yscfg.da +anybrainSDK_dll +anybrainSDK.dlll +fanybrainSDK.dll +sub/dir/fanybrainSDK.dll +anybrainSDK.dl +Cerebro_dll +Cerebro.dlll +fCerebro.dll +sub/dir/fCerebro.dll +Cerebro.dl +BlackCall_aes +BlackCall64_aes +BlackCall.aess +BlackCall64.aess +fBlackCall.aes +fBlackCall64.aes +sub/dir/fBlackCall.aes +BlackCall.ae +BlackCall65.aes +BlackCat64_sys +BlackCat64.syss +fBlackCat64.sys +sub/dir/fBlackCat64.sys +BlackCat64.sy +BlackCat32.sys +NEP2_dll +NEP2.dlll +fNEP2.dll +sub/dir/fNEP2.dll +NEP2.dl +NEP3.dll +gameguard_des +gameguard.dess +fgameguard.des +sub/dir/fgameguard.des +gameguard.de +gameguard.bes +opus_dll +opus.dlll +fopus.dll +sub/dir/fopus.dll +opus.dl +mus_test_ogg +mus_music_ogg +sub/dir/mus_test_ogg +snd_test_ogg +sn_test_ogg +sub/dir/snd_test_ogg +shared/shader_gar +shared_shader.gar +fshared/shader.gar +fmetadata.dat +sub/dir/fmetadata.dat +data_win +fdata.winn +options_ini +foptions.inii +pixi_js +fpixi.js +pixi.jss +Irrlicht_dll +Irrlicht.dlll +fIrrlicht.dll +sakanagl_dll +sakanagl.dlll +fsakanagl.dll +FalcoEngine_dll +FalcoEngine.dlll +fFalcoEngine.dll +wme_steam_dll +wme_steam.dlll +fwme_steam.dll +NeacSafe64_sys +NeacSafe64.syss +fNeacSafe64.sys +NeacSafe64_ex_sys +notFredaikisAntiCheat +FredaikisAntiCheat.dll +fFredaikisAntiCheat/ +PnkBstrA_exe +PnkBstrA.exee +fPnkBstrA.exe +pbsv_dll +pbsv.dlll +fpbsv.dll +fdata.xp3f +krflash_dll +krflash.dlll +TrueAudioNext_dll +TrueAudioNext.dlll +fTrueAudioNext.dll +iZotope_dll +iZotope.dlll +fiZotope.dll +ortp_dll +ortp.dlll +fortp.dll