calum
b473d2f7a8
C#: Update change notes. Decrease the priority of this query because the volatile keyword is no longer needed on modern .Net runtimes.
2019-02-08 14:59:45 +00:00
calum
7addd41e38
C#: Fixes to double-checked lock.
2019-02-08 14:57:57 +00:00
calum
c9cf183878
C#: Fix merge conflicts.
2019-02-08 14:38:51 +00:00
calum
08d13ea363
C#: Address review comments.
2019-02-08 14:38:51 +00:00
calum
7f7a92d092
C#: Model Json.NET dataflow.
2019-02-08 14:37:54 +00:00
Tom Hvitved
e663abd5da
C#: Avoid using ExceptionClass in deliberate Cartesian products
...
Using the class `ExceptionClass` in combination with a deliberate Cartesian
product can lead to bad join orders, for example
```
EVALUATE NONRECURSIVE RELATION:
Completion::TriedControlFlowElement::getAThrownException_dispred#ff(int this, int result) :-
{1} r1 = JOIN Expr::Expr::getType_dispred#ff_10#join_rhs WITH @integral_type#f ON Expr::Expr::getType_dispred#ff_10#join_rhs.<0>=@integral_type#f.<0> OUTPUT FIELDS {Expr::Expr::getType_dispred#ff_10#join_rhs.<1>}
{1} r2 = JOIN r1 WITH @un_op#f ON r1.<0>=@un_op#f.<0> OUTPUT FIELDS {r1.<0>}
{1} r3 = JOIN r2 WITH Stmt::TryStmt::getATriedElement#ff_1#join_rhs ON r2.<0>=Stmt::TryStmt::getATriedElement#ff_1#join_rhs.<0> OUTPUT FIELDS {r2.<0>}
{2} r4 = JOIN r3 WITH Stmt::ExceptionClass#f CARTESIAN PRODUCT OUTPUT FIELDS {Stmt::ExceptionClass#f.<0>,r3.<0>}
{2} r5 = JOIN r4 WITH System::SystemOverflowExceptionClass#class#f ON r4.<0>=System::SystemOverflowExceptionClass#class#f.<0> OUTPUT FIELDS {r4.<1>,r4.<0>}
```
where the CP is made with `ExceptionClass` rather than `SystemOverflowExceptionClass`
directly.
2019-02-07 20:42:21 +01:00
Tom Hvitved
e074daee74
C#: Limit number of non-required CFG splits
2019-02-07 20:40:20 +01:00
Tom Hvitved
ab8ad9f8e6
C#: Improve a few join-orders in CFG splitting library
2019-02-07 20:40:20 +01:00
semmle-qlci
87c5872bc5
Merge pull request #903 from hvitved/csharp/successor-type-qldoc
...
Approved by calumgrant
2019-02-07 19:38:58 +00:00
calum
8afbd2d897
C#: Extend TrivialProperty to also include CIL::TrivialProperty
2019-02-07 12:05:42 +00:00
Tom Hvitved
ba575db93b
C#: Add QL doc to SuccessorType.qll
2019-02-07 12:09:09 +01:00
Calum Grant
383e82a3f3
Merge pull request #886 from hvitved/csharp/cfg/restructure
...
C#: Split up `ControlFlowGraph.qll` into multiple files
2019-02-07 11:06:19 +00:00
Tom Hvitved
5f027e1761
Merge pull request #860 from calumgrant/cs/library-flow
...
C#: Refactor LibraryTypeDataFlow
2019-02-07 11:52:05 +01:00
Calum Grant
4274bb136f
Merge pull request #892 from hvitved/csharp/get-arg-for-param-bad-magic
...
C#: Prevent bad magic in `getArgumentForParameter()`
2019-02-07 10:50:21 +00:00
Calum Grant
73d56e1bdb
Merge pull request #881 from hvitved/csharp/remove-get-url
...
C#: Remove `getUrl()` predicate
2019-02-07 10:47:56 +00:00
Tom Hvitved
23e63e983c
C#: Improve join order in conditionalAssign()
...
Fixes a bad join-order in `Guards::Internal::conditionalAssign#ffff#antijoin_rhs#1`:
```
[2019-01-25 14:12:03] (377s) Starting to evaluate predicate Guards::Internal::conditionalAssign#ffff#antijoin_rhs#1
[2019-01-25 14:20:41] (895s) Tuple counts:
9302551 ~1% {7} r1 = JOIN ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getAPhiInput_dispred#ff WITH Guards::Internal::conditionalAssign#ffff#shared#1 ON ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getAPhiInput_dispred#ff.<0>=Guards::Internal::conditionalAssign#ffff#shared#1.<0> OUTPUT FIELDS {ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getAPhiInput_dispred#ff.<1>,Guards::Internal::conditionalAssign#ffff#shared#1.<1>,Guards::Internal::conditionalAssign#ffff#shared#1.<2>,Guards::Internal::conditionalAssign#ffff#shared#1.<0>,Guards::Internal::conditionalAssign#ffff#shared#1.<3>,Guards::Internal::conditionalAssign#ffff#shared#1.<4>,Guards::Internal::conditionalAssign#ffff#shared#1.<5>}
9302551 ~7% {8} r2 = JOIN r1 WITH ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getBasicBlock_dispred#ff ON r1.<0>=ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getBasicBlock_dispred#ff.<0> OUTPUT FIELDS {r1.<1>,ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getBasicBlock_dispred#ff.<1>,r1.<2>,r1.<3>,r1.<4>,r1.<5>,r1.<6>,r1.<0>}
1223774650 ~0% {8} r3 = JOIN r2 WITH Guards::Internal::Guard::preControlsDirect_dispred#fff ON r2.<0>=Guards::Internal::Guard::preControlsDirect_dispred#fff.<0> AND r2.<1>=Guards::Internal::Guard::preControlsDirect_dispred#fff.<1> OUTPUT FIELDS {r2.<6>,Guards::Internal::Guard::preControlsDirect_dispred#fff.<2>,r2.<0>,r2.<2>,r2.<3>,r2.<4>,r2.<5>,r2.<7>}
80626 ~0% {7} r4 = JOIN r3 WITH Guards::AbstractValue::getDualValue_dispred#ff ON r3.<0>=Guards::AbstractValue::getDualValue_dispred#ff.<0> AND r3.<1>=Guards::AbstractValue::getDualValue_dispred#ff.<1> OUTPUT FIELDS {r3.<2>,r3.<3>,r3.<4>,r3.<5>,r3.<6>,r3.<0>,r3.<7>}
9293564 ~0% {7} r5 = Guards::Internal::conditionalAssign#ffff#shared#2 AND NOT Guards::Internal::conditionalAssign#ffff#antijoin_rhs(Guards::Internal::conditionalAssign#ffff#shared#2.<0>,Guards::Internal::conditionalAssign#ffff#shared#2.<1>,Guards::Internal::conditionalAssign#ffff#shared#2.<2>,Guards::Internal::conditionalAssign#ffff#shared#2.<3>,Guards::Internal::conditionalAssign#ffff#shared#2.<4>,Guards::Internal::conditionalAssign#ffff#shared#2.<5>,Guards::Internal::conditionalAssign#ffff#shared#2.<6>)
9293564 ~1% {7} r6 = SCAN r5 OUTPUT FIELDS {r5.<6>,r5.<0>,r5.<1>,r5.<2>,r5.<3>,r5.<4>,r5.<5>}
9293564 ~2% {8} r7 = JOIN r6 WITH ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getBasicBlock_dispred#ff ON r6.<0>=ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getBasicBlock_dispred#ff.<0> OUTPUT FIELDS {ControlFlowGraph::ControlFlow::Internal::PreSsa::Definition::getBasicBlock_dispred#ff.<1>,r6.<2>,r6.<1>,r6.<3>,r6.<4>,r6.<5>,r6.<6>,r6.<0>}
1940 ~2% {7} r8 = JOIN r7 WITH ControlFlowGraph::ControlFlow::Internal::PreBasicBlocks::PreBasicBlock::dominates_dispred#ff ON r7.<0>=ControlFlowGraph::ControlFlow::Internal::PreBasicBlocks::PreBasicBlock::dominates_dispred#ff.<0> AND r7.<1>=ControlFlowGraph::ControlFlow::Internal::PreBasicBlocks::PreBasicBlock::dominates_dispred#ff.<1> OUTPUT FIELDS {r7.<2>,r7.<1>,r7.<3>,r7.<4>,r7.<5>,r7.<6>,r7.<7>}
82566 ~0% {7} r9 = r4 \/ r8
return r9
```
2019-02-07 10:35:31 +01:00
calum
ce7e9901cc
C#: Address review comments.
2019-02-06 17:15:43 +00:00
Tom Hvitved
8812f26517
C#: Address review comments
2019-02-06 13:17:47 +01:00
Tom Hvitved
c3378c44a1
C#: Prevent bad magic in getArgumentForParameter()
2019-02-06 13:09:56 +01:00
Calum Grant
dd75e5bce3
Merge pull request #877 from hvitved/csharp/matches-handle
...
C#: Use `matchesHandle()` instead of `getLabel()`
2019-02-06 11:02:09 +00:00
semmle-qlci
4b81ffab96
Merge pull request #869 from hvitved/csharp/autoformat
...
Approved by calumgrant
2019-02-05 16:35:10 +00:00
Tom Hvitved
37c55750f7
Merge pull request #873 from calumgrant/cs/format-getresource-strings
...
C#: Fix FP in cs/format-argument-unused
2019-02-05 17:12:04 +01:00
Tom Hvitved
23b9b1eb72
C#: Cache Splits::toString()
2019-02-05 15:01:25 +01:00
Tom Hvitved
8c7c582e07
C#: Move successor types into own file
2019-02-05 14:27:09 +01:00
Tom Hvitved
0992e01f91
C#: Move Splitting and Reachability modules into own file
2019-02-05 14:27:09 +01:00
Tom Hvitved
3503e9b57e
C#: Move PreSsa module into own file
2019-02-05 14:27:09 +01:00
Tom Hvitved
5306d1ea0d
C#: Move PreBasicBlocks module into own file
2019-02-05 13:41:50 +01:00
Tom Hvitved
83fb32828f
C#: Move NonReturning module into own file
2019-02-05 11:50:03 +01:00
Tom Hvitved
64539b0263
C#: Move Completion.qll
2019-02-05 11:45:33 +01:00
Tom Hvitved
0211837e24
C#: Remove getUrl() predicate
2019-02-05 11:07:13 +01:00
Tom Hvitved
d829d98165
Merge branch 'master' into csharp/autoformat
2019-02-05 10:37:42 +01:00
Tom Hvitved
13503d068c
C#: Use matchesHandle() instead of getLabel()
2019-02-04 16:20:47 +01:00
Tom Hvitved
b4b6fdd12b
C#: Revert recent change to AccessorCall
...
The recent change to `AccessorCall` on dd99525566 resulted
in some bad join-orders, so I have (partly) reverted them. This means that the issues
orignally addressed by that change are now reintroduced, and I plan to instead apply a
fix to the CFG, which--unlike the original fix--should be able to handle multi-property-tuple
assignments.
2019-02-04 15:14:18 +01:00
calum
7d17724cae
C#: The empty string is not considered a format string for this query.
2019-02-04 12:53:12 +00:00
calum
f8870e78e7
C#: Fix test.
2019-02-04 11:51:04 +00:00
Tom Hvitved
910995af90
C#: Autoformat QL code
2019-02-04 10:32:30 +01:00
Robert Marsh
e1d289ffb4
Merge pull request #759 from calumgrant/cs/interface-tostring
...
C#: Remove FPs from cs/call-to-object-tostring
2019-01-31 12:03:49 -08:00
calum
5144f89a5b
C#: Fix dataflow.
2019-01-31 19:53:46 +00:00
calum
92eb857dac
C#: Add documentation.
2019-01-31 17:46:28 +00:00
calum
4274854f0f
C#: Refactor TCallableFlowSinkDelegateArg
2019-01-31 16:03:23 +00:00
calum
713c7a8c20
C#: Refactor TCallableFlowSourceDelegateArg
2019-01-31 15:42:09 +00:00
calum
18ff4583ef
C#: Refactor TCallableFlowSourceArg to remove callable.
2019-01-31 12:05:26 +00:00
Felicity Chapman
54242f4009
Merge pull request #849 from jf205/locations
...
Update links to QL help topics in GH repo files (SD-2999)
2019-01-30 11:06:22 +00:00
Calum Grant
9b7f4a8ce5
Merge pull request #845 from hvitved/csharp/get-type-non-null
...
C#: Teach guards library about `object.GetType()`
2019-01-30 10:08:05 +00:00
Calum Grant
722402fc89
Merge pull request #825 from hvitved/csharp/cfg/splitting-performance
...
C#: Improve performance of CFG split set computation
2019-01-30 10:05:25 +00:00
james
7cc1442ecb
Update link text
2019-01-30 09:44:07 +00:00
james
a98aae0a24
update links to lgtm.com/docs
2019-01-30 08:02:03 +00:00
james
81137aa7b4
update links to locations in .ql files
2019-01-30 08:02:02 +00:00
james
9d1a050f35
update links to locations in .qll files
2019-01-30 08:01:49 +00:00
calum
423513169f
C#: Address review comments. Introduce Member::isEffectivelyPublic() because isEffectivelyPrivate and isEffectivelyInternal are almost always used together.
2019-01-29 18:05:29 +00:00