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 5
5
## Changes to code extraction
6
6
7
7
* 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.
8
10
* 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) {
97
97
if (e instanceof CallExpression ) {
98
98
CallExpression call = (CallExpression ) e ;
99
99
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 ;
102
103
} else if (e instanceof MemberExpression ) {
103
104
return isRequireCall (((MemberExpression ) e ).getObject ());
104
105
} else if (e instanceof AssignmentExpression ) {
Original file line number Diff line number Diff line change @@ -164,9 +164,8 @@ public void testUMD() {
164
164
165
165
@ Test
166
166
public void amdefine () {
167
- // not currently detected
168
167
isNodeJS (
169
- "if (typeof define !== 'function') define = require('amdefine')(module, require);" , false );
168
+ "if (typeof define !== 'function') define = require('amdefine')(module, require);" , true );
170
169
}
171
170
172
171
@ Test
@@ -202,4 +201,14 @@ public void requireInIf() {
202
201
+ "}" ,
203
202
true );
204
203
}
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
+ }
205
214
}
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