FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
codeql/java/ql/src/AlertSuppressionAnnotations.ql at codeql-cli/v2.26.0 · github/codeql · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
github
/
codeql
Public
Notifications
You must be signed in to change notification settings
Fork
2.1k
Star
10k
Code
Issues
998
Pull requests
462
Discussions
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
codeql
/
java
/
ql
/
src
/
AlertSuppressionAnnotations.ql
Copy path
More file actions
More file actions
Latest commit
History
History
History
100 lines (87 loc) · 3.29 KB
Breadcrumbs
codeql
/
java
/
ql
/
src
/
AlertSuppressionAnnotations.ql
Copy path
File metadata and controls
100 lines (87 loc) · 3.29 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/**
* @name Alert suppression using annotations
* @description Generates information about alert suppressions
* using 'SuppressWarnings' annotations.
* @kind alert-suppression
* @id java/alert-suppression-annotations
*/
import
java
import
Metrics.Internal.Extents
/** Gets the LGTM suppression annotation text in the string `s`, if any. */
bindingset
[
s
]
string
getAnnotationText
(
string
s
)
{
// match `lgtm[...]` or `codeql[...]` anywhere in the comment
result
=
s
.
regexpFind
(
"(?i)\\b(lgtm|codeql)\\s*\\[[^\\]]*\\]"
,
_
,
_
)
.
trim
(
)
}
/**
* An alert suppression annotation.
*/
class
SuppressionAnnotation
extends
SuppressWarningsAnnotation
{
string
text
;
SuppressionAnnotation
(
)
{
text
=
this
.
getASuppressedWarning
(
)
and
exists
(
getAnnotationText
(
text
)
)
}
/**
* Gets the text of this suppression annotation.
*/
string
getText
(
)
{
result
=
text
}
private
Annotation
getASiblingAnnotation
(
)
{
result
=
this
.
getAnnotatedElement
(
)
.
(
Annotatable
)
.
getAnAnnotation
(
)
and
(
this
.
getAnnotatedElement
(
)
instanceof
Callable
or
this
.
getAnnotatedElement
(
)
instanceof
RefType
)
}
private
Annotation
firstAnnotation
(
)
{
result
=
min
(
this
.
getASiblingAnnotation
(
)
as
m
order
by
m
.
getLocation
(
)
.
getStartLine
(
)
,
m
.
getLocation
(
)
.
getStartColumn
(
)
)
}
/**
* Holds if this annotation applies to the range from column `startcolumn` of line `startline`
* to column `endcolumn` of line `endline` in file `filepath`.
*/
predicate
covers
(
string
filepath
,
int
startline
,
int
startcolumn
,
int
endline
,
int
endcolumn
)
{
if
this
.
firstAnnotation
(
)
.
hasLocationInfo
(
filepath
,
_
,
_
,
_
,
_
)
then
this
.
getAnnotatedElement
(
)
.
hasLocationInfo
(
filepath
,
_
,
_
,
endline
,
endcolumn
)
and
this
.
firstAnnotation
(
)
.
hasLocationInfo
(
filepath
,
startline
,
startcolumn
,
_
,
_
)
else
this
.
getAnnotatedElement
(
)
.
hasLocationInfo
(
filepath
,
startline
,
startcolumn
,
endline
,
endcolumn
)
}
/** Gets the scope of this suppression. */
SuppressionScope
getScope
(
)
{
this
=
result
.
getSuppressionAnnotation
(
)
}
}
/**
* The scope of an alert suppression annotation.
*/
class
SuppressionScope
extends
@annotation
instanceof
SuppressionAnnotation
{
/** Gets a suppression annotation with this scope. */
SuppressionAnnotation
getSuppressionAnnotation
(
)
{
result
=
this
}
/**
* Holds if this element is at the specified location.
* The location spans column `startcolumn` of line `startline` to
* column `endcolumn` of line `endline` in file `filepath`.
* For more information, see
* [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
*/
predicate
hasLocationInfo
(
string
filepath
,
int
startline
,
int
startcolumn
,
int
endline
,
int
endcolumn
)
{
super
.
covers
(
filepath
,
startline
,
startcolumn
,
endline
,
endcolumn
)
}
/** Gets a textual representation of this element. */
string
toString
(
)
{
result
=
"suppression range"
}
}
from
SuppressionAnnotation
c
,
string
text
,
string
annotationText
where
text
=
c
.
getText
(
)
and
annotationText
=
getAnnotationText
(
text
)
select
c
,
// suppression entity
text
,
// full text of suppression string
annotationText
.
regexpReplaceAll
(
"(?i)^codeql"
,
"lgtm"
)
,
// LGTM suppression annotation text
c
.
getScope
(
)
// scope of suppression
Back
|
FazBrowse Home
|
New Git URL