1+ import os
2+ import subprocess
3+ import json
4+ import re
5+
6+ def analyze_breakpoints (repo_path : str , issue_id : str ) -> dict :
7+ try :
8+ # Check if the repository exists
9+ if not os .path .exists (repo_path ):
10+ raise FileNotFoundError (f"The repository path { repo_path } does not exist." )
11+
12+ # Clone the repository if it does not exist
13+ if not os .path .isdir (os .path .join (repo_path , '.git' )):
14+ subprocess .run (['git' , 'clone' , repo_path ], check = True )
15+
16+ # Navigate to the repository directory
17+ os .chdir (os .path .join (repo_path , 'app' ))
18+
19+ # List all files with '.ts' extension for TypeScript files
20+ ts_files = [f for f in os .listdir ('.' ) if f .endswith ('.ts' )]
21+
22+ # Initialize a dictionary to store the analysis
23+ analysis = {'issue_id' : issue_id , 'files_analyzed' : [], 'breakpoint_issues' : []}
24+
25+ # Analyze each TypeScript file for breakpoints
26+ for ts_file in ts_files :
27+ with open (ts_file , 'r' , encoding = 'utf-8' ) as file :
28+ content = file .read ()
29+ breakpoints = re .findall (r'\bbreak\b' , content )
30+
31+ # Count the number of breakpoints in the file
32+ breakpoint_count = len (breakpoints )
33+
34+ # If there are no breakpoints, add to issues list
35+ if breakpoint_count == 0 :
36+ analysis ['breakpoint_issues' ].append ({'file' : ts_file , 'message' : 'No breakpoints found.' })
37+
38+ # Store the analysis for the file
39+ analysis ['files_analyzed' ].append ({
40+ 'file' : ts_file ,
41+ 'breakpoint_count' : breakpoint_count
42+ })
43+
44+ return analysis
45+
46+ except Exception as e :
47+ return {'error' : str (e )}
48+
49+ # Test cases
50+ if __name__ == "__main__" :
51+ # Test with the provided repository
52+ repo_url = 'https://github.com/tihansen/words-challenge/tree/master/app'
53+ analysis_result = analyze_breakpoints (repo_url , '5000' )
54+ print (json .dumps (analysis_result , indent = 4 ))
0 commit comments