mirror of
https://github.com/github/codeql.git
synced 2026-05-03 20:58:03 +02:00
Initial commit of Python queries and QL libraries.
This commit is contained in:
committed by
Mark Shannon
parent
90c75cd362
commit
5f58824d1b
25
python/ql/src/analysis/ContextEfficiency.ql
Normal file
25
python/ql/src/analysis/ContextEfficiency.ql
Normal file
@@ -0,0 +1,25 @@
|
||||
/** Compute the total points-to facts, the total size of the points-to relation and
|
||||
* the ratio of the two in relation to the depth of context.
|
||||
*/
|
||||
|
||||
|
||||
import python
|
||||
import semmle.python.pointsto.PointsTo
|
||||
import semmle.python.pointsto.PointsToContext
|
||||
|
||||
from int total_facts, int total_size, int depth, float efficiency
|
||||
where
|
||||
total_facts = strictcount(ControlFlowNode f, Object value, ClassObject cls |
|
||||
exists(PointsToContext ctx |
|
||||
PointsTo::points_to(f, ctx, value, cls, _) and
|
||||
depth = ctx.getDepth()
|
||||
)
|
||||
)
|
||||
and
|
||||
total_size = strictcount(ControlFlowNode f, Object value, ClassObject cls, PointsToContext ctx, ControlFlowNode orig |
|
||||
PointsTo::points_to(f, ctx, value, cls, orig) and
|
||||
depth = ctx.getDepth()
|
||||
)
|
||||
and
|
||||
efficiency = 100.0 * total_facts / total_size
|
||||
select depth, total_facts, total_size, efficiency
|
||||
Reference in New Issue
Block a user