@@ -48,11 +48,16 @@ func EvalAllWithResults(rulesPath string, modelSourcePath string, xunitReport st
4848 // Create a mutex to safely print testsuites
4949 var printMutex sync.Mutex
5050
51+ maxConcurrency := effectiveLintConcurrency (len (rules ))
52+ sem := make (chan struct {}, maxConcurrency )
53+
5154 // Launch goroutines to evaluate rules in parallel
5255 for i , rule := range rules {
56+ sem <- struct {}{}
5357 wg .Add (1 )
5458 go func (index int , r Rule ) {
5559 defer wg .Done ()
60+ defer func () { <- sem }()
5661
5762 testsuite , err := evalTestsuite (r , modelSourcePath , ignoreNoqa , useCache )
5863 if err != nil {
@@ -156,11 +161,16 @@ func EvalAll(rulesPath string, modelSourcePath string, xunitReport string, jsonF
156161 // Create a mutex to safely print testsuites
157162 var printMutex sync.Mutex
158163
164+ maxConcurrency := effectiveLintConcurrency (len (rules ))
165+ sem := make (chan struct {}, maxConcurrency )
166+
159167 // Launch goroutines to evaluate rules in parallel
160168 for i , rule := range rules {
169+ sem <- struct {}{}
161170 wg .Add (1 )
162171 go func (index int , r Rule ) {
163172 defer wg .Done ()
173+ defer func () { <- sem }()
164174
165175 testsuite , err := evalTestsuite (r , modelSourcePath , ignoreNoqa , useCache )
166176 if err != nil {
0 commit comments