RadonMetrics/CodeMetricsCalculator.py

Tue, 10 Dec 2024 15:48:54 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:48:54 +0100
branch
eric7
changeset 126
9ecce748f0ac
parent 111
897c71cbc967
permissions
-rw-r--r--

Updated copyright for 2025.

3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
126
9ecce748f0ac Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 111
diff changeset
3 # Copyright (c) 2015 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
13
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
6 """
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
7 Module implementing the raw code metrics service.
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
8 """
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
9
104
6eac83394939 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 94
diff changeset
10 import multiprocessing
69
cdf51e6abaee Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
11 import queue
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 def initService():
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 """
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 Initialize the service and return the entry point.
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
17
111
897c71cbc967 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 110
diff changeset
18 @return the entry point for the background client
897c71cbc967 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 110
diff changeset
19 @rtype function
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
10
8b1920a22df3 Changed the logic for the various code metrics calculations to be separate services and fine tuned the dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
21 return rawCodeMetrics
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def initBatchService():
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Initialize the batch service and return the entry point.
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
27
111
897c71cbc967 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 110
diff changeset
28 @return the entry point for the background client
897c71cbc967 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 110
diff changeset
29 @rtype function
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
10
8b1920a22df3 Changed the logic for the various code metrics calculations to be separate services and fine tuned the dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
31 return batchRawCodeMetrics
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
109
47df4b69f699 Corrected some code style issues and code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
34 def rawCodeMetrics(
47df4b69f699 Corrected some code style issues and code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
35 file, # noqa: U100
47df4b69f699 Corrected some code style issues and code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
36 text="",
47df4b69f699 Corrected some code style issues and code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
37 ):
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
10
8b1920a22df3 Changed the logic for the various code metrics calculations to be separate services and fine tuned the dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
39 Private function to calculate the raw code metrics of one file.
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
40
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param file source filename
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @type str
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @param text source text
13
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
44 @type str
10
8b1920a22df3 Changed the logic for the various code metrics calculations to be separate services and fine tuned the dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
45 @return tuple containing the result dictionary
8b1920a22df3 Changed the logic for the various code metrics calculations to be separate services and fine tuned the dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
46 @rtype (tuple of dict)
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
107
0843dd7239f6 Added missing close event handlers and removed some unused method arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
48 return __rawCodeMetrics(text)
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
49
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
51 def batchRawCodeMetrics(argumentsList, send, fx, cancelled, maxProcesses=0):
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
10
8b1920a22df3 Changed the logic for the various code metrics calculations to be separate services and fine tuned the dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
53 Module function to calculate the raw code metrics for a batch of files.
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
54
13
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
55 @param argumentsList list of arguments tuples as given for rawCodeMetrics
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @type list
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @param send reference to send function
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @type function
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @param fx registered service name
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @type str
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @param cancelled reference to function checking for a cancellation
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @type function
49
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
63 @param maxProcesses number of processes to be used
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
64 @type int
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 """
49
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
66 if maxProcesses == 0:
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
67 # determine based on CPU count
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
68 try:
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
69 NumberOfProcesses = multiprocessing.cpu_count()
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
70 if NumberOfProcesses >= 1:
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
71 NumberOfProcesses -= 1
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
72 except NotImplementedError:
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
73 NumberOfProcesses = 1
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
74 else:
ab84f5a5edd8 Added functionality to limit the number of processes used for background services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
75 NumberOfProcesses = maxProcesses
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 # Create queues
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 taskQueue = multiprocessing.Queue()
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 doneQueue = multiprocessing.Queue()
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 # Submit tasks (initially two time number of processes
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 initialTasks = 2 * NumberOfProcesses
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 for task in argumentsList[:initialTasks]:
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 taskQueue.put(task)
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 # Start worker processes
87
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
87 workers = [
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
88 multiprocessing.Process(target=workerTask, args=(taskQueue, doneQueue))
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
89 for _ in range(NumberOfProcesses)
87
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
90 ]
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
91 for worker in workers:
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
92 worker.start()
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 # Get and send results
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 endIndex = len(argumentsList) - initialTasks
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 for i in range(len(argumentsList)):
45
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
97 resultSent = False
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
98 wasCancelled = False
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
99
45
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
100 while not resultSent:
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
101 try:
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
102 # get result (waiting max. 3 seconds and send it to frontend
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
103 filename, result = doneQueue.get()
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
104 send(fx, filename, result)
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
105 resultSent = True
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
106 except queue.Empty:
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
107 # ignore empty queue, just carry on
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
108 if cancelled():
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
109 wasCancelled = True
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
110 break
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
111
45
0f2eabfd5834 Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
112 if wasCancelled or cancelled():
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 # just exit the loop ignoring the results of queued tasks
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 break
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
115
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 if i < endIndex:
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 taskQueue.put(argumentsList[i + initialTasks])
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 # Tell child processes to stop
54
f7a462d6ec26 Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
120 for _ in range(NumberOfProcesses):
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
121 taskQueue.put("STOP")
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
122
87
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
123 for worker in workers:
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
124 worker.join()
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
125 worker.close()
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
87
6ae91562f0a7 Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
128 def workerTask(inputQueue, outputQueue):
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
13
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
130 Module function acting as the parallel worker for the raw code metrics
22bc345844e7 Implemented the cyclomatic complexity stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
131 calculation.
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
132
43
53dbd4f4d6c2 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
133 @param inputQueue input queue
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 @type multiprocessing.Queue
43
53dbd4f4d6c2 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
135 @param outputQueue output queue
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @type multiprocessing.Queue
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 """
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
138 for filename, source in iter(inputQueue.get, "STOP"):
107
0843dd7239f6 Added missing close event handlers and removed some unused method arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
139 result = __rawCodeMetrics(source)
43
53dbd4f4d6c2 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
140 outputQueue.put((filename, result))
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
107
0843dd7239f6 Added missing close event handlers and removed some unused method arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
143 def __rawCodeMetrics(text):
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 Private function to calculate the raw code metrics for one Python file.
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
146
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 @param text source text
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 @type str
6
13e9698a9981 Started implementing the maintainability index stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
149 @return tuple containing the result dictionary
13e9698a9981 Started implementing the maintainability index stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
150 @rtype (tuple of dict)
3
7150ed890fd5 Started implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
109
47df4b69f699 Corrected some code style issues and code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
152 from radon.raw import analyze # noqa: I102
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
153
4
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
154 try:
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
155 res = __raw2Dict(analyze(text))
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
156 except Exception as err:
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
157 res = {"error": str(err)}
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
158 return (res,)
4
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
159
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
160
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
161 def __raw2Dict(obj):
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
162 """
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
163 Private function to convert an object holding raw analysis results into a
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
164 dictionary.
94
725eaca7bc4b Reformatted the code iaw. Black styling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
165
4
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
166 @param obj object as returned from analyze()
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
167 @type radon.raw.Module
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
168 @return conversion result
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
169 @rtype dict
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
170 """
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
171 result = {}
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
172 for a in obj._fields:
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
173 v = getattr(obj, a, None)
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
174 if v is not None:
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
175 result[a] = v
9ac53bf21182 Continued implementing the raw code metrics stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
176 return result

eric ide

mercurial