Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f6c3588

Browse files
committed
convert logging models to use API-graphs
1 parent 931322e commit f6c3588

1 file changed

Lines changed: 28 additions & 13 deletions

File tree

  • javascript/ql/src/semmle/javascript/frameworks

javascript/ql/src/semmle/javascript/frameworks/Logging.qll

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,22 @@ string getAStandardLoggerMethodName() {
3838
*/
3939
private module Console {
4040
/**
41-
* Gets a data flow source node for the console library.
41+
* An API entrypoint for the global `console` variable.
4242
*/
43-
private DataFlow::SourceNode console() {
44-
result = DataFlow::moduleImport("console") or
45-
result = DataFlow::globalVarRef("console")
43+
private class ConsoleGlobalEntry extends API::EntryPoint {
44+
ConsoleGlobalEntry() { this = "ConsoleGlobalEntry" }
45+
46+
override DataFlow::SourceNode getAUse() { result = DataFlow::globalVarRef("console") }
47+
48+
override DataFlow::Node getARhs() { none() }
49+
}
50+
51+
/**
52+
* Gets a api node for the console library.
53+
*/
54+
private API::Node console() {
55+
result = API::moduleImport("console") or
56+
result = API::root().getASuccessor(any(ConsoleGlobalEntry e))
4657
}
4758

4859
/**
@@ -56,7 +67,7 @@ private module Console {
5667
name = getAStandardLoggerMethodName() or
5768
name = "assert"
5869
) and
59-
this = console().getAMemberCall(name)
70+
this = console().getMember(name).getACall()
6071
}
6172

6273
override DataFlow::Node getAMessageComponent() {
@@ -85,7 +96,7 @@ private module Loglevel {
8596
*/
8697
class LoglevelLoggerCall extends LoggerCall {
8798
LoglevelLoggerCall() {
88-
this = DataFlow::moduleMember("loglevel", getAStandardLoggerMethodName()).getACall()
99+
this = API::moduleImport("loglevel").getMember(getAStandardLoggerMethodName()).getACall()
89100
}
90101

91102
override DataFlow::Node getAMessageComponent() { result = getAnArgument() }
@@ -102,9 +113,11 @@ private module Winston {
102113
class WinstonLoggerCall extends LoggerCall, DataFlow::MethodCallNode {
103114
WinstonLoggerCall() {
104115
this =
105-
DataFlow::moduleMember("winston", "createLogger")
116+
API::moduleImport("winston")
117+
.getMember("createLogger")
118+
.getReturn()
119+
.getMember(getAStandardLoggerMethodName())
106120
.getACall()
107-
.getAMethodCall(getAStandardLoggerMethodName())
108121
}
109122

110123
override DataFlow::Node getAMessageComponent() {
@@ -125,9 +138,11 @@ private module log4js {
125138
class Log4jsLoggerCall extends LoggerCall {
126139
Log4jsLoggerCall() {
127140
this =
128-
DataFlow::moduleMember("log4js", "getLogger")
141+
API::moduleImport("log4js")
142+
.getMember("getLogger")
143+
.getReturn()
144+
.getMember(getAStandardLoggerMethodName())
129145
.getACall()
130-
.getAMethodCall(getAStandardLoggerMethodName())
131146
}
132147

133148
override DataFlow::Node getAMessageComponent() { result = getAnArgument() }
@@ -145,7 +160,7 @@ private module Npmlog {
145160
string name;
146161

147162
Npmlog() {
148-
this = DataFlow::moduleMember("npmlog", name).getACall() and
163+
this = API::moduleImport("npmlog").getMember(name).getACall() and
149164
name = getAStandardLoggerMethodName()
150165
}
151166

@@ -170,8 +185,8 @@ private module Fancylog {
170185
*/
171186
class Fancylog extends LoggerCall {
172187
Fancylog() {
173-
this = DataFlow::moduleMember("fancy-log", getAStandardLoggerMethodName()).getACall() or
174-
this = DataFlow::moduleImport("fancy-log").getACall()
188+
this = API::moduleImport("fancy-log").getMember(getAStandardLoggerMethodName()).getACall() or
189+
this = API::moduleImport("fancy-log").getACall()
175190
}
176191

177192
override DataFlow::Node getAMessageComponent() { result = getAnArgument() }

0 commit comments

Comments
 (0)