Fix parsing of some parameter formats in argscheck.checkArgs (#200)

diff --git a/src/common/argscheck.js b/src/common/argscheck.js
index 07a2297..06d465e 100644
--- a/src/common/argscheck.js
+++ b/src/common/argscheck.js
@@ -33,7 +33,7 @@
 };
 
 function extractParamName (callee, argIndex) {
-    return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex];
+    return (/\(\s*([^)]*?)\s*\)/).exec(callee)[1].split(/\s*,\s*/)[argIndex];
 }
 
 function checkArgs (spec, functionName, args, opt_callee) {
diff --git a/test/test.argscheck.js b/test/test.argscheck.js
index 7f4392c..60fd02f 100644
--- a/test/test.argscheck.js
+++ b/test/test.argscheck.js
@@ -78,4 +78,22 @@
         argscheck.enableChecks = false;
         testFunc();
     });
+    it('Test#012 : should be able to extract from all kinds of parameter formats', () => {
+        const check = args => argscheck.checkArgs('ss', 'testFn', args);
+
+        function sparse (
+            a,
+            b
+        ) { check(arguments); }
+        expect(() => sparse(null, '')).toThrowError(/parameter "a"/);
+        expect(() => sparse('', null)).toThrowError(/parameter "b"/);
+
+        // eslint-disable-next-line comma-spacing
+        function dense (a,b) { check(arguments); }
+        expect(() => dense('', null)).toThrowError(/parameter "b"/);
+
+        // eslint-disable-next-line comma-spacing, space-in-parens
+        function funky ( a ,b ) { check(arguments); }
+        expect(() => funky(null, '')).toThrowError(/parameter "a"/);
+    });
 });