Exclude from the unreachable block analysis constant fields that look like they are flags for controlling debugging, profiling or logging features.
Debugging, profiling and logging flags that are compile time constants are usually intended to be toggled by the developer at compile time to provide extra information when developing the application, or when triaging a problem. By including this sub-class, blocks that are unreachable because they are guarded by a check of such a flag are considered reachable.
Note: we explicitly limit this to debugging, profiling and logging flags. True feature toggles are treated as constant true/false, because it is much less likely that they are toggled in practice.
Import path
import semmle.code.java.controlflow.unreachableblocks.ExcludeDebuggingProfilingLogging
Direct supertypes
Indirect supertypes
Inherited predicates
compilerGeneratedReason | Gets the reason this element was generated by the compiler, if any. | from Element |
contains | Holds if this element transitively contains the specified element | from Element |
fromSource | Holds if this element pertains to a source file. | from Element |
getADeclaredAnnotation | Gets an annotation that is declared on this element, excluding inherited annotations. The retention policy of the annotation type is not considered. | from Annotatable |
getAModifier | Gets a modifier of this element. | from Modifiable |
getAPrimaryQlClass | Gets the name of a primary CodeQL class to which this element belongs. | from Field |
getAnAccess | Gets an access to this variable. | from Variable |
getAnAnnotation | Gets an annotation that applies to this element, including inherited annotations. The results only include direct annotations; indirect annotations, that is repeated annotations in an (implicit) container annotation, are not included. The retention policy of the annotation type is not considered. | from Annotatable |
getAnAssignedValue | Gets an expression assigned to this variable, either appearing on the right-hand side of an assignment or bound to it via a binding | from Variable |
getAnAssociatedAnnotation | Gets an annotation associated with this element, that is: - An annotation directly present on this element, or - An annotation indirectly present on this element (in the form of a repeated annotation), or - If an annotation of a type is neither directly nor indirectly present the result is an associated inherited annotation (recursively) | from Annotatable |
getCompilationUnit | Gets the compilation unit that this element belongs to. | from Element |
getConstantValue | Gets the constant value assigned to the field. | from ConstantField |
getDeclaration | Gets the field declaration in which this field is declared. | from Field |
getDeclaringType | Gets the type in which this field is declared. | from Field |
getDoc | Cast this element to a | from Element |
getEnclosingCallable | Gets the immediately enclosing callable, if this member is declared in an anonymous or local class or interface. | from Member |
getFile | Gets the file associated with this element. | from Top |
getInitializer | Gets the initializer expression of this field, if any. | from Field |
getKotlinType | Gets the Kotlin type of this field. | from Field |
getLocation | Gets the source location for this element. | from Top |
getMetrics | Cast this field to a class that provides access to metrics information. | from Field |
getName | Gets the name of this element. | from Element |
getNumberOfCommentLines | Gets the number of comment lines that this element ranges over. | from Top |
getNumberOfLinesOfCode | Gets the number of lines of code that this element ranges over. | from Top |
getPrimaryQlClasses | Gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs. | from Top |
getQualifiedName | Gets the qualified name of this member. This is useful for debugging, but for normal use | from Member |
getSourceDeclaration | DEPRECATED: The result is always | from Field |
getTotalNumberOfLines | Gets the total number of lines that this element ranges over, including lines of code, comment and whitespace-only lines. | from Top |
getType | Gets the declared type of this field. | from Field |
hasAnnotation | Holds if this element has an annotation, including inherited annotations. The retention policy of the annotation type is not considered. | from Annotatable |
hasAnnotation | Holds if this element has the specified annotation, including inherited annotations. The retention policy of the annotation type is not considered. | from Annotatable |
hasChildElement | Holds if this element is the immediate parent of the specified element | from Element |
hasDeclaredAnnotation | Holds if this element has a declared annotation, excluding inherited annotations. The retention policy of the annotation type is not considered. | from Annotatable |
hasLocationInfo | Holds if this element is at the specified location. The location spans column | from Top |
hasModifier | Holds if this element has modifier | from Modifiable |
hasName | Holds if this element has the specified | from Element |
hasNoModifier | Holds if this element has no modifier. | from Modifiable |
hasQualifiedName | Holds if this member has the specified name and is declared in the specified package and type. | from Member |
isAbstract | Holds if this element has an | from Modifiable |
isCompilerGenerated | Holds if this is an auxiliary program element generated by the compiler. | from Element |
isCrossinline | Holds if this element has a | from Modifiable |
isDefault | Holds if this element has a | from Modifiable |
isFinal | Holds if this element has a | from Field |
isIn | Holds if this element has an | from Modifiable |
isInline | Holds if this element has an | from Modifiable |
isInternal | Holds if this element has an | from Modifiable |
isLateinit | Holds if this element has a | from Modifiable |
isNative | Holds if this element has a | from Modifiable |
isNoinline | Holds if this element has a | from Modifiable |
isOut | Holds if this element has an | from Modifiable |
isPackageProtected | Holds if this member is package protected, that is, neither public nor private nor protected. | from Member |
isPrivate | Holds if this element has a | from Modifiable |
isProtected | Holds if this element has a | from Modifiable |
isPublic | Holds if this element has a | from Field |
isReified | Holds if this element has a | from Modifiable |
isSealedKotlin | Holds if this element has a | from Modifiable |
isSourceDeclaration | DEPRECATED: This always holds. | from Field |
isStatic | Holds if this element has a | from Field |
isStrictfp | Holds if this element has a | from Modifiable |
isStub | Holds if this element is from source and classified as a stub implementation. An implementation is considered a stub, if the the path to the source file contains | from Element |
isSuspend | Holds if this element has a | from Modifiable |
isSynchronized | Holds if this element has a | from Modifiable |
isTransient | Holds if this element has a | from Modifiable |
isVolatile | Holds if this element has a | from Modifiable |
pp | Gets a printable representation of this variable together with its type. | from Variable |
suppressesWarningsAbout | Holds if this or any enclosing | from Annotatable |
toString | Gets a textual representation of this element. | from Top |