File tree Expand file tree Collapse file tree 4 files changed +30
-4
lines changed
ql/src/meta/analysis-quality Expand file tree Collapse file tree 4 files changed +30
-4
lines changed Original file line number Diff line number Diff line change 55## Changes to code extraction
66
77* Asynchronous generator methods are now parsed correctly and no longer cause a spurious syntax error.
8+ * Recognition of CommonJS modules has improved. As a result, some files that were previously extracted as
9+ global scripts are now extracted as modules.
810* Top-level ` await ` is now supported.
Original file line number Diff line number Diff line change @@ -97,8 +97,9 @@ private static boolean isRequireCall(Expression e) {
9797 if (e instanceof CallExpression ) {
9898 CallExpression call = (CallExpression ) e ;
9999 Expression callee = call .getCallee ();
100- return (isIdentifier (callee , "require" ) || isRequireCall (callee ))
101- && call .getArguments ().size () == 1 ;
100+ if (isIdentifier (callee , "require" ) && call .getArguments ().size () == 1 ) return true ;
101+ if (isRequireCall (callee )) return true ;
102+ return false ;
102103 } else if (e instanceof MemberExpression ) {
103104 return isRequireCall (((MemberExpression ) e ).getObject ());
104105 } else if (e instanceof AssignmentExpression ) {
Original file line number Diff line number Diff line change @@ -164,9 +164,8 @@ public void testUMD() {
164164
165165 @ Test
166166 public void amdefine () {
167- // not currently detected
168167 isNodeJS (
169- "if (typeof define !== 'function') define = require('amdefine')(module, require);" , false );
168+ "if (typeof define !== 'function') define = require('amdefine')(module, require);" , true );
170169 }
171170
172171 @ Test
@@ -202,4 +201,14 @@ public void requireInIf() {
202201 + "}" ,
203202 true );
204203 }
204+
205+ @ Test
206+ public void requireAndCall () {
207+ isNodeJS ("var foo = require('foo')();" , true );
208+ }
209+
210+ @ Test
211+ public void requireAndCallMethod () {
212+ isNodeJS ("var foo = require('foo').bar();" , true );
213+ }
205214}
Original file line number Diff line number Diff line change 1+ /**
2+ * @name Modules
3+ * @description The number of modules in the snapshot.
4+ * @kind metric
5+ * @metricType project
6+ * @metricAggregate sum
7+ * @tags meta
8+ * @id js/meta/modules
9+ */
10+
11+ import javascript
12+ import CallGraphQuality
13+
14+ select projectRoot ( ) , count ( Module mod )
You can’t perform that action at this time.
0 commit comments