(path string, addLang func(string))
| 322 | var cachedFileCount = -1 |
| 323 | |
| 324 | func applyMakefileHeuristics(path string, addLang func(string)) { |
| 325 | f, err := os.Open(path) |
| 326 | if err != nil { |
| 327 | return |
| 328 | } |
| 329 | defer f.Close() |
| 330 | |
| 331 | buf, err := io.ReadAll(io.LimitReader(f, 128*1024)) |
| 332 | if err != nil { |
| 333 | return |
| 334 | } |
| 335 | content := strings.ToLower(string(buf)) |
| 336 | |
| 337 | if strings.Contains(content, "g++") || strings.Contains(content, "clang++") || strings.Contains(content, ".cpp") || strings.Contains(content, ".cc") { |
| 338 | addLang("cpp") |
| 339 | } |
| 340 | // Tighten C detection: exclude clang++ and .cpp/.cc false positives |
| 341 | if strings.Contains(content, "gcc") || |
| 342 | (strings.Contains(content, "clang") && !strings.Contains(content, "clang++")) { |
| 343 | addLang("c") |
| 344 | } |
| 345 | } |
| 346 | |
| 347 | // countSourceFiles does a quick count of source files in the project. |
| 348 | // Uses cached result from detectLanguagesFromFiles if available. |
no test coverage detected