Skip to content

[BUG] Type-check gate not detected when CI uses make targets that wrap type-check tools #496

@aviavraham

Description

@aviavraham

Bug Description

When scanning konflux-ci/may, AgentReady reports "No type-check gate found in CI" despite the repository having full type-checking via golangci-lint and go vet. The issue is that these tools are invoked through Makefile targets rather than appearing directly in the CI workflow YAML files.

The CI workflows use make lint and make test, and the Makefile defines:

  • lint: golangci-lint — runs golangci-lint (which includes type checking)
  • test: depends on vet — runs go vet ./...

The assessor scans only CI YAML file contents for type-check patterns (golangci-lint, go vet, go build, etc.) but does not follow make targets into Makefiles. This is a different root cause than #473, which was about missing Go-specific patterns — here the patterns exist but are behind Makefile indirection.

Related: #473 (fixed Go pattern recognition in CI YAML), #471 (Makefile target resolution for test commands)

To Reproduce

  1. Clone konflux-ci/may
  2. Run AgentReady scan
  3. Review CI Quality Gates results

Expected Behavior

Type-check gate is detected, since golangci-lint and go vet run on every PR through the make lint and make test targets.

Actual Behavior

Report shows "No type-check gate found in CI" — lint and test gates are correctly detected, but the type-check gate is missed because the assessor cannot see through make target indirection.

CI Quality Gates 80/100
- Lint gate detected in CI
- Test gate detected in CI
- No type-check gate found in CI

Environment

  • OS: Fedora 43 (64 bit)
  • Version: latest
  • Python Version: 3.13

Possible Solution

Options to consider:

  1. Scan Makefiles when make <target> is found in CI YAML — resolve the target and check its recipe for type-check patterns
  2. Heuristic: recognize make lint in Go projects as implying type-checking — since golangci-lint (the standard Go lint tool) includes type-check analysis by default
  3. Add make docker-build as a type-check pattern for compiled languages — compilation implies type checking

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions