ElectronVector / ravioli

For calculating metrics on C source code.
MIT License
50 stars 12 forks source link

void foo(int a[3]) not recognized as function #20

Open fg6hdw opened 3 years ago

fg6hdw commented 3 years ago

Functions that takes array arguments like void foo(int a[3]) are not recognized as functions by ravioli. Adding '[', ']' characters to function_matcher regex fixes the problem.

diff --git a/ravioli/complexity.py b/ravioli/complexity.py
index 87d79b8..20631c8 100644
--- a/ravioli/complexity.py
+++ b/ravioli/complexity.py
@@ -10,7 +10,7 @@ def calculate_complexity(code):
     original_code = code
     code = strip_comments(code)
     results = []
-    function_matcher = re.compile(r'\s+(\w+)\s*\([\w\s,\*]*\)\s*{', re.MULTILINE)
+    function_matcher = re.compile(r'\s+(\w+)\s*\([\w\s,\[\]\*]*\)\s*{', re.MULTILINE)

     for m in function_matcher.finditer(code):
         name = m.group(1)