From fb9b92a5bfa60c01407315c8173a2c5a1b15a68d Mon Sep 17 00:00:00 2001 From: Tigah <88289044+TBX3D@users.noreply.github.com> Date: Mon, 22 Jun 2026 22:00:26 -0700 Subject: [PATCH] fix(frameworks): make CodeIgniter detection specific (#156) --- internal/scan/frameworks/detect_test.go | 46 +++++++++++++++++++ internal/scan/frameworks/detectors/backend.go | 1 - 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/internal/scan/frameworks/detect_test.go b/internal/scan/frameworks/detect_test.go index d12d4e1..62b1414 100644 --- a/internal/scan/frameworks/detect_test.go +++ b/internal/scan/frameworks/detect_test.go @@ -1090,3 +1090,49 @@ func TestDetectFramework_SpringBootFalsePositive(t *testing.T) { t.Errorf("expected no Spring Boot match for prose mentioning it, got %.2f confidence", result.Confidence) } } + +func TestDetectFramework_CodeIgniter(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Set-Cookie", "ci_session=a1b2c3d4e5; path=/; HttpOnly") + w.WriteHeader(http.StatusOK) + w.Write([]byte(`
Laravel and codeigniter both ship a router and an ORM.
+ codeigniter.com +composer create-project codeigniter4/appstarter+ + + `)) + })) + defer server.Close() + + result, err := frameworks.DetectFramework(server.URL, 5*time.Second, "") + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if result != nil && result.Name == "CodeIgniter" { + t.Errorf("expected no CodeIgniter match for prose mentioning it, got %.2f confidence", result.Confidence) + } +} diff --git a/internal/scan/frameworks/detectors/backend.go b/internal/scan/frameworks/detectors/backend.go index b5831d3..7e9b45e 100644 --- a/internal/scan/frameworks/detectors/backend.go +++ b/internal/scan/frameworks/detectors/backend.go @@ -468,7 +468,6 @@ func (d *codeigniterDetector) Name() string { return "CodeIgniter" } func (d *codeigniterDetector) Signatures() []fw.Signature { return []fw.Signature{ - {Pattern: "codeigniter", Weight: 0.4}, {Pattern: "ci_session", Weight: 0.4, HeaderOnly: true}, } }