@@ -33,6 +33,16 @@ def __init__(self, root_dir, file_types=None, exclude_dirs=None, use_cache_write
3333 # Always exclude .codestate (cache folder)
3434 self .exclude_dirs = set (exclude_dirs or ['.git' , 'venv' , 'node_modules' ])
3535 self .exclude_dirs .add ('.codestate' )
36+ # Default code-related extensions (when file_types is None)
37+ self .default_code_exts = set ([
38+ # Core
39+ '.py' , '.js' , '.ts' , '.jsx' , '.tsx' , '.mjs' , '.cjs' ,
40+ '.java' , '.c' , '.h' , '.cpp' , '.hpp' , '.cc' , '.cs' , '.go' , '.rb' , '.php' , '.rs' , '.kt' , '.swift' ,
41+ '.m' , '.mm' , '.scala' , '.sh' , '.bash' , '.zsh' , '.ps1' , '.psm1' , '.pl' , '.pm' , '.r' , '.jl' , '.lua' ,
42+ '.ex' , '.exs' , '.hs' , '.erl' , '.clj' , '.groovy' , '.dart' , '.sql' ,
43+ # Web/template
44+ '.html' , '.css' , '.scss' , '.sass' , '.less' , '.vue' , '.svelte' , '.handlebars' , '.hbs' , '.ejs' , '.jinja' , '.jinja2' , '.njk'
45+ ])
3646 self .stats = defaultdict (lambda : {
3747 'file_count' : 0 ,
3848 'total_lines' : 0 ,
@@ -80,7 +90,10 @@ def analyze(self, regex_rules=None, show_progress=False, file_callback=None):
8090 setattr (self , attr , self .cache [f'_{ attr } ' ])
8191 return self .stats
8292 if self .file_types is None :
83- files = [file_path for file_path in self ._iter_files (self .root_dir ) if file_path .suffix ]
93+ files = [
94+ file_path for file_path in self ._iter_files (self .root_dir )
95+ if file_path .suffix and file_path .suffix .lower () in self .default_code_exts
96+ ]
8497 else :
8598 files = [file_path for file_path in self ._iter_files (self .root_dir ) if file_path .suffix in self .file_types ]
8699
0 commit comments