Skip to content

Commit 5b181e1

Browse files
fix: pass.FileContext
Signed-off-by: Sourya Vatsyayan <sourya@deepsource.io>
1 parent 2a1b447 commit 5b181e1

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

analysis/analyzer.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"os"
66
"path/filepath"
7+
"slices"
78

89
sitter "github.com/smacker/go-tree-sitter"
910
)
@@ -70,10 +71,27 @@ func walkTree(node *sitter.Node, f func(*sitter.Node)) {
7071
func Preorder(pass *Pass, fn func(*sitter.Node)) {
7172
// TODO: cache the traversal results to avoid running the traversal for each analyzer
7273
for _, file := range pass.Files {
74+
pass.FileContext = file
7375
walkTree(file.Ast, fn)
7476
}
7577
}
7678

79+
var defaultIgnoreDirs = []string{
80+
"checkers",
81+
"node_modules",
82+
"vendor",
83+
"dist",
84+
"build",
85+
"out",
86+
".git",
87+
".svn",
88+
"venv",
89+
"__pycache__",
90+
".idea",
91+
".vitepress",
92+
".globstar", // may contain test files
93+
}
94+
7795
func RunAnalyzers(path string, analyzers []*Analyzer) ([]*Issue, error) {
7896
raisedIssues := []*Issue{}
7997
langAnalyzerMap := make(map[Language][]*Analyzer)
@@ -88,12 +106,17 @@ func RunAnalyzers(path string, analyzers []*Analyzer) ([]*Issue, error) {
88106
}
89107

90108
if info.IsDir() {
109+
if slices.Contains(defaultIgnoreDirs, info.Name()) {
110+
return filepath.SkipDir
111+
}
91112
return nil
92113
}
93114

94115
file, err := ParseFile(path)
95116
if err != nil {
96-
fmt.Println(err)
117+
if err != ErrUnsupportedLanguage {
118+
fmt.Println(err)
119+
}
97120
return nil
98121
}
99122

analysis/language.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,13 @@ func Parse(filePath string, source []byte, language Language, grammar *sitter.La
229229

230230
// ParseFile parses the file at the given path using the appropriate
231231
// tree-sitter grammar.
232+
var ErrUnsupportedLanguage = fmt.Errorf("unsupported language")
233+
232234
func ParseFile(filePath string) (*ParseResult, error) {
233235
lang := LanguageFromFilePath(filePath)
234236
grammar := lang.Grammar()
235237
if grammar == nil {
236-
return nil, fmt.Errorf("unsupported file type: %s", filePath)
238+
return nil, ErrUnsupportedLanguage
237239
}
238240

239241
source, err := os.ReadFile(filePath)

pkg/cli/cli.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ func (lr *lintResult) GetExitStatus(conf *config.Config) int {
250250
}
251251

252252
var defaultIgnoreDirs = []string{
253+
"checkers",
253254
"node_modules",
254255
"vendor",
255256
"dist",

0 commit comments

Comments
 (0)