From c6ae48f0907a3716d014058c5b6515a9e4c2c0b9 Mon Sep 17 00:00:00 2001 From: Simon Engledew Date: Fri, 19 Mar 2021 13:16:21 +0000 Subject: [PATCH 1/2] Create deferinloop.ql Add example query for highlighting defers inside loops. --- ql/examples/snippets/deferinloop.ql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 ql/examples/snippets/deferinloop.ql diff --git a/ql/examples/snippets/deferinloop.ql b/ql/examples/snippets/deferinloop.ql new file mode 100644 index 00000000000..9e7e7bbc722 --- /dev/null +++ b/ql/examples/snippets/deferinloop.ql @@ -0,0 +1,14 @@ +/** + * @name Defer In Loop + * @description A deferred statement in a loop will not execute until the end of the function. + * This can lead to unintentionally holding resources open like file handles or database transactions. + * @id go/examples/deferinloop + * @tags defer + * nesting + */ + +import go + +from LoopStmt loop, DeferStmt defer +where loop.getAChildStmt+() = defer +select defer, "This defer statement is in a $@.", loop, "loop" From 43b4cd69f8a8dfa87d2f946c824d427b6651900c Mon Sep 17 00:00:00 2001 From: Simon Engledew Date: Fri, 19 Mar 2021 14:21:45 +0000 Subject: [PATCH 2/2] Add review feedback --- ql/examples/snippets/deferinloop.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ql/examples/snippets/deferinloop.ql b/ql/examples/snippets/deferinloop.ql index 9e7e7bbc722..85f52236bb0 100644 --- a/ql/examples/snippets/deferinloop.ql +++ b/ql/examples/snippets/deferinloop.ql @@ -1,5 +1,5 @@ /** - * @name Defer In Loop + * @name Defer in loop * @description A deferred statement in a loop will not execute until the end of the function. * This can lead to unintentionally holding resources open like file handles or database transactions. * @id go/examples/deferinloop @@ -10,5 +10,5 @@ import go from LoopStmt loop, DeferStmt defer -where loop.getAChildStmt+() = defer +where loop.getBody().getAChildStmt+() = defer select defer, "This defer statement is in a $@.", loop, "loop"