Skip to content

Commit 8016b82

Browse files
authored
fix(fs): handle default skip dirs properly (#6628)
Signed-off-by: knqyf263 <knqyf263@gmail.com>
1 parent 7a25dad commit 8016b82

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

pkg/fanal/walker/fs.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ func NewFS() *FS {
2323
// Walk walks the filesystem rooted at root, calling fn for each unfiltered file.
2424
func (w *FS) Walk(root string, opt Option, fn WalkFunc) error {
2525
opt.SkipFiles = w.BuildSkipPaths(root, opt.SkipFiles)
26-
opt.SkipDirs = append(opt.SkipDirs, defaultSkipDirs...)
2726
opt.SkipDirs = w.BuildSkipPaths(root, opt.SkipDirs)
27+
opt.SkipDirs = append(opt.SkipDirs, defaultSkipDirs...)
2828

2929
walkDirFunc := w.WalkDirFunc(root, fn, opt)
3030
walkDirFunc = w.onError(walkDirFunc)
@@ -50,24 +50,24 @@ func (w *FS) WalkDirFunc(root string, fn WalkFunc, opt Option) fs.WalkDirFunc {
5050
}
5151
relPath = filepath.ToSlash(relPath)
5252

53-
info, err := d.Info()
54-
if err != nil {
55-
return xerrors.Errorf("file info error: %w", err)
56-
}
57-
5853
// Skip unnecessary files
5954
switch {
60-
case info.IsDir():
55+
case d.IsDir():
6156
if SkipPath(relPath, opt.SkipDirs) {
6257
return filepath.SkipDir
6358
}
6459
return nil
65-
case !info.Mode().IsRegular():
60+
case !d.Type().IsRegular():
6661
return nil
6762
case SkipPath(relPath, opt.SkipFiles):
6863
return nil
6964
}
7065

66+
info, err := d.Info()
67+
if err != nil {
68+
return xerrors.Errorf("file info error: %w", err)
69+
}
70+
7171
if err = fn(relPath, info, fileOpener(filePath)); err != nil {
7272
return xerrors.Errorf("failed to analyze file: %w", err)
7373
}
@@ -83,7 +83,7 @@ func (w *FS) onError(wrapped fs.WalkDirFunc) fs.WalkDirFunc {
8383
// Unwrap fs.SkipDir error
8484
case errors.Is(err, fs.SkipDir):
8585
return fs.SkipDir
86-
// ignore permission errors
86+
// Ignore permission errors
8787
case os.IsPermission(err):
8888
return nil
8989
case err != nil:

0 commit comments

Comments
 (0)