-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
92 lines (77 loc) · 3.02 KB
/
Copy pathMakefile
File metadata and controls
92 lines (77 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
.PHONY: all build test lint coverage clean install fmt vet check pre-commit fixtures bench-profile
BINARY := codefuse
CMD := ./cmd/codefuse
all: fmt vet test build
build:
go build -o $(BINARY) $(CMD)
test:
go test -race ./...
test-coverage:
go test -race -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
@echo "Coverage:"
@go tool cover -func=coverage.out | tail -1
lint:
@if command -v golangci-lint >/dev/null 2>&1; then \
golangci-lint run --timeout=5m; \
else \
echo "golangci-lint not installed. Run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"; \
exit 1; \
fi
fmt:
go fmt ./...
vet:
go vet ./...
# Quick pre-commit check — fast, catches 90% of issues.
check: fmt vet
go test -short ./...
go build ./cmd/codefuse
# Pre-commit: full check (slower, for CI).
pre-commit: fmt vet
go test -race ./...
go build ./cmd/codefuse
# Regenerate tree-sitter XML test fixtures.
fixtures:
@mkdir -p internal/parser/testdata
@echo 'import sql' > /tmp/_cf_py.py
@echo 'from db.dao import UserDao' >> /tmp/_cf_py.py
@echo '' >> /tmp/_cf_py.py
@echo 'class AuthService:' >> /tmp/_cf_py.py
@echo ' def login(self, token: str):' >> /tmp/_cf_py.py
@echo ' dao = UserDao()' >> /tmp/_cf_py.py
@echo ' result = dao.findById(token)' >> /tmp/_cf_py.py
@echo ' sql.Query("SELECT * FROM users")' >> /tmp/_cf_py.py
@echo ' return result' >> /tmp/_cf_py.py
@echo '' >> /tmp/_cf_py.py
@echo 'def helper(x: int):' >> /tmp/_cf_py.py
@echo ' return x + 1' >> /tmp/_cf_py.py
tree-sitter parse --xml /tmp/_cf_py.py > internal/parser/testdata/fixture_py.xml
@echo 'import com.foo.UserDao;' > /tmp/_cf_java.java
@echo 'import java.sql.Connection;' >> /tmp/_cf_java.java
@echo '' >> /tmp/_cf_java.java
@echo 'class AuthService {' >> /tmp/_cf_java.java
@echo ' String login(String token) {' >> /tmp/_cf_java.java
@echo ' UserDao dao = new UserDao();' >> /tmp/_cf_java.java
@echo ' String result = dao.findById(token);' >> /tmp/_cf_java.java
@echo ' return result;' >> /tmp/_cf_java.java
@echo ' }' >> /tmp/_cf_java.java
@echo '}' >> /tmp/_cf_java.java
tree-sitter parse --xml /tmp/_cf_java.java > internal/parser/testdata/fixture_java.xml
@echo "" | tree-sitter parse --xml -- /dev/stdin > internal/parser/testdata/fixture_empty.xml 2>/dev/null || echo '<sources/>' > internal/parser/testdata/fixture_empty.xml
@echo "Fixtures updated."
# Profile query performance.
bench-profile:
go build -o /tmp/codefuse ./cmd/codefuse
@echo "=== Phase breakdown ==="
@cd /Users/yifanmeng/Project/dubbo 2>/dev/null && for i in 1 2 3; do \
s=$$(perl -MTime::HiRes=time -e 'printf "%d\n", time*1000'); \
/tmp/codefuse grep -c RegistryService . > /dev/null 2>&1; \
e=$$(perl -MTime::HiRes=time -e 'printf "%d\n", time*1000'); \
echo " query $$i: $$((e-s))ms"; \
done || echo " (no dubbo index — run 'make fixtures' first)"
clean:
rm -f $(BINARY) coverage.out coverage.html
install:
go install $(CMD)
bench:
go test -bench=. -benchmem ./...