mirror of
https://github.com/github/codeql.git
synced 2026-05-20 14:17:11 +02:00
Compare commits
64 Commits
codeql-cli
...
redsun82/s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0644d0b84 | ||
|
|
e452ff678f | ||
|
|
2b486311f6 | ||
|
|
246059160e | ||
|
|
4ad597e967 | ||
|
|
b8b2c5f44a | ||
|
|
1f27eb3658 | ||
|
|
19797fdd27 | ||
|
|
11acb499bb | ||
|
|
0bf742b82d | ||
|
|
2feb00bb2e | ||
|
|
c378d6a661 | ||
|
|
75eee04f3e | ||
|
|
e610573411 | ||
|
|
e5999f76b0 | ||
|
|
409f46ef7b | ||
|
|
3c8c45872e | ||
|
|
9409d7fdca | ||
|
|
352e7de07d | ||
|
|
01183800a6 | ||
|
|
9190bf25ce | ||
|
|
bd0ddec630 | ||
|
|
a5d4fad806 | ||
|
|
a8dac17aec | ||
|
|
332c1e3b8a | ||
|
|
0fd89549da | ||
|
|
58bf0b709f | ||
|
|
55987d9c1f | ||
|
|
0bc9318400 | ||
|
|
8e61c6625b | ||
|
|
3acdc73f22 | ||
|
|
568fba6940 | ||
|
|
0fdc71bf57 | ||
|
|
96723b1a8f | ||
|
|
24c4c3e068 | ||
|
|
07f9614dc2 | ||
|
|
568442d5f8 | ||
|
|
f8641dd82d | ||
|
|
a0b49b23f5 | ||
|
|
1d22e65851 | ||
|
|
b2a301c206 | ||
|
|
4a4c77e81d | ||
|
|
0c73340e47 | ||
|
|
051120e958 | ||
|
|
c60cec36d4 | ||
|
|
9d124197e8 | ||
|
|
db3bf0e482 | ||
|
|
806f42ef72 | ||
|
|
f70a39e72f | ||
|
|
87f3b43576 | ||
|
|
dd092fd18f | ||
|
|
f5be407989 | ||
|
|
7b3f1a0982 | ||
|
|
081c1201ed | ||
|
|
3ee425cc47 | ||
|
|
32b775fdc3 | ||
|
|
1fbf177b54 | ||
|
|
3499d169f9 | ||
|
|
0597b2ed1b | ||
|
|
f19a5a9837 | ||
|
|
3c69ab10f2 | ||
|
|
581072721c | ||
|
|
6d6f8ba512 | ||
|
|
49d826f667 |
2
.bazelrc
2
.bazelrc
@@ -11,7 +11,7 @@ common --override_module=semmle_code=%workspace%/misc/bazel/semmle_code_stub
|
||||
build --repo_env=CC=clang --repo_env=CXX=clang++
|
||||
|
||||
build:linux --cxxopt=-std=c++20
|
||||
build:macos --cxxopt=-std=c++20 --cpu=darwin_x86_64
|
||||
build:macos --cxxopt=-std=c++20 --platforms=@apple_support//platforms:macos_x86_64
|
||||
build:windows --cxxopt=/std:c++20 --cxxopt=/Zc:preprocessor
|
||||
|
||||
try-import %workspace%/local.bazelrc
|
||||
|
||||
51
.github/workflows/swift.yml
vendored
51
.github/workflows/swift.yml
vendored
@@ -17,34 +17,28 @@ on:
|
||||
- main
|
||||
- rc/*
|
||||
- codeql-cli-*
|
||||
push:
|
||||
paths:
|
||||
- "swift/**"
|
||||
- "misc/bazel/**"
|
||||
- "misc/codegen/**"
|
||||
- "*.bazel*"
|
||||
- .github/workflows/swift.yml
|
||||
- .github/actions/**
|
||||
- codeql-workspace.yml
|
||||
- "!**/*.md"
|
||||
- "!**/*.qhelp"
|
||||
branches:
|
||||
- main
|
||||
- rc/*
|
||||
- codeql-cli-*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
# not using a matrix as you cannot depend on a specific job in a matrix, and we want to start linux checks
|
||||
# without waiting for the macOS build
|
||||
build-and-test-macos:
|
||||
# not putting using a matrix as you cannot depend on a specific job in a matrix, and we want to start qltest and
|
||||
# integration tests as soon as the corresponding build required has finished, without waiting for the slowest macOS
|
||||
# build
|
||||
build-and-test-macos-intel:
|
||||
if: github.repository_owner == 'github'
|
||||
runs-on: macos-12-xl
|
||||
runs-on: macos-14-large
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./swift/actions/build-and-test
|
||||
build-and-test-macos-arm:
|
||||
if: github.repository_owner == 'github'
|
||||
runs-on: macos-14-xlarge
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./swift/actions/build-and-test
|
||||
with:
|
||||
upload: false # use intel build for further tests
|
||||
build-and-test-linux:
|
||||
if: github.repository_owner == 'github'
|
||||
runs-on: ubuntu-latest-xl
|
||||
@@ -60,26 +54,11 @@ jobs:
|
||||
- uses: ./swift/actions/run-ql-tests
|
||||
qltests-macos:
|
||||
if: ${{ github.repository_owner == 'github' && github.event_name == 'pull_request' }}
|
||||
needs: build-and-test-macos
|
||||
runs-on: macos-12-xl
|
||||
needs: build-and-test-macos-intel
|
||||
runs-on: macos-14-large
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./swift/actions/run-ql-tests
|
||||
integration-tests-linux:
|
||||
if: github.repository_owner == 'github'
|
||||
needs: build-and-test-linux
|
||||
runs-on: ubuntu-latest-xl
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./swift/actions/run-integration-tests
|
||||
integration-tests-macos:
|
||||
if: ${{ github.repository_owner == 'github' && github.event_name == 'pull_request' }}
|
||||
needs: build-and-test-macos
|
||||
runs-on: macos-12-xl
|
||||
timeout-minutes: 60
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./swift/actions/run-integration-tests
|
||||
clang-format:
|
||||
if : ${{ github.event_name == 'pull_request' }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -12,7 +12,7 @@ local_path_override(
|
||||
)
|
||||
|
||||
# see https://registry.bazel.build/ for a list of available packages
|
||||
|
||||
bazel_dep(name = "apple_support", version = "1.14.0")
|
||||
bazel_dep(name = "platforms", version = "0.0.8")
|
||||
bazel_dep(name = "rules_pkg", version = "0.9.1")
|
||||
bazel_dep(name = "rules_nodejs", version = "6.0.3")
|
||||
|
||||
@@ -250,12 +250,7 @@ namespace Semmle.Autobuild.Cpp.Tests
|
||||
EndCallbackIn.Add(s);
|
||||
}
|
||||
|
||||
CppAutobuilder CreateAutoBuilder(bool isWindows,
|
||||
string? buildless = null, string? solution = null, string? buildCommand = null, string? ignoreErrors = null,
|
||||
string? msBuildArguments = null, string? msBuildPlatform = null, string? msBuildConfiguration = null, string? msBuildTarget = null,
|
||||
string? dotnetArguments = null, string? dotnetVersion = null, string? vsToolsVersion = null,
|
||||
string? nugetRestore = null, string? allSolutions = null,
|
||||
string cwd = @"C:\Project")
|
||||
CppAutobuilder CreateAutoBuilder(bool isWindows, string? dotnetVersion = null, string cwd = @"C:\Project")
|
||||
{
|
||||
string codeqlUpperLanguage = Language.Cpp.UpperCaseName;
|
||||
Actions.GetEnvironmentVariable[$"CODEQL_AUTOBUILDER_{codeqlUpperLanguage}_NO_INDEXING"] = "false";
|
||||
@@ -265,22 +260,7 @@ namespace Semmle.Autobuild.Cpp.Tests
|
||||
Actions.GetEnvironmentVariable[$"CODEQL_EXTRACTOR_{codeqlUpperLanguage}_DIAGNOSTIC_DIR"] = "";
|
||||
Actions.GetEnvironmentVariable["CODEQL_JAVA_HOME"] = @"C:\codeql\tools\java";
|
||||
Actions.GetEnvironmentVariable["CODEQL_PLATFORM"] = "win64";
|
||||
Actions.GetEnvironmentVariable["SEMMLE_DIST"] = @"C:\odasa";
|
||||
Actions.GetEnvironmentVariable["SEMMLE_JAVA_HOME"] = @"C:\odasa\tools\java";
|
||||
Actions.GetEnvironmentVariable["SEMMLE_PLATFORM_TOOLS"] = @"C:\odasa\tools";
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_VSTOOLS_VERSION"] = vsToolsVersion;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_ARGUMENTS"] = msBuildArguments;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_PLATFORM"] = msBuildPlatform;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_CONFIGURATION"] = msBuildConfiguration;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_TARGET"] = msBuildTarget;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_ARGUMENTS"] = dotnetArguments;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_VERSION"] = dotnetVersion;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_BUILD_COMMAND"] = buildCommand;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_SOLUTION"] = solution;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_IGNORE_ERRORS"] = ignoreErrors;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_BUILDLESS"] = buildless;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_ALL_SOLUTIONS"] = allSolutions;
|
||||
Actions.GetEnvironmentVariable["LGTM_INDEX_NUGET_RESTORE"] = nugetRestore;
|
||||
Actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_OPTION_DOTNET_VERSION"] = dotnetVersion;
|
||||
Actions.GetEnvironmentVariable["ProgramFiles(x86)"] = isWindows ? @"C:\Program Files (x86)" : null;
|
||||
Actions.GetCurrentDirectory = cwd;
|
||||
Actions.IsWindows = isWindows;
|
||||
|
||||
@@ -26,9 +26,6 @@ namespace Semmle.Autobuild.Cpp
|
||||
|
||||
public override BuildScript GetBuildScript()
|
||||
{
|
||||
if (Options.BuildCommand != null)
|
||||
return new BuildCommandRule((_, f) => f(null)).Analyse(this, false);
|
||||
|
||||
return
|
||||
// First try MSBuild
|
||||
new MsBuildRule().Analyse(this, true) |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/cpp-all
|
||||
version: 0.12.10
|
||||
version: 0.12.11-dev
|
||||
groups: cpp
|
||||
dbscheme: semmlecode.cpp.dbscheme
|
||||
extractor: cpp
|
||||
|
||||
@@ -862,7 +862,7 @@ private predicate namedExprChildPredicates(Expr expr, Element ele, string pred)
|
||||
or
|
||||
expr.(DeleteOrDeleteArrayExpr).getDestructorCall() = ele and pred = "getDestructorCall()"
|
||||
or
|
||||
expr.(DeleteOrDeleteArrayExpr).getExpr() = ele and pred = "getExpr()"
|
||||
expr.(DeleteOrDeleteArrayExpr).getExprWithReuse() = ele and pred = "getExprWithReuse()"
|
||||
or
|
||||
expr.(DestructorFieldDestruction).getExpr() = ele and pred = "getExpr()"
|
||||
or
|
||||
|
||||
@@ -1015,8 +1015,33 @@ class DeleteOrDeleteArrayExpr extends Expr, TDeleteOrDeleteArrayExpr {
|
||||
Expr getExpr() {
|
||||
// If there is a destructor call, the object being deleted is the qualifier
|
||||
// otherwise it is the third child.
|
||||
result = this.getChild(3) or result = this.getDestructorCall().getQualifier()
|
||||
exists(Expr exprWithReuse | exprWithReuse = this.getExprWithReuse() |
|
||||
if not exprWithReuse instanceof ReuseExpr
|
||||
then result = exprWithReuse
|
||||
else result = this.getDestructorCall().getQualifier()
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the object or array being deleted, and gets a `ReuseExpr` when there
|
||||
* is a destructor call and the object is also the qualifier of the call.
|
||||
*
|
||||
* For example, given:
|
||||
* ```
|
||||
* struct HasDestructor { ~HasDestructor(); };
|
||||
* struct PlainOldData { int x, char y; };
|
||||
*
|
||||
* void f(HasDestructor* hasDestructor, PlainOldData* pod) {
|
||||
* delete hasDestructor;
|
||||
* delete pod;
|
||||
* }
|
||||
* ```
|
||||
* This predicate yields a `ReuseExpr` for `delete hasDestructor`, as the
|
||||
* the deleted expression has a destructor, and that expression is also
|
||||
* the qualifier of the destructor call. In the case of `delete pod` the
|
||||
* predicate does not yield a `ReuseExpr`, as there is no destructor call.
|
||||
*/
|
||||
Expr getExprWithReuse() { result = this.getChild(3) }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1340,7 +1365,17 @@ class ReuseExpr extends Expr, @reuseexpr {
|
||||
/**
|
||||
* Gets the expression that is being re-used.
|
||||
*/
|
||||
Expr getReusedExpr() { expr_reuse(underlyingElement(this), unresolveElement(result), _) }
|
||||
Expr getReusedExpr() {
|
||||
// In the case of a prvalue, the extractor outputs the expression
|
||||
// before conversion, but the converted expression is intended.
|
||||
if this.isPRValueCategory()
|
||||
then result = this.getBaseReusedExpr().getFullyConverted()
|
||||
else result = this.getBaseReusedExpr()
|
||||
}
|
||||
|
||||
private Expr getBaseReusedExpr() {
|
||||
expr_reuse(underlyingElement(this), unresolveElement(result), _)
|
||||
}
|
||||
|
||||
override Type getType() { result = this.getReusedExpr().getType() }
|
||||
|
||||
|
||||
@@ -150,11 +150,6 @@ private predicate ignoreExprOnly(Expr expr) {
|
||||
or
|
||||
not translateFunction(getEnclosingFunction(expr)) and
|
||||
not Raw::varHasIRFunc(getEnclosingVariable(expr))
|
||||
or
|
||||
exists(DeleteOrDeleteArrayExpr deleteExpr |
|
||||
// Ignore the destructor call, because the duplicated qualifier breaks control flow.
|
||||
deleteExpr.getDestructorCall() = expr
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2245,7 +2245,11 @@ class TranslatedDeleteOrDeleteArrayExpr extends TranslatedNonConstantExpr, Trans
|
||||
|
||||
final override Type getCallResultType() { result = expr.getType() }
|
||||
|
||||
final override TranslatedExpr getQualifier() { none() }
|
||||
final override TranslatedExpr getQualifier() {
|
||||
result = getTranslatedExpr(expr.getDestructorCall())
|
||||
}
|
||||
|
||||
final override Instruction getQualifierResult() { none() }
|
||||
|
||||
final override predicate hasArguments() {
|
||||
// All deallocator calls have at least one argument.
|
||||
@@ -2260,7 +2264,7 @@ class TranslatedDeleteOrDeleteArrayExpr extends TranslatedNonConstantExpr, Trans
|
||||
final override TranslatedExpr getArgument(int index) {
|
||||
// The only argument we define is the pointer to be deallocated.
|
||||
index = 0 and
|
||||
result = getTranslatedExpr(expr.getExpr().getFullyConverted())
|
||||
result = getTranslatedExpr(expr.getExprWithReuse().getFullyConverted())
|
||||
}
|
||||
|
||||
final override predicate mayThrowException() {
|
||||
|
||||
@@ -37,6 +37,5 @@ where
|
||||
DoubleFree::flowPath(source, sink) and
|
||||
isFree(source.getNode(), _, _, dealloc) and
|
||||
isFree(sink.getNode(), e2)
|
||||
select sink.getNode(), source, sink,
|
||||
"Memory pointed to by '" + e2.toString() + "' may already have been freed by $@.", dealloc,
|
||||
dealloc.toString()
|
||||
select sink.getNode(), source, sink, "Memory pointed to by $@ may already have been freed by $@.",
|
||||
e2, e2.toString(), dealloc, dealloc.toString()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/cpp-queries
|
||||
version: 0.9.9
|
||||
version: 0.9.10-dev
|
||||
groups:
|
||||
- cpp
|
||||
- queries
|
||||
|
||||
@@ -426,11 +426,14 @@ DestructorCall.cpp:
|
||||
# 12| getQualifier(): [VariableAccess] c
|
||||
# 12| Type = [PointerType] C *
|
||||
# 12| ValueCategory = prvalue(load)
|
||||
# 12| getExprWithReuse(): [ReuseExpr] reuse of c
|
||||
# 12| Type = [PointerType] C *
|
||||
# 12| ValueCategory = prvalue
|
||||
# 13| getStmt(1): [ExprStmt] ExprStmt
|
||||
# 13| getExpr(): [DeleteExpr] delete
|
||||
# 13| Type = [VoidType] void
|
||||
# 13| ValueCategory = prvalue
|
||||
# 13| getExpr(): [VariableAccess] d
|
||||
# 13| getExprWithReuse(): [VariableAccess] d
|
||||
# 13| Type = [PointerType] D *
|
||||
# 13| ValueCategory = prvalue(load)
|
||||
# 14| getStmt(2): [ReturnStmt] return ...
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
| cpp.cpp:10:7:10:7 | operator= | Function |
|
||||
| cpp.cpp:10:7:10:7 | ~MyClass | Function |
|
||||
| cpp.cpp:15:5:15:12 | call to ~MyClass | Expr |
|
||||
| cpp.cpp:15:12:15:12 | reuse of m | Expr |
|
||||
| cpp.cpp:16:1:16:1 | return ... | Stmt |
|
||||
| file://:0:0:0:0 | operator delete | Function |
|
||||
| file://:0:0:0:0 | operator new | Function |
|
||||
|
||||
@@ -9068,11 +9068,11 @@ ir.cpp:
|
||||
# 1016| getExpr(): [DeleteExpr] delete
|
||||
# 1016| Type = [VoidType] void
|
||||
# 1016| ValueCategory = prvalue
|
||||
# 1016| getExpr(): [Literal] 0
|
||||
# 1016| getExprWithReuse(): [Literal] 0
|
||||
# 1016| Type = [NullPointerType] decltype(nullptr)
|
||||
# 1016| Value = [Literal] 0
|
||||
# 1016| ValueCategory = prvalue
|
||||
# 1016| getExpr().getFullyConverted(): [StaticCast] static_cast<int *>...
|
||||
# 1016| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<int *>...
|
||||
# 1016| Conversion = [PointerConversion] pointer conversion
|
||||
# 1016| Type = [IntPointerType] int *
|
||||
# 1016| Value = [StaticCast] 0
|
||||
@@ -9093,6 +9093,9 @@ ir.cpp:
|
||||
# 1017| Type = [PointerType] String *
|
||||
# 1017| Value = [StaticCast] 0
|
||||
# 1017| ValueCategory = prvalue
|
||||
# 1017| getExprWithReuse(): [ReuseExpr] reuse of static_cast<String *>...
|
||||
# 1017| Type = [PointerType] String *
|
||||
# 1017| ValueCategory = prvalue
|
||||
# 1018| getStmt(2): [ExprStmt] ExprStmt
|
||||
# 1018| getExpr(): [DeleteExpr] delete
|
||||
# 1018| Type = [VoidType] void
|
||||
@@ -9100,11 +9103,11 @@ ir.cpp:
|
||||
# 1018| getDeallocatorCall(): [FunctionCall] call to operator delete
|
||||
# 1018| Type = [VoidType] void
|
||||
# 1018| ValueCategory = prvalue
|
||||
# 1018| getExpr(): [Literal] 0
|
||||
# 1018| getExprWithReuse(): [Literal] 0
|
||||
# 1018| Type = [NullPointerType] decltype(nullptr)
|
||||
# 1018| Value = [Literal] 0
|
||||
# 1018| ValueCategory = prvalue
|
||||
# 1018| getExpr().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>...
|
||||
# 1018| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>...
|
||||
# 1018| Conversion = [PointerConversion] pointer conversion
|
||||
# 1018| Type = [PointerType] SizedDealloc *
|
||||
# 1018| Value = [StaticCast] 0
|
||||
@@ -9113,11 +9116,11 @@ ir.cpp:
|
||||
# 1019| getExpr(): [DeleteExpr] delete
|
||||
# 1019| Type = [VoidType] void
|
||||
# 1019| ValueCategory = prvalue
|
||||
# 1019| getExpr(): [Literal] 0
|
||||
# 1019| getExprWithReuse(): [Literal] 0
|
||||
# 1019| Type = [NullPointerType] decltype(nullptr)
|
||||
# 1019| Value = [Literal] 0
|
||||
# 1019| ValueCategory = prvalue
|
||||
# 1019| getExpr().getFullyConverted(): [StaticCast] static_cast<Overaligned *>...
|
||||
# 1019| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<Overaligned *>...
|
||||
# 1019| Conversion = [PointerConversion] pointer conversion
|
||||
# 1019| Type = [PointerType] Overaligned *
|
||||
# 1019| Value = [StaticCast] 0
|
||||
@@ -9138,6 +9141,9 @@ ir.cpp:
|
||||
# 1020| Type = [PointerType] PolymorphicBase *
|
||||
# 1020| Value = [StaticCast] 0
|
||||
# 1020| ValueCategory = prvalue
|
||||
# 1020| getExprWithReuse(): [ReuseExpr] reuse of static_cast<PolymorphicBase *>...
|
||||
# 1020| Type = [PointerType] PolymorphicBase *
|
||||
# 1020| ValueCategory = prvalue
|
||||
# 1021| getStmt(5): [ReturnStmt] return ...
|
||||
# 1024| [TopLevelFunction] void OperatorDeleteArray()
|
||||
# 1024| <params>:
|
||||
@@ -9146,11 +9152,11 @@ ir.cpp:
|
||||
# 1025| getExpr(): [DeleteArrayExpr] delete[]
|
||||
# 1025| Type = [VoidType] void
|
||||
# 1025| ValueCategory = prvalue
|
||||
# 1025| getExpr(): [Literal] 0
|
||||
# 1025| getExprWithReuse(): [Literal] 0
|
||||
# 1025| Type = [NullPointerType] decltype(nullptr)
|
||||
# 1025| Value = [Literal] 0
|
||||
# 1025| ValueCategory = prvalue
|
||||
# 1025| getExpr().getFullyConverted(): [StaticCast] static_cast<int *>...
|
||||
# 1025| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<int *>...
|
||||
# 1025| Conversion = [PointerConversion] pointer conversion
|
||||
# 1025| Type = [IntPointerType] int *
|
||||
# 1025| Value = [StaticCast] 0
|
||||
@@ -9171,6 +9177,9 @@ ir.cpp:
|
||||
# 1026| Type = [PointerType] String *
|
||||
# 1026| Value = [StaticCast] 0
|
||||
# 1026| ValueCategory = prvalue
|
||||
# 1026| getExprWithReuse(): [ReuseExpr] reuse of static_cast<String *>...
|
||||
# 1026| Type = [PointerType] String *
|
||||
# 1026| ValueCategory = prvalue
|
||||
# 1027| getStmt(2): [ExprStmt] ExprStmt
|
||||
# 1027| getExpr(): [DeleteArrayExpr] delete[]
|
||||
# 1027| Type = [VoidType] void
|
||||
@@ -9178,11 +9187,11 @@ ir.cpp:
|
||||
# 1027| getDeallocatorCall(): [FunctionCall] call to operator delete[]
|
||||
# 1027| Type = [VoidType] void
|
||||
# 1027| ValueCategory = prvalue
|
||||
# 1027| getExpr(): [Literal] 0
|
||||
# 1027| getExprWithReuse(): [Literal] 0
|
||||
# 1027| Type = [NullPointerType] decltype(nullptr)
|
||||
# 1027| Value = [Literal] 0
|
||||
# 1027| ValueCategory = prvalue
|
||||
# 1027| getExpr().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>...
|
||||
# 1027| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>...
|
||||
# 1027| Conversion = [PointerConversion] pointer conversion
|
||||
# 1027| Type = [PointerType] SizedDealloc *
|
||||
# 1027| Value = [StaticCast] 0
|
||||
@@ -9191,11 +9200,11 @@ ir.cpp:
|
||||
# 1028| getExpr(): [DeleteArrayExpr] delete[]
|
||||
# 1028| Type = [VoidType] void
|
||||
# 1028| ValueCategory = prvalue
|
||||
# 1028| getExpr(): [Literal] 0
|
||||
# 1028| getExprWithReuse(): [Literal] 0
|
||||
# 1028| Type = [NullPointerType] decltype(nullptr)
|
||||
# 1028| Value = [Literal] 0
|
||||
# 1028| ValueCategory = prvalue
|
||||
# 1028| getExpr().getFullyConverted(): [StaticCast] static_cast<Overaligned *>...
|
||||
# 1028| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<Overaligned *>...
|
||||
# 1028| Conversion = [PointerConversion] pointer conversion
|
||||
# 1028| Type = [PointerType] Overaligned *
|
||||
# 1028| Value = [StaticCast] 0
|
||||
@@ -9216,6 +9225,9 @@ ir.cpp:
|
||||
# 1029| Type = [PointerType] PolymorphicBase *
|
||||
# 1029| Value = [StaticCast] 0
|
||||
# 1029| ValueCategory = prvalue
|
||||
# 1029| getExprWithReuse(): [ReuseExpr] reuse of static_cast<PolymorphicBase *>...
|
||||
# 1029| Type = [PointerType] PolymorphicBase *
|
||||
# 1029| ValueCategory = prvalue
|
||||
# 1030| getStmt(5): [ReturnStmt] return ...
|
||||
# 1032| [CopyAssignmentOperator] EmptyStruct& EmptyStruct::operator=(EmptyStruct const&)
|
||||
# 1032| <params>:
|
||||
@@ -16699,7 +16711,7 @@ ir.cpp:
|
||||
# 2085| getExpr(): [DeleteExpr] delete
|
||||
# 2085| Type = [VoidType] void
|
||||
# 2085| ValueCategory = prvalue
|
||||
# 2085| getExpr(): [VariableAccess] x
|
||||
# 2085| getExprWithReuse(): [VariableAccess] x
|
||||
# 2085| Type = [IntPointerType] int *
|
||||
# 2085| ValueCategory = prvalue(load)
|
||||
# 2086| getStmt(3): [ReturnStmt] return ...
|
||||
@@ -16783,6 +16795,9 @@ ir.cpp:
|
||||
# 2108| getQualifier(): [VariableAccess] b1
|
||||
# 2108| Type = [PointerType] Base2 *
|
||||
# 2108| ValueCategory = prvalue(load)
|
||||
# 2108| getExprWithReuse(): [ReuseExpr] reuse of b1
|
||||
# 2108| Type = [PointerType] Base2 *
|
||||
# 2108| ValueCategory = prvalue
|
||||
# 2110| getStmt(2): [DeclStmt] declaration
|
||||
# 2110| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2
|
||||
# 2110| Type = [PointerType] Base2 *
|
||||
@@ -16810,6 +16825,9 @@ ir.cpp:
|
||||
# 2111| getQualifier(): [VariableAccess] b2
|
||||
# 2111| Type = [PointerType] Base2 *
|
||||
# 2111| ValueCategory = prvalue(load)
|
||||
# 2111| getExprWithReuse(): [ReuseExpr] reuse of b2
|
||||
# 2111| Type = [PointerType] Base2 *
|
||||
# 2111| ValueCategory = prvalue
|
||||
# 2113| getStmt(4): [DeclStmt] declaration
|
||||
# 2113| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d
|
||||
# 2113| Type = [PointerType] Derived2 *
|
||||
@@ -16833,6 +16851,9 @@ ir.cpp:
|
||||
# 2114| getQualifier(): [VariableAccess] d
|
||||
# 2114| Type = [PointerType] Derived2 *
|
||||
# 2114| ValueCategory = prvalue(load)
|
||||
# 2114| getExprWithReuse(): [ReuseExpr] reuse of d
|
||||
# 2114| Type = [PointerType] Derived2 *
|
||||
# 2114| ValueCategory = prvalue
|
||||
# 2115| getStmt(6): [ReturnStmt] return ...
|
||||
# 2117| [TopLevelFunction] void test_constant_folding_use(int)
|
||||
# 2117| <params>:
|
||||
@@ -17168,7 +17189,7 @@ ir.cpp:
|
||||
# 2176| getExpr(): [DeleteExpr] delete
|
||||
# 2176| Type = [VoidType] void
|
||||
# 2176| ValueCategory = prvalue
|
||||
# 2176| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] x
|
||||
# 2176| getExprWithReuse(): [ImplicitThisFieldAccess,PointerFieldAccess] x
|
||||
# 2176| Type = [CharPointerType] char *
|
||||
# 2176| ValueCategory = prvalue(load)
|
||||
# 2176| getQualifier(): [ThisExpr] this
|
||||
|
||||
@@ -6613,75 +6613,107 @@ ir.cpp:
|
||||
|
||||
# 1015| void OperatorDelete()
|
||||
# 1015| Block 0
|
||||
# 1015| v1015_1(void) = EnterFunction :
|
||||
# 1015| m1015_2(unknown) = AliasedDefinition :
|
||||
# 1015| m1015_3(unknown) = InitializeNonLocal :
|
||||
# 1015| m1015_4(unknown) = Chi : total:m1015_2, partial:m1015_3
|
||||
# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1016| r1016_2(int *) = Constant[0] :
|
||||
# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2
|
||||
# 1016| m1016_4(unknown) = ^CallSideEffect : ~m1015_4
|
||||
# 1016| m1016_5(unknown) = Chi : total:m1015_4, partial:m1016_4
|
||||
# 1017| r1017_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1017| r1017_2(String *) = Constant[0] :
|
||||
# 1017| v1017_3(void) = Call[operator delete] : func:r1017_1, 0:r1017_2
|
||||
# 1017| m1017_4(unknown) = ^CallSideEffect : ~m1016_5
|
||||
# 1017| m1017_5(unknown) = Chi : total:m1016_5, partial:m1017_4
|
||||
# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1018| r1018_2(SizedDealloc *) = Constant[0] :
|
||||
# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2
|
||||
# 1018| m1018_4(unknown) = ^CallSideEffect : ~m1017_5
|
||||
# 1018| m1018_5(unknown) = Chi : total:m1017_5, partial:m1018_4
|
||||
# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1019| r1019_2(Overaligned *) = Constant[0] :
|
||||
# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2
|
||||
# 1019| m1019_4(unknown) = ^CallSideEffect : ~m1018_5
|
||||
# 1019| m1019_5(unknown) = Chi : total:m1018_5, partial:m1019_4
|
||||
# 1020| r1020_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 1020| r1020_2(PolymorphicBase *) = Constant[0] :
|
||||
# 1020| v1020_3(void) = Call[?] : func:r1020_1, 0:r1020_2
|
||||
# 1020| m1020_4(unknown) = ^CallSideEffect : ~m1019_5
|
||||
# 1020| m1020_5(unknown) = Chi : total:m1019_5, partial:m1020_4
|
||||
# 1021| v1021_1(void) = NoOp :
|
||||
# 1015| v1015_5(void) = ReturnVoid :
|
||||
# 1015| v1015_6(void) = AliasedUse : ~m1020_5
|
||||
# 1015| v1015_7(void) = ExitFunction :
|
||||
# 1015| v1015_1(void) = EnterFunction :
|
||||
# 1015| m1015_2(unknown) = AliasedDefinition :
|
||||
# 1015| m1015_3(unknown) = InitializeNonLocal :
|
||||
# 1015| m1015_4(unknown) = Chi : total:m1015_2, partial:m1015_3
|
||||
# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1016| r1016_2(int *) = Constant[0] :
|
||||
# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2
|
||||
# 1016| m1016_4(unknown) = ^CallSideEffect : ~m1015_4
|
||||
# 1016| m1016_5(unknown) = Chi : total:m1015_4, partial:m1016_4
|
||||
# 1017| r1017_1(String *) = Constant[0] :
|
||||
# 1017| r1017_2(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 1017| v1017_3(void) = Call[~String] : func:r1017_2
|
||||
# 1017| m1017_4(unknown) = ^CallSideEffect : ~m1016_5
|
||||
# 1017| m1017_5(unknown) = Chi : total:m1016_5, partial:m1017_4
|
||||
# 1017| v1017_6(void) = ^IndirectReadSideEffect[-1] : &:r1017_1, ~m1017_5
|
||||
# 1017| m1017_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1017_1
|
||||
# 1017| m1017_8(unknown) = Chi : total:m1017_5, partial:m1017_7
|
||||
# 1017| r1017_9(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1017| r1017_10(String *) = CopyValue : r1017_1
|
||||
# 1017| v1017_11(void) = Call[operator delete] : func:r1017_9, 0:r1017_10
|
||||
# 1017| m1017_12(unknown) = ^CallSideEffect : ~m1017_8
|
||||
# 1017| m1017_13(unknown) = Chi : total:m1017_8, partial:m1017_12
|
||||
# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1018| r1018_2(SizedDealloc *) = Constant[0] :
|
||||
# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2
|
||||
# 1018| m1018_4(unknown) = ^CallSideEffect : ~m1017_13
|
||||
# 1018| m1018_5(unknown) = Chi : total:m1017_13, partial:m1018_4
|
||||
# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1019| r1019_2(Overaligned *) = Constant[0] :
|
||||
# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2
|
||||
# 1019| m1019_4(unknown) = ^CallSideEffect : ~m1018_5
|
||||
# 1019| m1019_5(unknown) = Chi : total:m1018_5, partial:m1019_4
|
||||
# 1020| r1020_1(PolymorphicBase *) = Constant[0] :
|
||||
# 1020| r1020_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] :
|
||||
# 1020| v1020_3(void) = Call[~PolymorphicBase] : func:r1020_2
|
||||
# 1020| m1020_4(unknown) = ^CallSideEffect : ~m1019_5
|
||||
# 1020| m1020_5(unknown) = Chi : total:m1019_5, partial:m1020_4
|
||||
# 1020| v1020_6(void) = ^IndirectReadSideEffect[-1] : &:r1020_1, ~m1020_5
|
||||
# 1020| m1020_7(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1020_1
|
||||
# 1020| m1020_8(unknown) = Chi : total:m1020_5, partial:m1020_7
|
||||
# 1020| r1020_9(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 1020| r1020_10(PolymorphicBase *) = CopyValue : r1020_1
|
||||
# 1020| v1020_11(void) = Call[?] : func:r1020_9, 0:r1020_10
|
||||
# 1020| m1020_12(unknown) = ^CallSideEffect : ~m1020_8
|
||||
# 1020| m1020_13(unknown) = Chi : total:m1020_8, partial:m1020_12
|
||||
# 1021| v1021_1(void) = NoOp :
|
||||
# 1015| v1015_5(void) = ReturnVoid :
|
||||
# 1015| v1015_6(void) = AliasedUse : ~m1020_13
|
||||
# 1015| v1015_7(void) = ExitFunction :
|
||||
|
||||
# 1024| void OperatorDeleteArray()
|
||||
# 1024| Block 0
|
||||
# 1024| v1024_1(void) = EnterFunction :
|
||||
# 1024| m1024_2(unknown) = AliasedDefinition :
|
||||
# 1024| m1024_3(unknown) = InitializeNonLocal :
|
||||
# 1024| m1024_4(unknown) = Chi : total:m1024_2, partial:m1024_3
|
||||
# 1025| r1025_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1025| r1025_2(int *) = Constant[0] :
|
||||
# 1025| v1025_3(void) = Call[operator delete[]] : func:r1025_1, 0:r1025_2
|
||||
# 1025| m1025_4(unknown) = ^CallSideEffect : ~m1024_4
|
||||
# 1025| m1025_5(unknown) = Chi : total:m1024_4, partial:m1025_4
|
||||
# 1026| r1026_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1026| r1026_2(String *) = Constant[0] :
|
||||
# 1026| v1026_3(void) = Call[operator delete[]] : func:r1026_1, 0:r1026_2
|
||||
# 1026| m1026_4(unknown) = ^CallSideEffect : ~m1025_5
|
||||
# 1026| m1026_5(unknown) = Chi : total:m1025_5, partial:m1026_4
|
||||
# 1027| r1027_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1027| r1027_2(SizedDealloc *) = Constant[0] :
|
||||
# 1027| v1027_3(void) = Call[operator delete[]] : func:r1027_1, 0:r1027_2
|
||||
# 1027| m1027_4(unknown) = ^CallSideEffect : ~m1026_5
|
||||
# 1027| m1027_5(unknown) = Chi : total:m1026_5, partial:m1027_4
|
||||
# 1028| r1028_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1028| r1028_2(Overaligned *) = Constant[0] :
|
||||
# 1028| v1028_3(void) = Call[operator delete[]] : func:r1028_1, 0:r1028_2
|
||||
# 1028| m1028_4(unknown) = ^CallSideEffect : ~m1027_5
|
||||
# 1028| m1028_5(unknown) = Chi : total:m1027_5, partial:m1028_4
|
||||
# 1029| r1029_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1029| r1029_2(PolymorphicBase *) = Constant[0] :
|
||||
# 1029| v1029_3(void) = Call[operator delete[]] : func:r1029_1, 0:r1029_2
|
||||
# 1029| m1029_4(unknown) = ^CallSideEffect : ~m1028_5
|
||||
# 1029| m1029_5(unknown) = Chi : total:m1028_5, partial:m1029_4
|
||||
# 1030| v1030_1(void) = NoOp :
|
||||
# 1024| v1024_5(void) = ReturnVoid :
|
||||
# 1024| v1024_6(void) = AliasedUse : ~m1029_5
|
||||
# 1024| v1024_7(void) = ExitFunction :
|
||||
# 1024| v1024_1(void) = EnterFunction :
|
||||
# 1024| m1024_2(unknown) = AliasedDefinition :
|
||||
# 1024| m1024_3(unknown) = InitializeNonLocal :
|
||||
# 1024| m1024_4(unknown) = Chi : total:m1024_2, partial:m1024_3
|
||||
# 1025| r1025_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1025| r1025_2(int *) = Constant[0] :
|
||||
# 1025| v1025_3(void) = Call[operator delete[]] : func:r1025_1, 0:r1025_2
|
||||
# 1025| m1025_4(unknown) = ^CallSideEffect : ~m1024_4
|
||||
# 1025| m1025_5(unknown) = Chi : total:m1024_4, partial:m1025_4
|
||||
# 1026| r1026_1(String *) = Constant[0] :
|
||||
# 1026| r1026_2(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 1026| v1026_3(void) = Call[~String] : func:r1026_2
|
||||
# 1026| m1026_4(unknown) = ^CallSideEffect : ~m1025_5
|
||||
# 1026| m1026_5(unknown) = Chi : total:m1025_5, partial:m1026_4
|
||||
# 1026| v1026_6(void) = ^IndirectReadSideEffect[-1] : &:r1026_1, ~m1026_5
|
||||
# 1026| m1026_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1026_1
|
||||
# 1026| m1026_8(unknown) = Chi : total:m1026_5, partial:m1026_7
|
||||
# 1026| r1026_9(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1026| r1026_10(String *) = CopyValue : r1026_1
|
||||
# 1026| v1026_11(void) = Call[operator delete[]] : func:r1026_9, 0:r1026_10
|
||||
# 1026| m1026_12(unknown) = ^CallSideEffect : ~m1026_8
|
||||
# 1026| m1026_13(unknown) = Chi : total:m1026_8, partial:m1026_12
|
||||
# 1027| r1027_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1027| r1027_2(SizedDealloc *) = Constant[0] :
|
||||
# 1027| v1027_3(void) = Call[operator delete[]] : func:r1027_1, 0:r1027_2
|
||||
# 1027| m1027_4(unknown) = ^CallSideEffect : ~m1026_13
|
||||
# 1027| m1027_5(unknown) = Chi : total:m1026_13, partial:m1027_4
|
||||
# 1028| r1028_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1028| r1028_2(Overaligned *) = Constant[0] :
|
||||
# 1028| v1028_3(void) = Call[operator delete[]] : func:r1028_1, 0:r1028_2
|
||||
# 1028| m1028_4(unknown) = ^CallSideEffect : ~m1027_5
|
||||
# 1028| m1028_5(unknown) = Chi : total:m1027_5, partial:m1028_4
|
||||
# 1029| r1029_1(PolymorphicBase *) = Constant[0] :
|
||||
# 1029| r1029_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] :
|
||||
# 1029| v1029_3(void) = Call[~PolymorphicBase] : func:r1029_2
|
||||
# 1029| m1029_4(unknown) = ^CallSideEffect : ~m1028_5
|
||||
# 1029| m1029_5(unknown) = Chi : total:m1028_5, partial:m1029_4
|
||||
# 1029| v1029_6(void) = ^IndirectReadSideEffect[-1] : &:r1029_1, ~m1029_5
|
||||
# 1029| m1029_7(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1029_1
|
||||
# 1029| m1029_8(unknown) = Chi : total:m1029_5, partial:m1029_7
|
||||
# 1029| r1029_9(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1029| r1029_10(PolymorphicBase *) = CopyValue : r1029_1
|
||||
# 1029| v1029_11(void) = Call[operator delete[]] : func:r1029_9, 0:r1029_10
|
||||
# 1029| m1029_12(unknown) = ^CallSideEffect : ~m1029_8
|
||||
# 1029| m1029_13(unknown) = Chi : total:m1029_8, partial:m1029_12
|
||||
# 1030| v1030_1(void) = NoOp :
|
||||
# 1024| v1024_5(void) = ReturnVoid :
|
||||
# 1024| v1024_6(void) = AliasedUse : ~m1029_13
|
||||
# 1024| v1024_7(void) = ExitFunction :
|
||||
|
||||
# 1034| void EmptyStructInit()
|
||||
# 1034| Block 0
|
||||
@@ -12830,18 +12862,26 @@ ir.cpp:
|
||||
# 2107| m2107_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_8
|
||||
# 2107| m2107_14(unknown) = Chi : total:m2107_7, partial:m2107_13
|
||||
# 2107| m2107_15(Base2 *) = Store[b1] : &:r2107_1, r2107_8
|
||||
# 2108| r2108_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2108| r2108_2(glval<Base2 *>) = VariableAddress[b1] :
|
||||
# 2108| r2108_3(Base2 *) = Load[b1] : &:r2108_2, m2107_15
|
||||
# 2108| v2108_4(void) = Call[?] : func:r2108_1, 0:r2108_3
|
||||
# 2108| r2108_1(glval<Base2 *>) = VariableAddress[b1] :
|
||||
# 2108| r2108_2(Base2 *) = Load[b1] : &:r2108_1, m2107_15
|
||||
# 2108| r2108_3(glval<unknown>) = FunctionAddress[~Base2] :
|
||||
# 2108| v2108_4(void) = Call[~Base2] : func:r2108_3
|
||||
# 2108| m2108_5(unknown) = ^CallSideEffect : ~m2107_12
|
||||
# 2108| m2108_6(unknown) = Chi : total:m2107_12, partial:m2108_5
|
||||
# 2108| v2108_7(void) = ^IndirectReadSideEffect[-1] : &:r2108_2, ~m2107_14
|
||||
# 2108| m2108_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2108_2
|
||||
# 2108| m2108_9(unknown) = Chi : total:m2107_14, partial:m2108_8
|
||||
# 2108| r2108_10(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2108| r2108_11(Base2 *) = CopyValue : r2108_1
|
||||
# 2108| v2108_12(void) = Call[?] : func:r2108_10, 0:r2108_11
|
||||
# 2108| m2108_13(unknown) = ^CallSideEffect : ~m2108_6
|
||||
# 2108| m2108_14(unknown) = Chi : total:m2108_6, partial:m2108_13
|
||||
# 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] :
|
||||
# 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] :
|
||||
# 2110| r2110_3(unsigned long) = Constant[16] :
|
||||
# 2110| r2110_4(void *) = Call[operator new] : func:r2110_2, 0:r2110_3
|
||||
# 2110| m2110_5(unknown) = ^CallSideEffect : ~m2108_6
|
||||
# 2110| m2110_6(unknown) = Chi : total:m2108_6, partial:m2110_5
|
||||
# 2110| m2110_5(unknown) = ^CallSideEffect : ~m2108_14
|
||||
# 2110| m2110_6(unknown) = Chi : total:m2108_14, partial:m2110_5
|
||||
# 2110| m2110_7(unknown) = ^InitializeDynamicAllocation : &:r2110_4
|
||||
# 2110| r2110_8(Derived2 *) = Convert : r2110_4
|
||||
# 2110| r2110_9(glval<unknown>) = FunctionAddress[Derived2] :
|
||||
@@ -12852,18 +12892,26 @@ ir.cpp:
|
||||
# 2110| m2110_14(unknown) = Chi : total:m2110_7, partial:m2110_13
|
||||
# 2110| r2110_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_8
|
||||
# 2110| m2110_16(Base2 *) = Store[b2] : &:r2110_1, r2110_15
|
||||
# 2111| r2111_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2111| r2111_2(glval<Base2 *>) = VariableAddress[b2] :
|
||||
# 2111| r2111_3(Base2 *) = Load[b2] : &:r2111_2, m2110_16
|
||||
# 2111| v2111_4(void) = Call[?] : func:r2111_1, 0:r2111_3
|
||||
# 2111| r2111_1(glval<Base2 *>) = VariableAddress[b2] :
|
||||
# 2111| r2111_2(Base2 *) = Load[b2] : &:r2111_1, m2110_16
|
||||
# 2111| r2111_3(glval<unknown>) = FunctionAddress[~Base2] :
|
||||
# 2111| v2111_4(void) = Call[~Base2] : func:r2111_3
|
||||
# 2111| m2111_5(unknown) = ^CallSideEffect : ~m2110_12
|
||||
# 2111| m2111_6(unknown) = Chi : total:m2110_12, partial:m2111_5
|
||||
# 2111| v2111_7(void) = ^IndirectReadSideEffect[-1] : &:r2111_2, ~m2110_14
|
||||
# 2111| m2111_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_2
|
||||
# 2111| m2111_9(unknown) = Chi : total:m2110_14, partial:m2111_8
|
||||
# 2111| r2111_10(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2111| r2111_11(Base2 *) = CopyValue : r2111_1
|
||||
# 2111| v2111_12(void) = Call[?] : func:r2111_10, 0:r2111_11
|
||||
# 2111| m2111_13(unknown) = ^CallSideEffect : ~m2111_6
|
||||
# 2111| m2111_14(unknown) = Chi : total:m2111_6, partial:m2111_13
|
||||
# 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] :
|
||||
# 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] :
|
||||
# 2113| r2113_3(unsigned long) = Constant[16] :
|
||||
# 2113| r2113_4(void *) = Call[operator new] : func:r2113_2, 0:r2113_3
|
||||
# 2113| m2113_5(unknown) = ^CallSideEffect : ~m2111_6
|
||||
# 2113| m2113_6(unknown) = Chi : total:m2111_6, partial:m2113_5
|
||||
# 2113| m2113_5(unknown) = ^CallSideEffect : ~m2111_14
|
||||
# 2113| m2113_6(unknown) = Chi : total:m2111_14, partial:m2113_5
|
||||
# 2113| m2113_7(unknown) = ^InitializeDynamicAllocation : &:r2113_4
|
||||
# 2113| r2113_8(Derived2 *) = Convert : r2113_4
|
||||
# 2113| r2113_9(glval<unknown>) = FunctionAddress[Derived2] :
|
||||
@@ -12873,17 +12921,25 @@ ir.cpp:
|
||||
# 2113| m2113_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_8
|
||||
# 2113| m2113_14(unknown) = Chi : total:m2113_7, partial:m2113_13
|
||||
# 2113| m2113_15(Derived2 *) = Store[d] : &:r2113_1, r2113_8
|
||||
# 2114| r2114_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2114| r2114_2(glval<Derived2 *>) = VariableAddress[d] :
|
||||
# 2114| r2114_3(Derived2 *) = Load[d] : &:r2114_2, m2113_15
|
||||
# 2114| v2114_4(void) = Call[?] : func:r2114_1, 0:r2114_3
|
||||
# 2114| r2114_1(glval<Derived2 *>) = VariableAddress[d] :
|
||||
# 2114| r2114_2(Derived2 *) = Load[d] : &:r2114_1, m2113_15
|
||||
# 2114| r2114_3(glval<unknown>) = FunctionAddress[~Derived2] :
|
||||
# 2114| v2114_4(void) = Call[~Derived2] : func:r2114_3
|
||||
# 2114| m2114_5(unknown) = ^CallSideEffect : ~m2113_12
|
||||
# 2114| m2114_6(unknown) = Chi : total:m2113_12, partial:m2114_5
|
||||
# 2114| v2114_7(void) = ^IndirectReadSideEffect[-1] : &:r2114_2, ~m2113_14
|
||||
# 2114| m2114_8(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2114_2
|
||||
# 2114| m2114_9(unknown) = Chi : total:m2113_14, partial:m2114_8
|
||||
# 2114| r2114_10(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2114| r2114_11(Derived2 *) = CopyValue : r2114_1
|
||||
# 2114| v2114_12(void) = Call[?] : func:r2114_10, 0:r2114_11
|
||||
# 2114| m2114_13(unknown) = ^CallSideEffect : ~m2114_6
|
||||
# 2114| m2114_14(unknown) = Chi : total:m2114_6, partial:m2114_13
|
||||
# 2115| r2115_1(glval<int>) = VariableAddress[#return] :
|
||||
# 2115| m2115_2(int) = Uninitialized[#return] : &:r2115_1
|
||||
# 2105| r2105_5(glval<int>) = VariableAddress[#return] :
|
||||
# 2105| v2105_6(void) = ReturnValue : &:r2105_5, m2115_2
|
||||
# 2105| v2105_7(void) = AliasedUse : ~m2114_6
|
||||
# 2105| v2105_7(void) = AliasedUse : ~m2114_14
|
||||
# 2105| v2105_8(void) = ExitFunction :
|
||||
|
||||
# 2119| void test_constant_folding()
|
||||
|
||||
@@ -5654,60 +5654,100 @@
|
||||
| ir.cpp:1011:12:1011:12 | Unary | r1011_3 |
|
||||
| ir.cpp:1015:6:1015:19 | ChiPartial | partial:m1015_3 |
|
||||
| ir.cpp:1015:6:1015:19 | ChiTotal | total:m1015_2 |
|
||||
| ir.cpp:1015:6:1015:19 | SideEffect | ~m1020_5 |
|
||||
| ir.cpp:1015:6:1015:19 | SideEffect | ~m1020_13 |
|
||||
| ir.cpp:1016:3:1016:35 | CallTarget | func:r1016_1 |
|
||||
| ir.cpp:1016:3:1016:35 | ChiPartial | partial:m1016_4 |
|
||||
| ir.cpp:1016:3:1016:35 | ChiTotal | total:m1015_4 |
|
||||
| ir.cpp:1016:3:1016:35 | SideEffect | ~m1015_4 |
|
||||
| ir.cpp:1016:10:1016:35 | Arg(0) | 0:r1016_2 |
|
||||
| ir.cpp:1017:3:1017:38 | CallTarget | func:r1017_1 |
|
||||
| ir.cpp:1017:3:1017:38 | CallTarget | func:r1017_2 |
|
||||
| ir.cpp:1017:3:1017:38 | CallTarget | func:r1017_9 |
|
||||
| ir.cpp:1017:3:1017:38 | ChiPartial | partial:m1017_4 |
|
||||
| ir.cpp:1017:3:1017:38 | ChiPartial | partial:m1017_12 |
|
||||
| ir.cpp:1017:3:1017:38 | ChiTotal | total:m1016_5 |
|
||||
| ir.cpp:1017:3:1017:38 | ChiTotal | total:m1017_8 |
|
||||
| ir.cpp:1017:3:1017:38 | SideEffect | ~m1016_5 |
|
||||
| ir.cpp:1017:10:1017:38 | Arg(0) | 0:r1017_2 |
|
||||
| ir.cpp:1017:3:1017:38 | SideEffect | ~m1017_8 |
|
||||
| ir.cpp:1017:10:1017:38 | Address | &:r1017_1 |
|
||||
| ir.cpp:1017:10:1017:38 | Address | &:r1017_1 |
|
||||
| ir.cpp:1017:10:1017:38 | Arg(0) | 0:r1017_10 |
|
||||
| ir.cpp:1017:10:1017:38 | ChiPartial | partial:m1017_7 |
|
||||
| ir.cpp:1017:10:1017:38 | ChiTotal | total:m1017_5 |
|
||||
| ir.cpp:1017:10:1017:38 | SideEffect | ~m1017_5 |
|
||||
| ir.cpp:1017:10:1017:38 | Unary | r1017_1 |
|
||||
| ir.cpp:1018:3:1018:44 | CallTarget | func:r1018_1 |
|
||||
| ir.cpp:1018:3:1018:44 | ChiPartial | partial:m1018_4 |
|
||||
| ir.cpp:1018:3:1018:44 | ChiTotal | total:m1017_5 |
|
||||
| ir.cpp:1018:3:1018:44 | SideEffect | ~m1017_5 |
|
||||
| ir.cpp:1018:3:1018:44 | ChiTotal | total:m1017_13 |
|
||||
| ir.cpp:1018:3:1018:44 | SideEffect | ~m1017_13 |
|
||||
| ir.cpp:1018:10:1018:44 | Arg(0) | 0:r1018_2 |
|
||||
| ir.cpp:1019:3:1019:43 | CallTarget | func:r1019_1 |
|
||||
| ir.cpp:1019:3:1019:43 | ChiPartial | partial:m1019_4 |
|
||||
| ir.cpp:1019:3:1019:43 | ChiTotal | total:m1018_5 |
|
||||
| ir.cpp:1019:3:1019:43 | SideEffect | ~m1018_5 |
|
||||
| ir.cpp:1019:10:1019:43 | Arg(0) | 0:r1019_2 |
|
||||
| ir.cpp:1020:3:1020:47 | CallTarget | func:r1020_1 |
|
||||
| ir.cpp:1020:3:1020:47 | CallTarget | func:r1020_2 |
|
||||
| ir.cpp:1020:3:1020:47 | CallTarget | func:r1020_9 |
|
||||
| ir.cpp:1020:3:1020:47 | ChiPartial | partial:m1020_4 |
|
||||
| ir.cpp:1020:3:1020:47 | ChiPartial | partial:m1020_12 |
|
||||
| ir.cpp:1020:3:1020:47 | ChiTotal | total:m1019_5 |
|
||||
| ir.cpp:1020:3:1020:47 | ChiTotal | total:m1020_8 |
|
||||
| ir.cpp:1020:3:1020:47 | SideEffect | ~m1019_5 |
|
||||
| ir.cpp:1020:10:1020:47 | Arg(0) | 0:r1020_2 |
|
||||
| ir.cpp:1020:3:1020:47 | SideEffect | ~m1020_8 |
|
||||
| ir.cpp:1020:10:1020:47 | Address | &:r1020_1 |
|
||||
| ir.cpp:1020:10:1020:47 | Address | &:r1020_1 |
|
||||
| ir.cpp:1020:10:1020:47 | Arg(0) | 0:r1020_10 |
|
||||
| ir.cpp:1020:10:1020:47 | ChiPartial | partial:m1020_7 |
|
||||
| ir.cpp:1020:10:1020:47 | ChiTotal | total:m1020_5 |
|
||||
| ir.cpp:1020:10:1020:47 | SideEffect | ~m1020_5 |
|
||||
| ir.cpp:1020:10:1020:47 | Unary | r1020_1 |
|
||||
| ir.cpp:1024:6:1024:24 | ChiPartial | partial:m1024_3 |
|
||||
| ir.cpp:1024:6:1024:24 | ChiTotal | total:m1024_2 |
|
||||
| ir.cpp:1024:6:1024:24 | SideEffect | ~m1029_5 |
|
||||
| ir.cpp:1024:6:1024:24 | SideEffect | ~m1029_13 |
|
||||
| ir.cpp:1025:3:1025:37 | CallTarget | func:r1025_1 |
|
||||
| ir.cpp:1025:3:1025:37 | ChiPartial | partial:m1025_4 |
|
||||
| ir.cpp:1025:3:1025:37 | ChiTotal | total:m1024_4 |
|
||||
| ir.cpp:1025:3:1025:37 | SideEffect | ~m1024_4 |
|
||||
| ir.cpp:1025:12:1025:37 | Arg(0) | 0:r1025_2 |
|
||||
| ir.cpp:1026:3:1026:40 | CallTarget | func:r1026_1 |
|
||||
| ir.cpp:1026:3:1026:40 | CallTarget | func:r1026_2 |
|
||||
| ir.cpp:1026:3:1026:40 | CallTarget | func:r1026_9 |
|
||||
| ir.cpp:1026:3:1026:40 | ChiPartial | partial:m1026_4 |
|
||||
| ir.cpp:1026:3:1026:40 | ChiPartial | partial:m1026_12 |
|
||||
| ir.cpp:1026:3:1026:40 | ChiTotal | total:m1025_5 |
|
||||
| ir.cpp:1026:3:1026:40 | ChiTotal | total:m1026_8 |
|
||||
| ir.cpp:1026:3:1026:40 | SideEffect | ~m1025_5 |
|
||||
| ir.cpp:1026:12:1026:40 | Arg(0) | 0:r1026_2 |
|
||||
| ir.cpp:1026:3:1026:40 | SideEffect | ~m1026_8 |
|
||||
| ir.cpp:1026:12:1026:40 | Address | &:r1026_1 |
|
||||
| ir.cpp:1026:12:1026:40 | Address | &:r1026_1 |
|
||||
| ir.cpp:1026:12:1026:40 | Arg(0) | 0:r1026_10 |
|
||||
| ir.cpp:1026:12:1026:40 | ChiPartial | partial:m1026_7 |
|
||||
| ir.cpp:1026:12:1026:40 | ChiTotal | total:m1026_5 |
|
||||
| ir.cpp:1026:12:1026:40 | SideEffect | ~m1026_5 |
|
||||
| ir.cpp:1026:12:1026:40 | Unary | r1026_1 |
|
||||
| ir.cpp:1027:3:1027:46 | CallTarget | func:r1027_1 |
|
||||
| ir.cpp:1027:3:1027:46 | ChiPartial | partial:m1027_4 |
|
||||
| ir.cpp:1027:3:1027:46 | ChiTotal | total:m1026_5 |
|
||||
| ir.cpp:1027:3:1027:46 | SideEffect | ~m1026_5 |
|
||||
| ir.cpp:1027:3:1027:46 | ChiTotal | total:m1026_13 |
|
||||
| ir.cpp:1027:3:1027:46 | SideEffect | ~m1026_13 |
|
||||
| ir.cpp:1027:12:1027:46 | Arg(0) | 0:r1027_2 |
|
||||
| ir.cpp:1028:3:1028:45 | CallTarget | func:r1028_1 |
|
||||
| ir.cpp:1028:3:1028:45 | ChiPartial | partial:m1028_4 |
|
||||
| ir.cpp:1028:3:1028:45 | ChiTotal | total:m1027_5 |
|
||||
| ir.cpp:1028:3:1028:45 | SideEffect | ~m1027_5 |
|
||||
| ir.cpp:1028:12:1028:45 | Arg(0) | 0:r1028_2 |
|
||||
| ir.cpp:1029:3:1029:49 | CallTarget | func:r1029_1 |
|
||||
| ir.cpp:1029:3:1029:49 | CallTarget | func:r1029_2 |
|
||||
| ir.cpp:1029:3:1029:49 | CallTarget | func:r1029_9 |
|
||||
| ir.cpp:1029:3:1029:49 | ChiPartial | partial:m1029_4 |
|
||||
| ir.cpp:1029:3:1029:49 | ChiPartial | partial:m1029_12 |
|
||||
| ir.cpp:1029:3:1029:49 | ChiTotal | total:m1028_5 |
|
||||
| ir.cpp:1029:3:1029:49 | ChiTotal | total:m1029_8 |
|
||||
| ir.cpp:1029:3:1029:49 | SideEffect | ~m1028_5 |
|
||||
| ir.cpp:1029:12:1029:49 | Arg(0) | 0:r1029_2 |
|
||||
| ir.cpp:1029:3:1029:49 | SideEffect | ~m1029_8 |
|
||||
| ir.cpp:1029:12:1029:49 | Address | &:r1029_1 |
|
||||
| ir.cpp:1029:12:1029:49 | Address | &:r1029_1 |
|
||||
| ir.cpp:1029:12:1029:49 | Arg(0) | 0:r1029_10 |
|
||||
| ir.cpp:1029:12:1029:49 | ChiPartial | partial:m1029_7 |
|
||||
| ir.cpp:1029:12:1029:49 | ChiTotal | total:m1029_5 |
|
||||
| ir.cpp:1029:12:1029:49 | SideEffect | ~m1029_5 |
|
||||
| ir.cpp:1029:12:1029:49 | Unary | r1029_1 |
|
||||
| ir.cpp:1034:6:1034:20 | ChiPartial | partial:m1034_3 |
|
||||
| ir.cpp:1034:6:1034:20 | ChiTotal | total:m1034_2 |
|
||||
| ir.cpp:1034:6:1034:20 | SideEffect | m1034_3 |
|
||||
@@ -10620,7 +10660,7 @@
|
||||
| ir.cpp:2105:5:2105:18 | ChiPartial | partial:m2105_3 |
|
||||
| ir.cpp:2105:5:2105:18 | ChiTotal | total:m2105_2 |
|
||||
| ir.cpp:2105:5:2105:18 | Load | m2115_2 |
|
||||
| ir.cpp:2105:5:2105:18 | SideEffect | ~m2114_6 |
|
||||
| ir.cpp:2105:5:2105:18 | SideEffect | ~m2114_14 |
|
||||
| ir.cpp:2107:12:2107:13 | Address | &:r2107_1 |
|
||||
| ir.cpp:2107:17:2107:27 | Address | &:r2107_4 |
|
||||
| ir.cpp:2107:17:2107:27 | Address | &:r2107_8 |
|
||||
@@ -10638,13 +10678,23 @@
|
||||
| ir.cpp:2107:17:2107:27 | SideEffect | ~m2107_6 |
|
||||
| ir.cpp:2107:17:2107:27 | StoreValue | r2107_8 |
|
||||
| ir.cpp:2107:17:2107:27 | Unary | r2107_4 |
|
||||
| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_1 |
|
||||
| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_3 |
|
||||
| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_10 |
|
||||
| ir.cpp:2108:5:2108:13 | ChiPartial | partial:m2108_5 |
|
||||
| ir.cpp:2108:5:2108:13 | ChiPartial | partial:m2108_13 |
|
||||
| ir.cpp:2108:5:2108:13 | ChiTotal | total:m2107_12 |
|
||||
| ir.cpp:2108:5:2108:13 | ChiTotal | total:m2108_6 |
|
||||
| ir.cpp:2108:5:2108:13 | SideEffect | ~m2107_12 |
|
||||
| ir.cpp:2108:5:2108:13 | SideEffect | ~m2108_6 |
|
||||
| ir.cpp:2108:12:2108:13 | Address | &:r2108_1 |
|
||||
| ir.cpp:2108:12:2108:13 | Address | &:r2108_2 |
|
||||
| ir.cpp:2108:12:2108:13 | Arg(0) | 0:r2108_3 |
|
||||
| ir.cpp:2108:12:2108:13 | Address | &:r2108_2 |
|
||||
| ir.cpp:2108:12:2108:13 | Arg(0) | 0:r2108_11 |
|
||||
| ir.cpp:2108:12:2108:13 | ChiPartial | partial:m2108_8 |
|
||||
| ir.cpp:2108:12:2108:13 | ChiTotal | total:m2107_14 |
|
||||
| ir.cpp:2108:12:2108:13 | Load | m2107_15 |
|
||||
| ir.cpp:2108:12:2108:13 | SideEffect | ~m2107_14 |
|
||||
| ir.cpp:2108:12:2108:13 | Unary | r2108_1 |
|
||||
| ir.cpp:2110:12:2110:13 | Address | &:r2110_1 |
|
||||
| ir.cpp:2110:17:2110:30 | Address | &:r2110_4 |
|
||||
| ir.cpp:2110:17:2110:30 | Address | &:r2110_8 |
|
||||
@@ -10655,21 +10705,31 @@
|
||||
| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_5 |
|
||||
| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_11 |
|
||||
| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_13 |
|
||||
| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2108_6 |
|
||||
| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2108_14 |
|
||||
| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_6 |
|
||||
| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_7 |
|
||||
| ir.cpp:2110:17:2110:30 | SideEffect | ~m2108_6 |
|
||||
| ir.cpp:2110:17:2110:30 | SideEffect | ~m2108_14 |
|
||||
| ir.cpp:2110:17:2110:30 | SideEffect | ~m2110_6 |
|
||||
| ir.cpp:2110:17:2110:30 | StoreValue | r2110_15 |
|
||||
| ir.cpp:2110:17:2110:30 | Unary | r2110_4 |
|
||||
| ir.cpp:2110:17:2110:30 | Unary | r2110_8 |
|
||||
| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_1 |
|
||||
| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_3 |
|
||||
| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_10 |
|
||||
| ir.cpp:2111:5:2111:13 | ChiPartial | partial:m2111_5 |
|
||||
| ir.cpp:2111:5:2111:13 | ChiPartial | partial:m2111_13 |
|
||||
| ir.cpp:2111:5:2111:13 | ChiTotal | total:m2110_12 |
|
||||
| ir.cpp:2111:5:2111:13 | ChiTotal | total:m2111_6 |
|
||||
| ir.cpp:2111:5:2111:13 | SideEffect | ~m2110_12 |
|
||||
| ir.cpp:2111:5:2111:13 | SideEffect | ~m2111_6 |
|
||||
| ir.cpp:2111:12:2111:13 | Address | &:r2111_1 |
|
||||
| ir.cpp:2111:12:2111:13 | Address | &:r2111_2 |
|
||||
| ir.cpp:2111:12:2111:13 | Arg(0) | 0:r2111_3 |
|
||||
| ir.cpp:2111:12:2111:13 | Address | &:r2111_2 |
|
||||
| ir.cpp:2111:12:2111:13 | Arg(0) | 0:r2111_11 |
|
||||
| ir.cpp:2111:12:2111:13 | ChiPartial | partial:m2111_8 |
|
||||
| ir.cpp:2111:12:2111:13 | ChiTotal | total:m2110_14 |
|
||||
| ir.cpp:2111:12:2111:13 | Load | m2110_16 |
|
||||
| ir.cpp:2111:12:2111:13 | SideEffect | ~m2110_14 |
|
||||
| ir.cpp:2111:12:2111:13 | Unary | r2111_1 |
|
||||
| ir.cpp:2113:15:2113:15 | Address | &:r2113_1 |
|
||||
| ir.cpp:2113:19:2113:32 | Address | &:r2113_4 |
|
||||
| ir.cpp:2113:19:2113:32 | Address | &:r2113_8 |
|
||||
@@ -10680,20 +10740,30 @@
|
||||
| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_5 |
|
||||
| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_11 |
|
||||
| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_13 |
|
||||
| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2111_6 |
|
||||
| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2111_14 |
|
||||
| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_6 |
|
||||
| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_7 |
|
||||
| ir.cpp:2113:19:2113:32 | SideEffect | ~m2111_6 |
|
||||
| ir.cpp:2113:19:2113:32 | SideEffect | ~m2111_14 |
|
||||
| ir.cpp:2113:19:2113:32 | SideEffect | ~m2113_6 |
|
||||
| ir.cpp:2113:19:2113:32 | StoreValue | r2113_8 |
|
||||
| ir.cpp:2113:19:2113:32 | Unary | r2113_4 |
|
||||
| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_1 |
|
||||
| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_3 |
|
||||
| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_10 |
|
||||
| ir.cpp:2114:5:2114:12 | ChiPartial | partial:m2114_5 |
|
||||
| ir.cpp:2114:5:2114:12 | ChiPartial | partial:m2114_13 |
|
||||
| ir.cpp:2114:5:2114:12 | ChiTotal | total:m2113_12 |
|
||||
| ir.cpp:2114:5:2114:12 | ChiTotal | total:m2114_6 |
|
||||
| ir.cpp:2114:5:2114:12 | SideEffect | ~m2113_12 |
|
||||
| ir.cpp:2114:5:2114:12 | SideEffect | ~m2114_6 |
|
||||
| ir.cpp:2114:12:2114:12 | Address | &:r2114_1 |
|
||||
| ir.cpp:2114:12:2114:12 | Address | &:r2114_2 |
|
||||
| ir.cpp:2114:12:2114:12 | Arg(0) | 0:r2114_3 |
|
||||
| ir.cpp:2114:12:2114:12 | Address | &:r2114_2 |
|
||||
| ir.cpp:2114:12:2114:12 | Arg(0) | 0:r2114_11 |
|
||||
| ir.cpp:2114:12:2114:12 | ChiPartial | partial:m2114_8 |
|
||||
| ir.cpp:2114:12:2114:12 | ChiTotal | total:m2113_14 |
|
||||
| ir.cpp:2114:12:2114:12 | Load | m2113_15 |
|
||||
| ir.cpp:2114:12:2114:12 | SideEffect | ~m2113_14 |
|
||||
| ir.cpp:2114:12:2114:12 | Unary | r2114_1 |
|
||||
| ir.cpp:2115:1:2115:1 | Address | &:r2115_1 |
|
||||
| ir.cpp:2119:6:2119:26 | ChiPartial | partial:m2119_3 |
|
||||
| ir.cpp:2119:6:2119:26 | ChiTotal | total:m2119_2 |
|
||||
|
||||
@@ -6226,33 +6226,45 @@ ir.cpp:
|
||||
|
||||
# 1015| void OperatorDelete()
|
||||
# 1015| Block 0
|
||||
# 1015| v1015_1(void) = EnterFunction :
|
||||
# 1015| mu1015_2(unknown) = AliasedDefinition :
|
||||
# 1015| mu1015_3(unknown) = InitializeNonLocal :
|
||||
# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1016| r1016_2(int *) = Constant[0] :
|
||||
# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2
|
||||
# 1016| mu1016_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1017| r1017_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1017| r1017_2(String *) = Constant[0] :
|
||||
# 1017| v1017_3(void) = Call[operator delete] : func:r1017_1, 0:r1017_2
|
||||
# 1017| mu1017_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1018| r1018_2(SizedDealloc *) = Constant[0] :
|
||||
# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2
|
||||
# 1018| mu1018_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1019| r1019_2(Overaligned *) = Constant[0] :
|
||||
# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2
|
||||
# 1019| mu1019_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1020| r1020_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 1020| r1020_2(PolymorphicBase *) = Constant[0] :
|
||||
# 1020| v1020_3(void) = Call[?] : func:r1020_1, 0:r1020_2
|
||||
# 1020| mu1020_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1021| v1021_1(void) = NoOp :
|
||||
# 1015| v1015_4(void) = ReturnVoid :
|
||||
# 1015| v1015_5(void) = AliasedUse : ~m?
|
||||
# 1015| v1015_6(void) = ExitFunction :
|
||||
# 1015| v1015_1(void) = EnterFunction :
|
||||
# 1015| mu1015_2(unknown) = AliasedDefinition :
|
||||
# 1015| mu1015_3(unknown) = InitializeNonLocal :
|
||||
# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1016| r1016_2(int *) = Constant[0] :
|
||||
# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2
|
||||
# 1016| mu1016_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1017| r1017_1(String *) = Constant[0] :
|
||||
# 1017| r1017_2(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 1017| v1017_3(void) = Call[~String] : func:r1017_2
|
||||
# 1017| mu1017_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1017| v1017_5(void) = ^IndirectReadSideEffect[-1] : &:r1017_1, ~m?
|
||||
# 1017| mu1017_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1017_1
|
||||
# 1017| r1017_7(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1017| r1017_8(String *) = CopyValue : r1017_1
|
||||
# 1017| v1017_9(void) = Call[operator delete] : func:r1017_7, 0:r1017_8
|
||||
# 1017| mu1017_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1018| r1018_2(SizedDealloc *) = Constant[0] :
|
||||
# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2
|
||||
# 1018| mu1018_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] :
|
||||
# 1019| r1019_2(Overaligned *) = Constant[0] :
|
||||
# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2
|
||||
# 1019| mu1019_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1020| r1020_1(PolymorphicBase *) = Constant[0] :
|
||||
# 1020| r1020_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] :
|
||||
# 1020| v1020_3(void) = Call[~PolymorphicBase] : func:r1020_2
|
||||
# 1020| mu1020_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1020| v1020_5(void) = ^IndirectReadSideEffect[-1] : &:r1020_1, ~m?
|
||||
# 1020| mu1020_6(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1020_1
|
||||
# 1020| r1020_7(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 1020| r1020_8(PolymorphicBase *) = CopyValue : r1020_1
|
||||
# 1020| v1020_9(void) = Call[?] : func:r1020_7, 0:r1020_8
|
||||
# 1020| mu1020_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 1021| v1021_1(void) = NoOp :
|
||||
# 1015| v1015_4(void) = ReturnVoid :
|
||||
# 1015| v1015_5(void) = AliasedUse : ~m?
|
||||
# 1015| v1015_6(void) = ExitFunction :
|
||||
|
||||
# 1024| void OperatorDeleteArray()
|
||||
# 1024| Block 0
|
||||
@@ -6263,10 +6275,16 @@ ir.cpp:
|
||||
# 1025| r1025_2(int *) = Constant[0] :
|
||||
# 1025| v1025_3(void) = Call[operator delete[]] : func:r1025_1, 0:r1025_2
|
||||
# 1025| mu1025_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1026| r1026_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1026| r1026_2(String *) = Constant[0] :
|
||||
# 1026| v1026_3(void) = Call[operator delete[]] : func:r1026_1, 0:r1026_2
|
||||
# 1026| r1026_1(String *) = Constant[0] :
|
||||
# 1026| r1026_2(glval<unknown>) = FunctionAddress[~String] :
|
||||
# 1026| v1026_3(void) = Call[~String] : func:r1026_2
|
||||
# 1026| mu1026_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1026| v1026_5(void) = ^IndirectReadSideEffect[-1] : &:r1026_1, ~m?
|
||||
# 1026| mu1026_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1026_1
|
||||
# 1026| r1026_7(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1026| r1026_8(String *) = CopyValue : r1026_1
|
||||
# 1026| v1026_9(void) = Call[operator delete[]] : func:r1026_7, 0:r1026_8
|
||||
# 1026| mu1026_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 1027| r1027_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1027| r1027_2(SizedDealloc *) = Constant[0] :
|
||||
# 1027| v1027_3(void) = Call[operator delete[]] : func:r1027_1, 0:r1027_2
|
||||
@@ -6275,10 +6293,16 @@ ir.cpp:
|
||||
# 1028| r1028_2(Overaligned *) = Constant[0] :
|
||||
# 1028| v1028_3(void) = Call[operator delete[]] : func:r1028_1, 0:r1028_2
|
||||
# 1028| mu1028_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1029| r1029_1(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1029| r1029_2(PolymorphicBase *) = Constant[0] :
|
||||
# 1029| v1029_3(void) = Call[operator delete[]] : func:r1029_1, 0:r1029_2
|
||||
# 1029| r1029_1(PolymorphicBase *) = Constant[0] :
|
||||
# 1029| r1029_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] :
|
||||
# 1029| v1029_3(void) = Call[~PolymorphicBase] : func:r1029_2
|
||||
# 1029| mu1029_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1029| v1029_5(void) = ^IndirectReadSideEffect[-1] : &:r1029_1, ~m?
|
||||
# 1029| mu1029_6(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1029_1
|
||||
# 1029| r1029_7(glval<unknown>) = FunctionAddress[operator delete[]] :
|
||||
# 1029| r1029_8(PolymorphicBase *) = CopyValue : r1029_1
|
||||
# 1029| v1029_9(void) = Call[operator delete[]] : func:r1029_7, 0:r1029_8
|
||||
# 1029| mu1029_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 1030| v1030_1(void) = NoOp :
|
||||
# 1024| v1024_4(void) = ReturnVoid :
|
||||
# 1024| v1024_5(void) = AliasedUse : ~m?
|
||||
@@ -11938,11 +11962,17 @@ ir.cpp:
|
||||
# 2107| mu2107_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 2107| mu2107_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_7
|
||||
# 2107| mu2107_12(Base2 *) = Store[b1] : &:r2107_1, r2107_7
|
||||
# 2108| r2108_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2108| r2108_2(glval<Base2 *>) = VariableAddress[b1] :
|
||||
# 2108| r2108_3(Base2 *) = Load[b1] : &:r2108_2, ~m?
|
||||
# 2108| v2108_4(void) = Call[?] : func:r2108_1, 0:r2108_3
|
||||
# 2108| r2108_1(glval<Base2 *>) = VariableAddress[b1] :
|
||||
# 2108| r2108_2(Base2 *) = Load[b1] : &:r2108_1, ~m?
|
||||
# 2108| r2108_3(glval<unknown>) = FunctionAddress[~Base2] :
|
||||
# 2108| v2108_4(void) = Call[~Base2] : func:r2108_3
|
||||
# 2108| mu2108_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2108| v2108_6(void) = ^IndirectReadSideEffect[-1] : &:r2108_2, ~m?
|
||||
# 2108| mu2108_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2108_2
|
||||
# 2108| r2108_8(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2108| r2108_9(Base2 *) = CopyValue : r2108_1
|
||||
# 2108| v2108_10(void) = Call[?] : func:r2108_8, 0:r2108_9
|
||||
# 2108| mu2108_11(unknown) = ^CallSideEffect : ~m?
|
||||
# 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] :
|
||||
# 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] :
|
||||
# 2110| r2110_3(unsigned long) = Constant[16] :
|
||||
@@ -11956,11 +11986,17 @@ ir.cpp:
|
||||
# 2110| mu2110_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2110_7
|
||||
# 2110| r2110_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_7
|
||||
# 2110| mu2110_13(Base2 *) = Store[b2] : &:r2110_1, r2110_12
|
||||
# 2111| r2111_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2111| r2111_2(glval<Base2 *>) = VariableAddress[b2] :
|
||||
# 2111| r2111_3(Base2 *) = Load[b2] : &:r2111_2, ~m?
|
||||
# 2111| v2111_4(void) = Call[?] : func:r2111_1, 0:r2111_3
|
||||
# 2111| r2111_1(glval<Base2 *>) = VariableAddress[b2] :
|
||||
# 2111| r2111_2(Base2 *) = Load[b2] : &:r2111_1, ~m?
|
||||
# 2111| r2111_3(glval<unknown>) = FunctionAddress[~Base2] :
|
||||
# 2111| v2111_4(void) = Call[~Base2] : func:r2111_3
|
||||
# 2111| mu2111_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2111| v2111_6(void) = ^IndirectReadSideEffect[-1] : &:r2111_2, ~m?
|
||||
# 2111| mu2111_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_2
|
||||
# 2111| r2111_8(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2111| r2111_9(Base2 *) = CopyValue : r2111_1
|
||||
# 2111| v2111_10(void) = Call[?] : func:r2111_8, 0:r2111_9
|
||||
# 2111| mu2111_11(unknown) = ^CallSideEffect : ~m?
|
||||
# 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] :
|
||||
# 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] :
|
||||
# 2113| r2113_3(unsigned long) = Constant[16] :
|
||||
@@ -11973,11 +12009,17 @@ ir.cpp:
|
||||
# 2113| mu2113_10(unknown) = ^CallSideEffect : ~m?
|
||||
# 2113| mu2113_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_7
|
||||
# 2113| mu2113_12(Derived2 *) = Store[d] : &:r2113_1, r2113_7
|
||||
# 2114| r2114_1(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2114| r2114_2(glval<Derived2 *>) = VariableAddress[d] :
|
||||
# 2114| r2114_3(Derived2 *) = Load[d] : &:r2114_2, ~m?
|
||||
# 2114| v2114_4(void) = Call[?] : func:r2114_1, 0:r2114_3
|
||||
# 2114| r2114_1(glval<Derived2 *>) = VariableAddress[d] :
|
||||
# 2114| r2114_2(Derived2 *) = Load[d] : &:r2114_1, ~m?
|
||||
# 2114| r2114_3(glval<unknown>) = FunctionAddress[~Derived2] :
|
||||
# 2114| v2114_4(void) = Call[~Derived2] : func:r2114_3
|
||||
# 2114| mu2114_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2114| v2114_6(void) = ^IndirectReadSideEffect[-1] : &:r2114_2, ~m?
|
||||
# 2114| mu2114_7(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2114_2
|
||||
# 2114| r2114_8(glval<unknown>) = VirtualDeleteFunctionAddress :
|
||||
# 2114| r2114_9(Derived2 *) = CopyValue : r2114_1
|
||||
# 2114| v2114_10(void) = Call[?] : func:r2114_8, 0:r2114_9
|
||||
# 2114| mu2114_11(unknown) = ^CallSideEffect : ~m?
|
||||
# 2115| r2115_1(glval<int>) = VariableAddress[#return] :
|
||||
# 2115| mu2115_2(int) = Uninitialized[#return] : &:r2115_1
|
||||
# 2105| r2105_4(glval<int>) = VariableAddress[#return] :
|
||||
|
||||
@@ -41,16 +41,16 @@ nodes
|
||||
| test_free.cpp:302:12:302:14 | buf | semmle.label | buf |
|
||||
subpaths
|
||||
#select
|
||||
| test_free.cpp:14:10:14:10 | a | test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:14:10:14:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:11:5:11:8 | call to free | call to free |
|
||||
| test_free.cpp:31:27:31:27 | a | test_free.cpp:30:10:30:10 | pointer to free output argument | test_free.cpp:31:27:31:27 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:30:5:30:8 | call to free | call to free |
|
||||
| test_free.cpp:37:27:37:27 | a | test_free.cpp:35:10:35:10 | pointer to free output argument | test_free.cpp:37:27:37:27 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:35:5:35:8 | call to free | call to free |
|
||||
| test_free.cpp:46:10:46:10 | a | test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:42:22:42:25 | call to free | call to free |
|
||||
| test_free.cpp:46:10:46:10 | a | test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:44:22:44:25 | call to free | call to free |
|
||||
| test_free.cpp:51:10:51:10 | a | test_free.cpp:50:27:50:27 | pointer to free output argument | test_free.cpp:51:10:51:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:50:22:50:25 | call to free | call to free |
|
||||
| test_free.cpp:72:14:72:14 | a | test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:72:14:72:14 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:69:5:69:8 | call to free | call to free |
|
||||
| test_free.cpp:85:12:85:12 | a | test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:83:5:83:13 | delete | delete |
|
||||
| test_free.cpp:103:10:103:10 | a | test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:101:5:101:8 | call to free | call to free |
|
||||
| test_free.cpp:129:10:129:11 | * ... | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | Memory pointed to by '* ...' may already have been freed by $@. | test_free.cpp:128:5:128:8 | call to free | call to free |
|
||||
| test_free.cpp:154:10:154:10 | a | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:152:22:152:25 | call to free | call to free |
|
||||
| test_free.cpp:209:10:209:10 | a | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:207:5:207:8 | call to free | call to free |
|
||||
| test_free.cpp:302:12:302:14 | buf | test_free.cpp:301:12:301:14 | pointer to g_free output argument | test_free.cpp:302:12:302:14 | buf | Memory pointed to by 'buf' may already have been freed by $@. | test_free.cpp:301:5:301:10 | call to g_free | call to g_free |
|
||||
| test_free.cpp:14:10:14:10 | a | test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:14:10:14:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:14:10:14:10 | a | a | test_free.cpp:11:5:11:8 | call to free | call to free |
|
||||
| test_free.cpp:31:27:31:27 | a | test_free.cpp:30:10:30:10 | pointer to free output argument | test_free.cpp:31:27:31:27 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:31:27:31:27 | a | a | test_free.cpp:30:5:30:8 | call to free | call to free |
|
||||
| test_free.cpp:37:27:37:27 | a | test_free.cpp:35:10:35:10 | pointer to free output argument | test_free.cpp:37:27:37:27 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:37:27:37:27 | a | a | test_free.cpp:35:5:35:8 | call to free | call to free |
|
||||
| test_free.cpp:46:10:46:10 | a | test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:46:10:46:10 | a | a | test_free.cpp:42:22:42:25 | call to free | call to free |
|
||||
| test_free.cpp:46:10:46:10 | a | test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:46:10:46:10 | a | a | test_free.cpp:44:22:44:25 | call to free | call to free |
|
||||
| test_free.cpp:51:10:51:10 | a | test_free.cpp:50:27:50:27 | pointer to free output argument | test_free.cpp:51:10:51:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:51:10:51:10 | a | a | test_free.cpp:50:22:50:25 | call to free | call to free |
|
||||
| test_free.cpp:72:14:72:14 | a | test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:72:14:72:14 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:72:14:72:14 | a | a | test_free.cpp:69:5:69:8 | call to free | call to free |
|
||||
| test_free.cpp:85:12:85:12 | a | test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:85:12:85:12 | a | a | test_free.cpp:83:5:83:13 | delete | delete |
|
||||
| test_free.cpp:103:10:103:10 | a | test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:103:10:103:10 | a | a | test_free.cpp:101:5:101:8 | call to free | call to free |
|
||||
| test_free.cpp:129:10:129:11 | * ... | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:129:10:129:11 | * ... | * ... | test_free.cpp:128:5:128:8 | call to free | call to free |
|
||||
| test_free.cpp:154:10:154:10 | a | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:154:10:154:10 | a | a | test_free.cpp:152:22:152:25 | call to free | call to free |
|
||||
| test_free.cpp:209:10:209:10 | a | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:209:10:209:10 | a | a | test_free.cpp:207:5:207:8 | call to free | call to free |
|
||||
| test_free.cpp:302:12:302:14 | buf | test_free.cpp:301:12:301:14 | pointer to g_free output argument | test_free.cpp:302:12:302:14 | buf | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:302:12:302:14 | buf | buf | test_free.cpp:301:5:301:10 | call to g_free | call to g_free |
|
||||
|
||||
@@ -399,10 +399,8 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
}
|
||||
|
||||
private CSharpAutobuilder CreateAutoBuilder(bool isWindows,
|
||||
string? buildless = null, string? solution = null, string? buildCommand = null, string? ignoreErrors = null,
|
||||
string? msBuildArguments = null, string? msBuildPlatform = null, string? msBuildConfiguration = null, string? msBuildTarget = null,
|
||||
string? dotnetArguments = null, string? dotnetVersion = null, string? vsToolsVersion = null,
|
||||
string? nugetRestore = null, string? allSolutions = null,
|
||||
string? buildless = null,
|
||||
string? dotnetVersion = null,
|
||||
string cwd = @"C:\Project")
|
||||
{
|
||||
var codeqlUpperLanguage = Language.CSharp.UpperCaseName;
|
||||
@@ -412,20 +410,9 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
actions.GetEnvironmentVariable[$"CODEQL_EXTRACTOR_{codeqlUpperLanguage}_DIAGNOSTIC_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_JAVA_HOME"] = @"C:\codeql\tools\java";
|
||||
actions.GetEnvironmentVariable["CODEQL_PLATFORM"] = isWindows ? "win64" : "linux64";
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_VSTOOLS_VERSION"] = vsToolsVersion;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_ARGUMENTS"] = msBuildArguments;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_PLATFORM"] = msBuildPlatform;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_CONFIGURATION"] = msBuildConfiguration;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_TARGET"] = msBuildTarget;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_ARGUMENTS"] = dotnetArguments;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_VERSION"] = dotnetVersion;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_BUILD_COMMAND"] = buildCommand;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_SOLUTION"] = solution;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_IGNORE_ERRORS"] = ignoreErrors;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_BUILDLESS"] = buildless;
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS"] = buildless;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_ALL_SOLUTIONS"] = allSolutions;
|
||||
actions.GetEnvironmentVariable["LGTM_INDEX_NUGET_RESTORE"] = nugetRestore;
|
||||
if (dotnetVersion is not null)
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_OPTION_DOTNET_VERSION"] = dotnetVersion;
|
||||
actions.GetEnvironmentVariable["ProgramFiles(x86)"] = isWindows ? @"C:\Program Files (x86)" : null;
|
||||
actions.GetCurrentDirectory = cwd;
|
||||
actions.IsWindows = isWindows;
|
||||
@@ -600,15 +587,6 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
TestAutobuilderScript(autobuilder, 0, 1);
|
||||
}
|
||||
|
||||
private void SkipVsWhere()
|
||||
{
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = false;
|
||||
}
|
||||
|
||||
private void TestAutobuilderScript(CSharpAutobuilder autobuilder, int expectedOutput, int commandsRun)
|
||||
{
|
||||
Assert.Equal(expectedOutput, autobuilder.GetBuildScript().Run(actions, StartCallback, EndCallback));
|
||||
@@ -628,23 +606,6 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestLinuxBuildCommand()
|
||||
{
|
||||
actions.RunProcess["./build.sh --skip-tests"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.sln";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = "";
|
||||
|
||||
SkipVsWhere();
|
||||
|
||||
var autobuilder = CreateAutoBuilder(false, buildCommand: "./build.sh --skip-tests");
|
||||
TestAutobuilderScript(autobuilder, 0, 1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestLinuxBuildSh()
|
||||
{
|
||||
@@ -714,177 +675,6 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
TestAutobuilderScript(autobuilder, 0, 1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWindowsBuildBatIgnoreErrors()
|
||||
{
|
||||
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\nbuild.bat";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.RunProcess[@"cmd.exe /C C:\Project\build.bat"] = 1;
|
||||
actions.RunProcessWorkingDirectory[@"cmd.exe /C C:\Project\build.bat"] = @"C:\Project";
|
||||
actions.RunProcess[@"cmd.exe /C C:\codeql\tools\java\bin\java -jar C:\codeql\csharp\tools\extractor-asp.jar ."] = 0;
|
||||
actions.RunProcess[@"cmd.exe /C C:\codeql\tools\codeql index --xml --extensions config"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
|
||||
var autobuilder = CreateAutoBuilder(true, ignoreErrors: "true");
|
||||
TestAutobuilderScript(autobuilder, 1, 1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWindowsCmdIgnoreErrors()
|
||||
{
|
||||
actions.RunProcess["cmd.exe /C ^\"build.cmd^ --skip-tests^\""] = 3;
|
||||
actions.RunProcess[@"cmd.exe /C C:\codeql\tools\java\bin\java -jar C:\codeql\csharp\tools\extractor-asp.jar ."] = 0;
|
||||
actions.RunProcess[@"cmd.exe /C C:\codeql\tools\codeql index --xml --extensions config"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
SkipVsWhere();
|
||||
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.sln";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = "";
|
||||
|
||||
var autobuilder = CreateAutoBuilder(true, buildCommand: "build.cmd --skip-tests", ignoreErrors: "true");
|
||||
TestAutobuilderScript(autobuilder, 3, 1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWindowCSharpMsBuild()
|
||||
{
|
||||
actions.RunProcess[@"cmd.exe /C C:\Project\.nuget\nuget.exe restore C:\Project\test1.sln -DisableParallelProcessing"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
|
||||
actions.RunProcess[@"cmd.exe /C C:\Project\.nuget\nuget.exe restore C:\Project\test2.sln -DisableParallelProcessing"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true;
|
||||
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest1.cs\ntest2.cs";
|
||||
actions.EnumerateFiles[@"C:\Project\.nuget"] = "nuget.exe";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = @".nuget";
|
||||
actions.EnumerateDirectories[@"C:\Project\.nuget"] = "";
|
||||
|
||||
var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug",
|
||||
vsToolsVersion: "12", allSolutions: "true");
|
||||
var testSolution1 = new TestSolution(@"C:\Project\test1.sln");
|
||||
var testSolution2 = new TestSolution(@"C:\Project\test2.sln");
|
||||
autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution1);
|
||||
autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution2);
|
||||
|
||||
TestAutobuilderScript(autobuilder, 0, 4);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWindowCSharpMsBuildMultipleSolutions()
|
||||
{
|
||||
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test1.csproj -DisableParallelProcessing"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.csproj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
|
||||
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test2.csproj -DisableParallelProcessing"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.csproj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
actions.FileExists[@"C:\Project\test1.csproj"] = true;
|
||||
actions.FileExists[@"C:\Project\test2.csproj"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true;
|
||||
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.EnumerateFiles[@"C:\Project"] = "test1.csproj\ntest2.csproj\ntest1.cs\ntest2.cs";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = "";
|
||||
|
||||
var csproj1 = new XmlDocument();
|
||||
csproj1.LoadXml(@"<?xml version=""1.0"" encoding=""utf - 8""?>
|
||||
<Project ToolsVersion=""15.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
|
||||
<ItemGroup>
|
||||
<Compile Include=""test1.cs"" />
|
||||
</ItemGroup>
|
||||
</Project>");
|
||||
actions.LoadXml[@"C:\Project\test1.csproj"] = csproj1;
|
||||
|
||||
var csproj2 = new XmlDocument();
|
||||
csproj2.LoadXml(@"<?xml version=""1.0"" encoding=""utf - 8""?>
|
||||
<Project ToolsVersion=""15.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
|
||||
<ItemGroup>
|
||||
<Compile Include=""test1.cs"" />
|
||||
</ItemGroup>
|
||||
</Project>");
|
||||
actions.LoadXml[@"C:\Project\test2.csproj"] = csproj2;
|
||||
|
||||
var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug",
|
||||
vsToolsVersion: "12");
|
||||
|
||||
TestAutobuilderScript(autobuilder, 0, 4);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWindowCSharpMsBuildFailed()
|
||||
{
|
||||
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test1.sln -DisableParallelProcessing"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 1;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true;
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest1.cs\ntest2.cs";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = "";
|
||||
|
||||
var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug",
|
||||
vsToolsVersion: "12", allSolutions: "true");
|
||||
var testSolution1 = new TestSolution(@"C:\Project\test1.sln");
|
||||
var testSolution2 = new TestSolution(@"C:\Project\test2.sln");
|
||||
autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution1);
|
||||
autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution2);
|
||||
|
||||
TestAutobuilderScript(autobuilder, 1, 2);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void TestSkipNugetMsBuild()
|
||||
{
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false;
|
||||
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true;
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest1.cs\ntest2.cs";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = "";
|
||||
|
||||
var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows",
|
||||
msBuildPlatform: "x86", msBuildConfiguration: "Debug", vsToolsVersion: "12",
|
||||
allSolutions: "true", nugetRestore: "false");
|
||||
var testSolution1 = new TestSolution(@"C:\Project\test1.sln");
|
||||
var testSolution2 = new TestSolution(@"C:\Project\test2.sln");
|
||||
autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution1);
|
||||
autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution2);
|
||||
|
||||
TestAutobuilderScript(autobuilder, 0, 2);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestSkipNugetBuildless()
|
||||
{
|
||||
@@ -900,35 +690,6 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
TestAutobuilderScript(autobuilder, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void TestSkipNugetDotnet()
|
||||
{
|
||||
actions.RunProcess["dotnet --info"] = 0;
|
||||
actions.RunProcess[@"dotnet clean C:\Project/test.csproj"] = 0;
|
||||
actions.RunProcess[@"dotnet restore C:\Project/test.csproj"] = 0;
|
||||
actions.RunProcess[@"dotnet build --no-incremental --no-restore C:\Project/test.csproj"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
actions.FileExists[@"C:\Project/test.csproj"] = true;
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
|
||||
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch";
|
||||
actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.cs\ntest.csproj";
|
||||
actions.EnumerateDirectories[@"C:\Project"] = "";
|
||||
var xml = new XmlDocument();
|
||||
xml.LoadXml(@"<Project Sdk=""Microsoft.NET.Sdk"">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>");
|
||||
actions.LoadXml[@"C:\Project/test.csproj"] = xml;
|
||||
|
||||
var autobuilder = CreateAutoBuilder(false, dotnetArguments: "--no-restore"); // nugetRestore=false does not work for now.
|
||||
TestAutobuilderScript(autobuilder, 0, 4);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestDotnetVersionNotInstalled()
|
||||
{
|
||||
@@ -1053,7 +814,7 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
{
|
||||
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\dirs.proj -DisableParallelProcessing"] = 1;
|
||||
actions.RunProcess[@"cmd.exe /C scratch\.nuget\nuget.exe restore C:\Project\dirs.proj -DisableParallelProcessing"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\dirs.proj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
|
||||
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\dirs.proj /t:rebuild"] = 0;
|
||||
actions.FileExists["csharp.log"] = true;
|
||||
actions.FileExists[@"C:\Project\a\test.csproj"] = true;
|
||||
actions.FileExists[@"C:\Project\dirs.proj"] = true;
|
||||
@@ -1088,8 +849,7 @@ namespace Semmle.Autobuild.CSharp.Tests
|
||||
</Project>");
|
||||
actions.LoadXml[@"C:\Project\dirs.proj"] = dirsproj;
|
||||
|
||||
var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug",
|
||||
vsToolsVersion: "12", allSolutions: "true");
|
||||
var autobuilder = CreateAutoBuilder(true);
|
||||
TestAutobuilderScript(autobuilder, 0, 3);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,9 +25,11 @@ namespace Semmle.Autobuild.CSharp
|
||||
/// </summary>
|
||||
public CSharpAutobuildOptions(IBuildActions actions) : base(actions)
|
||||
{
|
||||
Buildless = actions.GetEnvironmentVariable(lgtmPrefix + "BUILDLESS").AsBool("buildless", false) ||
|
||||
Buildless =
|
||||
actions.GetEnvironmentVariable(extractorOptionPrefix + "BUILDLESS").AsBool("buildless", false) ||
|
||||
actions.GetEnvironmentVariable(buildModeEnvironmentVariable)?.ToLower() == "none";
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,21 +48,12 @@ namespace Semmle.Autobuild.CSharp
|
||||
var attempt = BuildScript.Failure;
|
||||
switch (GetCSharpBuildStrategy())
|
||||
{
|
||||
case CSharpBuildStrategy.CustomBuildCommand:
|
||||
attempt = new BuildCommandRule(DotNetRule.WithDotNet).Analyse(this, false) & CheckExtractorRun(true);
|
||||
break;
|
||||
case CSharpBuildStrategy.Buildless:
|
||||
// No need to check that the extractor has been executed in buildless mode
|
||||
attempt = BuildScript.Bind(
|
||||
AddBuildlessStartedDiagnostic() & new StandaloneBuildRule().Analyse(this, false),
|
||||
AddBuildlessEndedDiagnostic);
|
||||
break;
|
||||
case CSharpBuildStrategy.MSBuild:
|
||||
attempt = new MsBuildRule().Analyse(this, false) & CheckExtractorRun(true);
|
||||
break;
|
||||
case CSharpBuildStrategy.DotNet:
|
||||
attempt = new DotNetRule().Analyse(this, false) & CheckExtractorRun(true);
|
||||
break;
|
||||
case CSharpBuildStrategy.Auto:
|
||||
attempt =
|
||||
// Attempt a few different build strategies to see if one works
|
||||
@@ -246,32 +239,15 @@ namespace Semmle.Autobuild.CSharp
|
||||
/// </summary>
|
||||
private CSharpBuildStrategy GetCSharpBuildStrategy()
|
||||
{
|
||||
if (Options.BuildCommand is not null)
|
||||
return CSharpBuildStrategy.CustomBuildCommand;
|
||||
|
||||
if (Options.Buildless)
|
||||
return CSharpBuildStrategy.Buildless;
|
||||
|
||||
if (Options.MsBuildArguments is not null
|
||||
|| Options.MsBuildConfiguration is not null
|
||||
|| Options.MsBuildPlatform is not null
|
||||
|| Options.MsBuildTarget is not null)
|
||||
{
|
||||
return CSharpBuildStrategy.MSBuild;
|
||||
}
|
||||
|
||||
if (Options.DotNetArguments is not null || Options.DotNetVersion is not null)
|
||||
return CSharpBuildStrategy.DotNet;
|
||||
|
||||
return CSharpBuildStrategy.Auto;
|
||||
}
|
||||
|
||||
private enum CSharpBuildStrategy
|
||||
{
|
||||
CustomBuildCommand,
|
||||
Buildless,
|
||||
MSBuild,
|
||||
DotNet,
|
||||
Auto
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,8 +150,7 @@ namespace Semmle.Autobuild.CSharp
|
||||
Argument("--no-incremental");
|
||||
|
||||
return
|
||||
script.Argument(builder.Options.DotNetArguments).
|
||||
QuoteArgument(projOrSln).
|
||||
script.QuoteArgument(projOrSln).
|
||||
Script;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,24 +11,9 @@ namespace Semmle.Autobuild.Shared
|
||||
/// </summary>
|
||||
public abstract class AutobuildOptionsShared
|
||||
{
|
||||
protected const string lgtmPrefix = "LGTM_INDEX_";
|
||||
|
||||
|
||||
public int SearchDepth { get; } = 3;
|
||||
public string RootDirectory { get; }
|
||||
public string? VsToolsVersion { get; }
|
||||
public string? MsBuildArguments { get; }
|
||||
public string? MsBuildPlatform { get; }
|
||||
public string? MsBuildConfiguration { get; }
|
||||
public string? MsBuildTarget { get; }
|
||||
public string? DotNetArguments { get; }
|
||||
public string? DotNetVersion { get; }
|
||||
public string? BuildCommand { get; }
|
||||
public IEnumerable<string> Solution { get; }
|
||||
public bool IgnoreErrors { get; }
|
||||
|
||||
public bool AllSolutions { get; }
|
||||
public bool NugetRestore { get; }
|
||||
public abstract Language Language { get; }
|
||||
|
||||
/// <summary>
|
||||
@@ -38,19 +23,7 @@ namespace Semmle.Autobuild.Shared
|
||||
public AutobuildOptionsShared(IBuildActions actions)
|
||||
{
|
||||
RootDirectory = actions.GetCurrentDirectory();
|
||||
VsToolsVersion = actions.GetEnvironmentVariable(lgtmPrefix + "VSTOOLS_VERSION");
|
||||
MsBuildArguments = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_ARGUMENTS")?.AsStringWithExpandedEnvVars(actions);
|
||||
MsBuildPlatform = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_PLATFORM");
|
||||
MsBuildConfiguration = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_CONFIGURATION");
|
||||
MsBuildTarget = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_TARGET");
|
||||
DotNetArguments = actions.GetEnvironmentVariable(lgtmPrefix + "DOTNET_ARGUMENTS")?.AsStringWithExpandedEnvVars(actions);
|
||||
DotNetVersion = actions.GetEnvironmentVariable(lgtmPrefix + "DOTNET_VERSION");
|
||||
BuildCommand = actions.GetEnvironmentVariable(lgtmPrefix + "BUILD_COMMAND");
|
||||
Solution = actions.GetEnvironmentVariable(lgtmPrefix + "SOLUTION").AsListWithExpandedEnvVars(actions, Array.Empty<string>());
|
||||
|
||||
IgnoreErrors = actions.GetEnvironmentVariable(lgtmPrefix + "IGNORE_ERRORS").AsBool("ignore_errors", false);
|
||||
AllSolutions = actions.GetEnvironmentVariable(lgtmPrefix + "ALL_SOLUTIONS").AsBool("all_solutions", false);
|
||||
NugetRestore = actions.GetEnvironmentVariable(lgtmPrefix + "NUGET_RESTORE").AsBool("nuget_restore", true);
|
||||
DotNetVersion = actions.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_DOTNET_VERSION");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -161,9 +161,6 @@ namespace Semmle.Autobuild.Shared
|
||||
if (matchingFiles.Length == 0)
|
||||
return null;
|
||||
|
||||
if (Options.AllSolutions)
|
||||
return matchingFiles.Select(p => p.ProjectOrSolution);
|
||||
|
||||
return matchingFiles
|
||||
.Where(f => f.DistanceFromRoot == matchingFiles[0].DistanceFromRoot)
|
||||
.Select(f => f.ProjectOrSolution);
|
||||
@@ -185,19 +182,6 @@ namespace Semmle.Autobuild.Shared
|
||||
projectsOrSolutionsToBuildLazy = new Lazy<IList<IProjectOrSolution>>(() =>
|
||||
{
|
||||
List<IProjectOrSolution>? ret;
|
||||
if (options.Solution.Any())
|
||||
{
|
||||
ret = new List<IProjectOrSolution>();
|
||||
foreach (var solution in options.Solution)
|
||||
{
|
||||
if (actions.FileExists(solution))
|
||||
ret.Add(new Solution<TAutobuildOptions>(this, solution, true));
|
||||
else
|
||||
logger.LogError($"The specified project or solution file {solution} was not found");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// First look for `.proj` files
|
||||
ret = FindFiles(".proj", f => new Project<TAutobuildOptions>(this, f))?.ToList();
|
||||
if (ret is not null)
|
||||
@@ -285,9 +269,6 @@ namespace Semmle.Autobuild.Shared
|
||||
|
||||
var script = GetBuildScript();
|
||||
|
||||
if (Options.IgnoreErrors)
|
||||
script |= BuildScript.Success;
|
||||
|
||||
void startCallback(string s, bool silent)
|
||||
{
|
||||
logger.Log(silent ? Severity.Debug : Severity.Info, $"\nRunning {s}");
|
||||
|
||||
@@ -82,11 +82,6 @@ namespace Semmle.Autobuild.Shared
|
||||
{
|
||||
var command = new CommandBuilder(builder.Actions, dir, environment);
|
||||
|
||||
// A specific Visual Studio version may be required
|
||||
var vsTools = MsBuildRule.GetVcVarsBatFile(builder);
|
||||
if (vsTools is not null)
|
||||
command.CallBatFile(vsTools.Path);
|
||||
|
||||
command.RunCommand(this.ScriptPath);
|
||||
return command.Script;
|
||||
});
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
using Semmle.Util;
|
||||
|
||||
namespace Semmle.Autobuild.Shared
|
||||
{
|
||||
/// <summary>
|
||||
/// Execute the build_command rule.
|
||||
/// </summary>
|
||||
public class BuildCommandRule : IBuildRule<AutobuildOptionsShared>
|
||||
{
|
||||
private readonly WithDotNet<AutobuildOptionsShared> withDotNet;
|
||||
|
||||
public BuildCommandRule(WithDotNet<AutobuildOptionsShared> withDotNet)
|
||||
{
|
||||
this.withDotNet = withDotNet;
|
||||
}
|
||||
|
||||
public BuildScript Analyse(IAutobuilder<AutobuildOptionsShared> builder, bool auto)
|
||||
{
|
||||
if (builder.Options.BuildCommand is null)
|
||||
return BuildScript.Failure;
|
||||
|
||||
// Custom build commands may require a specific .NET Core version
|
||||
return withDotNet(builder, environment =>
|
||||
{
|
||||
var command = new CommandBuilder(builder.Actions, null, environment);
|
||||
|
||||
// Custom build commands may require a specific Visual Studio version
|
||||
var vsTools = MsBuildRule.GetVcVarsBatFile(builder);
|
||||
if (vsTools is not null)
|
||||
command.CallBatFile(vsTools.Path);
|
||||
command.RunCommand(builder.Options.BuildCommand);
|
||||
|
||||
return command.Script;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,9 +42,9 @@ namespace Semmle.Autobuild.Shared
|
||||
if (auto)
|
||||
builder.Logger.LogInfo("Attempting to build using MSBuild");
|
||||
|
||||
var vsTools = GetVcVarsBatFile(builder);
|
||||
VcVarsBatFile? vsTools = null;
|
||||
|
||||
if (vsTools is null && builder.ProjectsOrSolutionsToBuild.Any())
|
||||
if (builder.ProjectsOrSolutionsToBuild.Any())
|
||||
{
|
||||
var firstSolution = builder.ProjectsOrSolutionsToBuild.OfType<ISolution>().FirstOrDefault();
|
||||
vsTools = firstSolution is not null
|
||||
@@ -67,46 +67,44 @@ namespace Semmle.Autobuild.Shared
|
||||
|
||||
foreach (var projectOrSolution in builder.ProjectsOrSolutionsToBuild)
|
||||
{
|
||||
if (builder.Options.NugetRestore)
|
||||
|
||||
BuildScript GetNugetRestoreScript() =>
|
||||
new CommandBuilder(builder.Actions).
|
||||
RunCommand(nuget).
|
||||
Argument("restore").
|
||||
QuoteArgument(projectOrSolution.FullPath).
|
||||
Argument("-DisableParallelProcessing").
|
||||
Script;
|
||||
var nugetRestore = GetNugetRestoreScript();
|
||||
var msbuildRestoreCommand = new CommandBuilder(builder.Actions).
|
||||
MsBuildCommand(builder).
|
||||
Argument("/t:restore").
|
||||
QuoteArgument(projectOrSolution.FullPath);
|
||||
|
||||
if (builder.Actions.IsRunningOnAppleSilicon())
|
||||
{
|
||||
BuildScript GetNugetRestoreScript() =>
|
||||
new CommandBuilder(builder.Actions).
|
||||
RunCommand(nuget).
|
||||
Argument("restore").
|
||||
QuoteArgument(projectOrSolution.FullPath).
|
||||
Argument("-DisableParallelProcessing").
|
||||
Script;
|
||||
var nugetRestore = GetNugetRestoreScript();
|
||||
var msbuildRestoreCommand = new CommandBuilder(builder.Actions).
|
||||
MsBuildCommand(builder).
|
||||
Argument("/t:restore").
|
||||
QuoteArgument(projectOrSolution.FullPath);
|
||||
// On Apple Silicon, only try package restore with `dotnet msbuild /t:restore`
|
||||
ret &= BuildScript.Try(msbuildRestoreCommand.Script);
|
||||
}
|
||||
else if (nugetDownloaded)
|
||||
{
|
||||
ret &= BuildScript.Try(nugetRestore | msbuildRestoreCommand.Script);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If `nuget restore` fails, and we have not already attempted to download `nuget.exe`,
|
||||
// download it and reattempt `nuget restore`.
|
||||
var nugetDownloadAndRestore =
|
||||
BuildScript.Bind(DownloadNugetExe(builder, nugetDownloadPath), exitCode =>
|
||||
{
|
||||
nugetDownloaded = true;
|
||||
if (exitCode != 0)
|
||||
return BuildScript.Failure;
|
||||
|
||||
if (builder.Actions.IsRunningOnAppleSilicon())
|
||||
{
|
||||
// On Apple Silicon, only try package restore with `dotnet msbuild /t:restore`
|
||||
ret &= BuildScript.Try(msbuildRestoreCommand.Script);
|
||||
}
|
||||
else if (nugetDownloaded)
|
||||
{
|
||||
ret &= BuildScript.Try(nugetRestore | msbuildRestoreCommand.Script);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If `nuget restore` fails, and we have not already attempted to download `nuget.exe`,
|
||||
// download it and reattempt `nuget restore`.
|
||||
var nugetDownloadAndRestore =
|
||||
BuildScript.Bind(DownloadNugetExe(builder, nugetDownloadPath), exitCode =>
|
||||
{
|
||||
nugetDownloaded = true;
|
||||
if (exitCode != 0)
|
||||
return BuildScript.Failure;
|
||||
|
||||
nuget = nugetDownloadPath;
|
||||
return GetNugetRestoreScript();
|
||||
});
|
||||
ret &= BuildScript.Try(nugetRestore | nugetDownloadAndRestore | msbuildRestoreCommand.Script);
|
||||
}
|
||||
nuget = nugetDownloadPath;
|
||||
return GetNugetRestoreScript();
|
||||
});
|
||||
ret &= BuildScript.Try(nugetRestore | nugetDownloadAndRestore | msbuildRestoreCommand.Script);
|
||||
}
|
||||
|
||||
var command = new CommandBuilder(builder.Actions);
|
||||
@@ -124,9 +122,9 @@ namespace Semmle.Autobuild.Shared
|
||||
command.MsBuildCommand(builder);
|
||||
command.QuoteArgument(projectOrSolution.FullPath);
|
||||
|
||||
var target = builder.Options.MsBuildTarget ?? "rebuild";
|
||||
var platform = builder.Options.MsBuildPlatform ?? (projectOrSolution is ISolution s1 ? s1.DefaultPlatformName : null);
|
||||
var configuration = builder.Options.MsBuildConfiguration ?? (projectOrSolution is ISolution s2 ? s2.DefaultConfigurationName : null);
|
||||
var target = "rebuild";
|
||||
var platform = projectOrSolution is ISolution s1 ? s1.DefaultPlatformName : null;
|
||||
var configuration = projectOrSolution is ISolution s2 ? s2.DefaultConfigurationName : null;
|
||||
|
||||
command.Argument("/t:" + target);
|
||||
if (platform is not null)
|
||||
@@ -134,8 +132,6 @@ namespace Semmle.Autobuild.Shared
|
||||
if (configuration is not null)
|
||||
command.Argument(string.Format("/p:Configuration=\"{0}\"", configuration));
|
||||
|
||||
command.Argument(builder.Options.MsBuildArguments);
|
||||
|
||||
// append the build script which invokes msbuild to the overall build script `ret`;
|
||||
// we insert a check that building the current project or solution was successful:
|
||||
// if it was not successful, we add it to `FailedProjectsOrSolutions`
|
||||
@@ -148,41 +144,6 @@ namespace Semmle.Autobuild.Shared
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the BAT file used to initialize the appropriate Visual Studio
|
||||
/// version/platform, as specified by the `vstools_version` property in
|
||||
/// lgtm.yml.
|
||||
///
|
||||
/// Returns <code>null</code> when no version is specified.
|
||||
/// </summary>
|
||||
public static VcVarsBatFile? GetVcVarsBatFile<TAutobuildOptions>(IAutobuilder<TAutobuildOptions> builder) where TAutobuildOptions : AutobuildOptionsShared
|
||||
{
|
||||
VcVarsBatFile? vsTools = null;
|
||||
|
||||
if (builder.Options.VsToolsVersion is not null)
|
||||
{
|
||||
if (int.TryParse(builder.Options.VsToolsVersion, out var msToolsVersion))
|
||||
{
|
||||
foreach (var b in BuildTools.VcVarsAllBatFiles(builder.Actions))
|
||||
{
|
||||
builder.Logger.Log(Severity.Info, "Found {0} version {1}", b.Path, b.ToolsVersion);
|
||||
}
|
||||
|
||||
vsTools = BuildTools.FindCompatibleVcVars(builder.Actions, msToolsVersion);
|
||||
if (vsTools is null)
|
||||
builder.Logger.LogWarning("Could not find build tools matching version {0}", msToolsVersion);
|
||||
else
|
||||
builder.Logger.Log(Severity.Info, "Setting Visual Studio tools to {0}", vsTools.Path);
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.Logger.LogError("The format of vstools_version is incorrect. Please specify an integer.");
|
||||
}
|
||||
}
|
||||
|
||||
return vsTools;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a script for downloading `nuget.exe` from nuget.org.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:commandargs,source:environment,source:file,source:file-write,source:local,source:remote,source:windows-registry,summary:taint,summary:value
|
||||
Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,,,6,,,
|
||||
Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,,,,,
|
||||
Dapper,55,,,,,,,,,,,,55,,,,,,,,,
|
||||
ILCompiler,,,81,,,,,,,,,,,,,,,,,,81,
|
||||
ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,,,,63,
|
||||
ILLink.Shared,,,32,,,,,,,,,,,,,,,,,,29,3
|
||||
ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,,5,
|
||||
Internal.IL,,,69,,,,,,,,,,,,,,,,,,67,2
|
||||
Internal.Pgo,,,9,,,,,,,,,,,,,,,,,,8,1
|
||||
Internal.TypeSystem,,,367,,,,,,,,,,,,,,,,,,331,36
|
||||
JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,,,,7,
|
||||
Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,,,,14,
|
||||
Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,,7,
|
||||
Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,,,
|
||||
Microsoft.CSharp,,,24,,,,,,,,,,,,,,,,,,24,
|
||||
Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,,,,13,
|
||||
Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,,12
|
||||
Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,,,,15,
|
||||
Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,,,,37,1
|
||||
Microsoft.Extensions.Configuration,,2,89,,,,,,,,,,,,2,,,,,,86,3
|
||||
Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,,,,120,
|
||||
Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,,,,12,
|
||||
Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,,,,13,
|
||||
Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,,,,15,
|
||||
Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,,,,14,2
|
||||
Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,,,,22,1
|
||||
Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,,,,10,
|
||||
Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,,,,59,1
|
||||
Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,,,,8,
|
||||
Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,,,,64,
|
||||
Microsoft.Interop,,,78,,,,,,,,,,,,,,,,,,78,
|
||||
Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,,,,1,
|
||||
Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,,,,7,
|
||||
Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,,,,5,5
|
||||
Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,,,,3,
|
||||
Microsoft.Win32,,4,4,,,,,,,,,,,,,,,,,4,4,
|
||||
Mono.Linker,,,163,,,,,,,,,,,,,,,,,,163,
|
||||
MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,,,
|
||||
Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,,73,18
|
||||
ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,,7,
|
||||
SourceGenerators,,,4,,,,,,,,,,,,,,,,,,4,
|
||||
System,67,30,11864,,8,8,9,,,4,5,,33,2,3,1,17,3,4,,9898,1966
|
||||
Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,,,
|
||||
package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:commandargs,source:database,source:environment,source:file,source:file-write,source:local,source:remote,source:windows-registry,summary:taint,summary:value
|
||||
Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,,,,6,,,
|
||||
Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,,,,,,
|
||||
Dapper,55,42,1,,,,,,,,,,55,,42,,,,,,,,1
|
||||
ILCompiler,,,81,,,,,,,,,,,,,,,,,,,81,
|
||||
ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,,,,,63,
|
||||
ILLink.Shared,,,32,,,,,,,,,,,,,,,,,,,29,3
|
||||
ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,,,5,
|
||||
Internal.IL,,,69,,,,,,,,,,,,,,,,,,,67,2
|
||||
Internal.Pgo,,,9,,,,,,,,,,,,,,,,,,,8,1
|
||||
Internal.TypeSystem,,,367,,,,,,,,,,,,,,,,,,,331,36
|
||||
JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,,,,,7,
|
||||
Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,,,,,14,
|
||||
Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,,,7,
|
||||
Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,,,,
|
||||
Microsoft.CSharp,,,24,,,,,,,,,,,,,,,,,,,24,
|
||||
Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,,,,,13,
|
||||
Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,,,12
|
||||
Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,,,,,15,
|
||||
Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,,,,,37,1
|
||||
Microsoft.Extensions.Configuration,,2,89,,,,,,,,,,,,,2,,,,,,86,3
|
||||
Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,,,,,120,
|
||||
Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,,,,,12,
|
||||
Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,,,,,13,
|
||||
Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,,,,,15,
|
||||
Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,,,,,14,2
|
||||
Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,,,,,22,1
|
||||
Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,,,,,10,
|
||||
Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,,,,,59,1
|
||||
Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,,,,,8,
|
||||
Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,,,,,64,
|
||||
Microsoft.Interop,,,78,,,,,,,,,,,,,,,,,,,78,
|
||||
Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,,,,,1,
|
||||
Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,,,,,7,
|
||||
Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,,,,,5,5
|
||||
Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,,,,,3,
|
||||
Microsoft.Win32,,4,4,,,,,,,,,,,,,,,,,,4,4,
|
||||
Mono.Linker,,,163,,,,,,,,,,,,,,,,,,,163,
|
||||
MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,,,,
|
||||
Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,,,73,18
|
||||
ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,,,7,
|
||||
SourceGenerators,,,4,,,,,,,,,,,,,,,,,,,4,
|
||||
System,67,44,11872,,8,8,9,,,4,5,,33,2,,3,15,17,3,4,,9906,1966
|
||||
Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,,,,
|
||||
|
||||
|
@@ -8,7 +8,7 @@ C# framework & library support
|
||||
|
||||
Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting`
|
||||
`ServiceStack <https://servicestack.net/>`_,"``ServiceStack.*``, ``ServiceStack``",,7,194,
|
||||
System,"``System.*``, ``System``",30,11864,67,9
|
||||
Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",12,1547,148,
|
||||
Totals,,42,13418,409,9
|
||||
System,"``System.*``, ``System``",44,11872,67,9
|
||||
Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",54,1548,148,
|
||||
Totals,,98,13427,409,9
|
||||
|
||||
|
||||
@@ -89,11 +89,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
return dotnetCliInvoker.RunCommand(args);
|
||||
}
|
||||
|
||||
public IList<string> GetListedRuntimes() => GetListed("--list-runtimes", "runtime");
|
||||
public IList<string> GetListedRuntimes() => GetListed("--list-runtimes");
|
||||
|
||||
public IList<string> GetListedSdks() => GetListed("--list-sdks", "SDK");
|
||||
public IList<string> GetListedSdks() => GetListed("--list-sdks");
|
||||
|
||||
private IList<string> GetListed(string args, string artifact)
|
||||
private IList<string> GetListed(string args)
|
||||
{
|
||||
if (dotnetCliInvoker.RunCommand(args, out var artifacts))
|
||||
{
|
||||
|
||||
@@ -189,7 +189,7 @@ namespace Semmle.Extraction.CSharp
|
||||
// compilation.Clone() is used to allow symbols to be garbage collected.
|
||||
using var trapWriter = transformedSourcePath.CreateTrapWriter(Logger, options.TrapCompression, discardDuplicates: false);
|
||||
|
||||
upToDate = options.Fast && FileIsUpToDate(sourcePath, trapWriter.TrapFile);
|
||||
upToDate = FileIsUpToDate(sourcePath, trapWriter.TrapFile);
|
||||
|
||||
var currentTaskId = IncrementTaskCount();
|
||||
ReportProgressTaskStarted(currentTaskId, sourcePath);
|
||||
|
||||
@@ -35,15 +35,7 @@ namespace Semmle.Extraction.CSharp
|
||||
public static Options CreateWithEnvironment(string[] arguments)
|
||||
{
|
||||
var options = new Options();
|
||||
var extractionOptions = Environment.GetEnvironmentVariable("LGTM_INDEX_EXTRACTOR");
|
||||
|
||||
var argsList = new List<string>(arguments);
|
||||
|
||||
if (!string.IsNullOrEmpty(extractionOptions))
|
||||
{
|
||||
argsList.AddRange(extractionOptions.Split(' '));
|
||||
}
|
||||
|
||||
options.ParseArguments(argsList);
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -12,11 +12,6 @@ namespace Semmle.Extraction.Tests
|
||||
private CSharp.Options? options;
|
||||
private CSharp.Standalone.Options? standaloneOptions;
|
||||
|
||||
public OptionsTests()
|
||||
{
|
||||
Environment.SetEnvironmentVariable("LGTM_INDEX_EXTRACTOR", "");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DefaultOptions()
|
||||
{
|
||||
@@ -28,7 +23,6 @@ namespace Semmle.Extraction.Tests
|
||||
Assert.True(options.Threads >= 1);
|
||||
Assert.Equal(Verbosity.Info, options.LegacyVerbosity);
|
||||
Assert.False(options.Console);
|
||||
Assert.False(options.Fast);
|
||||
Assert.Equal(TrapWriter.CompressionMode.Brotli, options.TrapCompression);
|
||||
}
|
||||
|
||||
@@ -165,14 +159,6 @@ namespace Semmle.Extraction.Tests
|
||||
Assert.True(standaloneOptions.Help);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Fast()
|
||||
{
|
||||
Environment.SetEnvironmentVariable("LGTM_INDEX_EXTRACTOR", "--fast");
|
||||
options = CSharp.Options.CreateWithEnvironment(Array.Empty<string>());
|
||||
Assert.True(options.Fast);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ArchiveArguments()
|
||||
{
|
||||
|
||||
@@ -60,11 +60,6 @@ namespace Semmle.Extraction
|
||||
/// </summary>
|
||||
public bool Cache { get; private set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Whether "fast extraction mode" has been enabled.
|
||||
/// </summary>
|
||||
public bool Fast { get; private set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Whether extraction is done using `codeql test run`.
|
||||
/// </summary>
|
||||
@@ -115,9 +110,6 @@ namespace Semmle.Extraction
|
||||
case "cache":
|
||||
Cache = value;
|
||||
return true;
|
||||
case "fast":
|
||||
Fast = value;
|
||||
return true;
|
||||
case "qltest":
|
||||
QlTest = value;
|
||||
return true;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-solorigate-all
|
||||
version: 1.7.13
|
||||
version: 1.7.14-dev
|
||||
groups:
|
||||
- csharp
|
||||
- solorigate
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-solorigate-queries
|
||||
version: 1.7.13
|
||||
version: 1.7.14-dev
|
||||
groups:
|
||||
- csharp
|
||||
- solorigate
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-all
|
||||
version: 0.9.0
|
||||
version: 0.9.1-dev
|
||||
groups: csharp
|
||||
dbscheme: semmlecode.csharp.dbscheme
|
||||
extractor: csharp
|
||||
|
||||
@@ -47,15 +47,13 @@
|
||||
*
|
||||
* For sources, an `output` can be either "", "Argument[n]", "Argument[n1..n2]",
|
||||
* "Parameter", "Parameter[n]", "Parameter[n1..n2]", or "ReturnValue":
|
||||
* - "": Selects a read of a selected field, property, or parameter.
|
||||
* - "": Selects a read of a selected field or property.
|
||||
* - "Argument[n]": Selects the post-update value of an argument in a call to the
|
||||
* selected element. That is, the value of the argument after the call returns.
|
||||
* The arguments are zero-indexed, and `this` specifies the qualifier.
|
||||
* - "Argument[n1..n2]": Similar to "Argument[n]" but select any argument in
|
||||
* the given range. The range is inclusive at both ends.
|
||||
* - "Parameter": Selects the value of a parameter of the selected element.
|
||||
* "Parameter" is also allowed in case the selected element is already a
|
||||
* parameter itself.
|
||||
* - "Parameter[n]": Similar to "Parameter" but restricted to a specific
|
||||
* numbered parameter (zero-indexed, and `this` specifies the value of `this`).
|
||||
* - "Parameter[n1..n2]": Similar to "Parameter[n]" but selects any parameter
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/csharp-queries
|
||||
version: 0.8.13
|
||||
version: 0.8.14-dev
|
||||
groups:
|
||||
- csharp
|
||||
- queries
|
||||
|
||||
@@ -8,7 +8,7 @@ You can use the CodeQL guards library to identify conditional expressions that c
|
||||
About the guards library
|
||||
------------------------
|
||||
|
||||
The guards library (defined in ``semmle.code.cpp.controlflow.Guards``) provides a class `GuardCondition <https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/controlflow/Guards.qll/type.Guards$GuardCondition.html>`__ representing Boolean values that are used to make control flow decisions.
|
||||
The guards library (defined in ``semmle.code.cpp.controlflow.Guards``) provides a class `GuardCondition <https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/controlflow/IRGuards.qll/type.IRGuards$GuardCondition.html>`__ representing Boolean values that are used to make control flow decisions.
|
||||
A ``GuardCondition`` is considered to guard a basic block if the block can only be reached if the ``GuardCondition`` is evaluated a certain way. For instance, in the following code, ``x < 10`` is a ``GuardCondition``, and it guards all the code before the return statement.
|
||||
|
||||
.. code-block:: cpp
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql-go-consistency-queries
|
||||
version: 0.0.12
|
||||
version: 0.0.13-dev
|
||||
groups:
|
||||
- go
|
||||
- queries
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/go-all
|
||||
version: 0.7.13
|
||||
version: 0.7.14-dev
|
||||
groups: go
|
||||
dbscheme: go.dbscheme
|
||||
extractor: go
|
||||
|
||||
@@ -34,15 +34,13 @@
|
||||
* An `output` can be either "", "Argument[n]", "Argument[n1..n2]", "Parameter",
|
||||
* "Parameter[n]", "Parameter[n1..n2]", , "ReturnValue", "ReturnValue[n]", or
|
||||
* "ReturnValue[n1..n2]":
|
||||
* - "": Selects a read of a selected field, or a selected parameter.
|
||||
* - "": Selects a read of a selected field.
|
||||
* - "Argument[n]": Selects the post-update value of an argument in a call to the
|
||||
* selected element. That is, the value of the argument after the call returns.
|
||||
* The arguments are zero-indexed, and `-1` specifies the qualifier.
|
||||
* - "Argument[n1..n2]": Similar to "Argument[n]" but select any argument in
|
||||
* the given range. The range is inclusive at both ends.
|
||||
* - "Parameter": Selects the value of a parameter of the selected element.
|
||||
* "Parameter" is also allowed in case the selected element is already a
|
||||
* parameter itself.
|
||||
* - "Parameter[n]": Similar to "Parameter" but restricted to a specific
|
||||
* numbered parameter (zero-indexed, and `-1` specifies the value of `this`).
|
||||
* - "Parameter[n1..n2]": Similar to "Parameter[n]" but selects any parameter
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/go-queries
|
||||
version: 0.7.13
|
||||
version: 0.7.14-dev
|
||||
groups:
|
||||
- go
|
||||
- queries
|
||||
|
||||
@@ -1,253 +1,256 @@
|
||||
package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:credentials-key,sink:credentials-password,sink:credentials-username,sink:encryption-iv,sink:encryption-salt,sink:environment-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:notification,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:trust-boundary-violation,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:database,source:environment,source:file,source:remote,summary:taint,summary:value
|
||||
actions.osgi,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,
|
||||
android.app,77,,103,,,,,,,,,,11,,,,,7,,,,,,,42,,,17,,,,,,,,,,,,,,,,,,,,,,18,85
|
||||
android.content,24,31,154,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,8,,,,,,4,27,,,,,63,91
|
||||
android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,,41,
|
||||
android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15
|
||||
android.os,1,2,122,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,2,,,,,,41,81
|
||||
android.support.v4.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
android.util,6,16,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,16,,
|
||||
android.webkit,3,2,,,,,,,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,
|
||||
android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,
|
||||
androidx.core.app,47,,95,,,,,,,,,,,,,,,,,,,,,,41,,,6,,,,,,,,,,,,,,,,,,,,,,12,83
|
||||
androidx.fragment.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,5,,,,,27,61
|
||||
antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
ch.ethz.ssh2,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.alibaba.druid.sql,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1,
|
||||
com.alibaba.fastjson2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.amazonaws.auth,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.auth0.jwt.algorithms,6,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.azure.identity,3,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.fasterxml.jackson.databind,2,,8,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,8,
|
||||
com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,,,63,24
|
||||
com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17
|
||||
com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551
|
||||
com.google.common.flogger,29,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.google.common.io,10,,73,,,,,,,,,1,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,72,1
|
||||
com.google.gson,,,52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,14
|
||||
com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,
|
||||
com.jcraft.jsch,5,,1,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1,
|
||||
com.microsoft.sqlserver.jdbc,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,
|
||||
com.mongodb,10,,,,,,4,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.opensymphony.xwork2,56,,961,,,,,,,,,,,,,,,,,,,,,,,56,,,,,,,,,,,,,,,,,,,,,,,,867,94
|
||||
com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7,
|
||||
com.sshtools.j2ssh.authentication,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.crypto.provider,19,,,,,17,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.jndi.ldap,4,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.net.httpserver,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.net.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.rowset,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.security.auth.module,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.security.ntlm,5,,,,,,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.security.sasl.digest,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.trilead.ssh2,13,,,,,2,4,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,
|
||||
flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||
freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,
|
||||
freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,
|
||||
groovy.lang,26,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
groovy.text,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
groovy.util,5,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
hudson,74,9,2648,,4,,,,,,3,2,,,,4,,,,,,,,,,,55,,,,,,,,,6,,,,,,,,,,,,5,4,2572,76
|
||||
io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4,
|
||||
io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,
|
||||
io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77
|
||||
io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,2,,
|
||||
io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,,,,,13,143,116
|
||||
io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
io.netty.util,2,,23,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,21,2
|
||||
jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,2,
|
||||
jakarta.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,
|
||||
jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23
|
||||
jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,1,
|
||||
jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,
|
||||
jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55
|
||||
jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,
|
||||
java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3
|
||||
java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
java.io,51,1,47,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,1,,45,2
|
||||
java.lang,38,3,102,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,3,,,59,43
|
||||
java.net,22,3,24,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,,3,24,
|
||||
java.nio,44,,38,,,,,,,,,5,,,,,,,,,,,,,,,38,,,,,,,,,1,,,,,,,,,,,,,,38,
|
||||
java.security,21,,,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,1,,,,2,
|
||||
java.util,47,2,529,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,49,480
|
||||
javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,7,
|
||||
javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,
|
||||
javax.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,
|
||||
javax.imageio.stream,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57,
|
||||
javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23
|
||||
javax.management,2,,1,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
javax.naming,7,,1,,,,,,,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
javax.net.ssl,4,,,,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.portlet,,,61,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,61,
|
||||
javax.print.attribute.standard,2,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.script,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.security.auth.callback,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.security.auth.kerberos,6,,,,,4,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.servlet,7,21,3,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,3,,,2,,,,,,,,,21,3,
|
||||
javax.sql,7,,,,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,
|
||||
javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,
|
||||
javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,2,,,,,,,,,94,55
|
||||
javax.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,
|
||||
javax.xml.transform,2,,6,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1,,,,,,,6,
|
||||
javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,
|
||||
jenkins,,,523,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,500,23
|
||||
jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10
|
||||
kotlin,16,,1849,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,,,,,1836,13
|
||||
liquibase.database.jvm,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
|
||||
liquibase.statement.core,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
|
||||
net.schmizz.sshj,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,321,17
|
||||
net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,
|
||||
ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
okhttp3,4,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,23,27
|
||||
org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49,
|
||||
org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,
|
||||
org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783
|
||||
org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783
|
||||
org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,
|
||||
org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.commons.io,118,,562,,,,,,,,,4,,,,,,,,,,,,,,,99,,,,,,,,,15,,,,,,,,,,,,,,548,14
|
||||
org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,
|
||||
org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.lang,,,767,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,596,171
|
||||
org.apache.commons.lang3,6,,425,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,294,131
|
||||
org.apache.commons.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.net,13,12,,,,,2,2,,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,,,,,12,,
|
||||
org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52
|
||||
org.apache.cxf.catalog,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.common.classloader,3,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,2,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.common.jaxb,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.common.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.configuration.jsse,2,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.helpers,10,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,5,,,,,,,,,
|
||||
org.apache.cxf.resource,9,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,5,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.staxutils,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.tools.corba.utils,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.tools.util,10,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,
|
||||
org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.hadoop.fs,3,,11,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,11,
|
||||
org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,
|
||||
org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,,
|
||||
org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,
|
||||
org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,,
|
||||
org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.hc.core5.http,73,2,45,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,72,,,,,,,,,,,,,2,45,
|
||||
org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,
|
||||
org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6
|
||||
org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
|
||||
org.apache.http,48,3,95,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,46,,,,,,,,,,,,,3,86,9
|
||||
org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,57,
|
||||
org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,,4,4
|
||||
org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.shiro.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.sshd.client.session,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.struts.beanvalidation.validation.interceptor,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,
|
||||
org.apache.struts2,14,,3873,,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,3,,,,,,,,,,3839,34
|
||||
org.apache.tools.ant,12,,,,1,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,
|
||||
org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,
|
||||
org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
org.codehaus.groovy.control,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,
|
||||
org.eclipse.jetty.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,
|
||||
org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,
|
||||
org.gradle.api.file,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,
|
||||
org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
org.jboss.logging,324,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,
|
||||
org.jenkins.ui.icon,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48,1
|
||||
org.jenkins.ui.symbol,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,8
|
||||
org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
|
||||
org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38
|
||||
org.keycloak.models.map.storage,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
|
||||
org.kohsuke.stapler,20,24,363,,,,,,,,,,,,,2,,,,,,,,,,,9,,,,,,,,,4,,,,,5,,,,,,,,24,352,11
|
||||
org.mvel2,16,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.owasp.esapi,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.pac4j.jwt.config.encryption,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.pac4j.jwt.config.signature,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.scijava.log,13,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.slf4j,55,,6,,,,,,,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4
|
||||
org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30
|
||||
org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13
|
||||
org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
org.springframework.core.io,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,
|
||||
org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||
org.springframework.http,14,,77,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,,,,,67,10
|
||||
org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,
|
||||
org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,
|
||||
org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,
|
||||
org.springframework.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.springframework.ldap,47,,,,,,,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.springframework.security.core.userdetails,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,
|
||||
org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32
|
||||
org.springframework.util,3,,142,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,90,52
|
||||
org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,
|
||||
org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,3,,
|
||||
org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,
|
||||
org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13,
|
||||
org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,
|
||||
org.springframework.web.util,,9,157,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,132,25
|
||||
org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,2,
|
||||
org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,
|
||||
org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,
|
||||
play.mvc,1,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,13,24,
|
||||
ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4,
|
||||
ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10,
|
||||
ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48
|
||||
ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35
|
||||
ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4,
|
||||
ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10,
|
||||
ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35
|
||||
retrofit2,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1,
|
||||
sun.jvmstat.perfdata.monitor.protocol.local,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.jvmstat.perfdata.monitor.protocol.rmi,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.misc,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.net.ftp,5,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.net.www.protocol.http,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.acl,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.jgss.krb5,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.krb5,9,,,,,3,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.pkcs,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.pkcs11,3,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.provider,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.x509,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.tools.jconsole,28,,,,,,13,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:credentials-key,sink:credentials-password,sink:credentials-username,sink:encryption-iv,sink:encryption-salt,sink:environment-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:notification,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:trust-boundary-violation,sink:url-forward,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:database,source:environment,source:file,source:remote,summary:taint,summary:value
|
||||
actions.osgi,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,
|
||||
android.app,77,,103,,,,,,,,,,11,,,,,7,,,,,,,42,,,17,,,,,,,,,,,,,,,,,,,,,,,18,85
|
||||
android.content,24,31,154,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,8,,,,,,,4,27,,,,,63,91
|
||||
android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,,,41,
|
||||
android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15
|
||||
android.os,1,2,122,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2,,,,,,41,81
|
||||
android.support.v4.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
android.util,6,16,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,16,,
|
||||
android.webkit,3,2,,,,,,,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,
|
||||
android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,
|
||||
androidx.core.app,47,,95,,,,,,,,,,,,,,,,,,,,,,41,,,6,,,,,,,,,,,,,,,,,,,,,,,12,83
|
||||
androidx.fragment.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,5,,,,,27,61
|
||||
antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
ch.ethz.ssh2,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.alibaba.druid.sql,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,
|
||||
com.alibaba.fastjson2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.amazonaws.auth,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.auth0.jwt.algorithms,6,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.azure.identity,3,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
com.fasterxml.jackson.databind,2,,8,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,8,
|
||||
com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,,,,63,24
|
||||
com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17
|
||||
com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551
|
||||
com.google.common.flogger,29,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.google.common.io,10,,73,,,,,,,,,1,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,,72,1
|
||||
com.google.gson,,,52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,14
|
||||
com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,
|
||||
com.jcraft.jsch,5,,1,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1,
|
||||
com.microsoft.sqlserver.jdbc,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,
|
||||
com.mongodb,10,,,,,,4,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.opensymphony.xwork2,56,,961,,,,,,,,,,,,,,,,,,,,,,,56,,,,,,,,,,,,,,,,,,,,,,,,,867,94
|
||||
com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7,
|
||||
com.sshtools.j2ssh.authentication,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.crypto.provider,19,,,,,17,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.jndi.ldap,4,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.net.httpserver,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.net.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.rowset,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.security.auth.module,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.security.ntlm,5,,,,,,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.sun.security.sasl.digest,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.trilead.ssh2,13,,,,,2,4,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,
|
||||
flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||
freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
|
||||
freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,
|
||||
groovy.lang,26,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
groovy.text,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
groovy.util,5,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
hudson,74,9,2648,,4,,,,,,3,2,,,,4,,,,,,,,,,,55,,,,,,,,,6,,,,,,,,,,,,,5,4,2572,76
|
||||
io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4,
|
||||
io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,
|
||||
io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77
|
||||
io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,2,,
|
||||
io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,,,,,,13,143,116
|
||||
io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
io.netty.util,2,,23,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,21,2
|
||||
jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,2,
|
||||
jakarta.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,
|
||||
jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23
|
||||
jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,1,
|
||||
jakarta.servlet,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,
|
||||
jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,
|
||||
jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55
|
||||
jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,
|
||||
java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3
|
||||
java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
java.io,51,1,47,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,1,,45,2
|
||||
java.lang,38,3,102,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,,3,,,59,43
|
||||
java.net,23,3,31,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,3,31,
|
||||
java.nio,44,,38,,,,,,,,,5,,,,,,,,,,,,,,,38,,,,,,,,,1,,,,,,,,,,,,,,,38,
|
||||
java.security,21,,7,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,4
|
||||
java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,,1,,,,2,
|
||||
java.util,47,2,529,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,,2,,,49,480
|
||||
javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,7,
|
||||
javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,
|
||||
javax.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,
|
||||
javax.imageio.stream,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57,
|
||||
javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23
|
||||
javax.management,2,,1,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
javax.naming,7,,1,,,,,,,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
javax.net.ssl,4,,,,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.portlet,1,,61,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,61,
|
||||
javax.print.attribute.standard,2,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.script,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.security.auth.callback,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.security.auth.kerberos,6,,,,,4,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.servlet,9,22,3,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,3,,,2,2,,,,,,,,,22,3,
|
||||
javax.sql,7,,,,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,
|
||||
javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,
|
||||
javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,2,,,,,,,,,94,55
|
||||
javax.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,
|
||||
javax.xml.transform,2,,6,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,,,,,6,
|
||||
javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,
|
||||
jenkins,,,523,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,500,23
|
||||
jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10
|
||||
kotlin,16,,1849,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,,,,,,1836,13
|
||||
liquibase.database.jvm,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,
|
||||
liquibase.statement.core,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,
|
||||
net.schmizz.sshj,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,321,17
|
||||
net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,
|
||||
ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
okhttp3,4,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,23,27
|
||||
org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49,
|
||||
org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,
|
||||
org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783
|
||||
org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783
|
||||
org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,
|
||||
org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.commons.io,118,,562,,,,,,,,,4,,,,,,,,,,,,,,,99,,,,,,,,,15,,,,,,,,,,,,,,,548,14
|
||||
org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.lang,,,767,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,596,171
|
||||
org.apache.commons.lang3,6,,425,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,294,131
|
||||
org.apache.commons.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.net,13,12,,,,,2,2,,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,,,,,,12,,
|
||||
org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52
|
||||
org.apache.cxf.catalog,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.common.classloader,3,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,2,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.common.jaxb,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.common.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.configuration.jsse,2,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.helpers,10,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,5,,,,,,,,,
|
||||
org.apache.cxf.resource,9,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,5,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.staxutils,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.tools.corba.utils,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.tools.util,10,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,
|
||||
org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.hadoop.fs,3,,11,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,11,
|
||||
org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,
|
||||
org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,,,
|
||||
org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,
|
||||
org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,,,
|
||||
org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.hc.core5.http,73,2,45,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,72,,,,,,,,,,,,,,2,45,
|
||||
org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,
|
||||
org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6
|
||||
org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,
|
||||
org.apache.http,48,3,95,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,46,,,,,,,,,,,,,,3,86,9
|
||||
org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,57,
|
||||
org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,4
|
||||
org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.shiro.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.sshd.client.session,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.struts.beanvalidation.validation.interceptor,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,
|
||||
org.apache.struts2,14,,3873,,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,3,,,,,,,,,,,3839,34
|
||||
org.apache.tools.ant,12,,,,1,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,
|
||||
org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,
|
||||
org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
org.codehaus.groovy.control,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,
|
||||
org.eclipse.jetty.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,
|
||||
org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,
|
||||
org.gradle.api.file,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,,
|
||||
org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
org.jboss.logging,324,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,
|
||||
org.jenkins.ui.icon,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48,1
|
||||
org.jenkins.ui.symbol,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,8
|
||||
org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,
|
||||
org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38
|
||||
org.keycloak.models.map.storage,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,
|
||||
org.kohsuke.stapler,20,24,363,,,,,,,,,,,,,2,,,,,,,,,,,9,,,,,,,,,3,,,,,1,5,,,,,,,,24,352,11
|
||||
org.mvel2,16,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.owasp.esapi,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.pac4j.jwt.config.encryption,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.pac4j.jwt.config.signature,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.scijava.log,13,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.slf4j,55,,6,,,,,,,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4
|
||||
org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30
|
||||
org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13
|
||||
org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
org.springframework.core.io,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,,
|
||||
org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||
org.springframework.http,14,,77,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,,,,,,67,10
|
||||
org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,
|
||||
org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,
|
||||
org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,
|
||||
org.springframework.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.springframework.ldap,47,,,,,,,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.springframework.security.core.userdetails,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,
|
||||
org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32
|
||||
org.springframework.util,3,,142,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,90,52
|
||||
org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,
|
||||
org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,3,,
|
||||
org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,
|
||||
org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13,
|
||||
org.springframework.web.portlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,
|
||||
org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,
|
||||
org.springframework.web.servlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,
|
||||
org.springframework.web.util,,9,157,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,132,25
|
||||
org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,2,
|
||||
org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,
|
||||
org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,
|
||||
play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,
|
||||
play.mvc,1,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,13,24,
|
||||
ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4,
|
||||
ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10,
|
||||
ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48
|
||||
ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,
|
||||
ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35
|
||||
ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4,
|
||||
ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10,
|
||||
ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35
|
||||
retrofit2,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1,
|
||||
sun.jvmstat.perfdata.monitor.protocol.local,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.jvmstat.perfdata.monitor.protocol.rmi,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.misc,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.net.ftp,5,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.net.www.protocol.http,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.acl,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.jgss.krb5,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.krb5,9,,,,,3,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.pkcs,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.pkcs11,3,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.provider,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.security.x509,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
sun.tools.jconsole,28,,,,,,13,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
|
||||
|
@@ -18,10 +18,10 @@ Java framework & library support
|
||||
`Google Guava <https://guava.dev/>`_,``com.google.common.*``,,730,43,9,,,,,
|
||||
JBoss Logging,``org.jboss.logging``,,,324,,,,,,
|
||||
`JSON-java <https://github.com/stleary/JSON-java>`_,``org.json``,,236,,,,,,,
|
||||
Java Standard Library,``java.*``,10,746,239,80,,9,,,25
|
||||
Java extensions,"``javax.*``, ``jakarta.*``",67,688,80,5,4,2,1,1,4
|
||||
Java Standard Library,``java.*``,10,760,240,80,,9,,,26
|
||||
Java extensions,"``javax.*``, ``jakarta.*``",69,688,85,5,4,2,1,1,4
|
||||
Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2
|
||||
`Spring <https://spring.io/>`_,``org.springframework.*``,38,481,118,5,,28,14,,35
|
||||
Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,125,6,22,18,,209
|
||||
Totals,,308,18962,2559,338,16,128,33,1,409
|
||||
`Spring <https://spring.io/>`_,``org.springframework.*``,38,481,122,5,,28,14,,35
|
||||
Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,125,6,22,18,,208
|
||||
Totals,,310,18976,2569,338,16,128,33,1,409
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/java-automodel-queries
|
||||
version: 0.0.20
|
||||
version: 0.0.21-dev
|
||||
groups:
|
||||
- java
|
||||
- automodel
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/java-all
|
||||
version: 0.9.0
|
||||
version: 0.9.1-dev
|
||||
groups: java
|
||||
dbscheme: config/semmlecode.dbscheme
|
||||
extractor: java
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/java-queries
|
||||
version: 0.8.13
|
||||
version: 0.8.14-dev
|
||||
groups:
|
||||
- java
|
||||
- queries
|
||||
|
||||
@@ -121,8 +121,8 @@
|
||||
| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess |
|
||||
| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess |
|
||||
| delegatedProperties.kt:23:29:23:31 | String | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:23:29:23:31 | get(...) | delegatedProperties.kt:23:9:23:31 | invoke | MethodCall |
|
||||
| delegatedProperties.kt:23:29:23:31 | getValue(...) | delegatedProperties.kt:23:29:23:31 | <get-name> | MethodCall |
|
||||
| delegatedProperties.kt:23:29:23:31 | get(...) | delegatedProperties.kt:23:29:23:31 | invoke | MethodCall |
|
||||
| delegatedProperties.kt:23:29:23:31 | getValue(...) | delegatedProperties.kt:23:9:23:31 | <get-name> | MethodCall |
|
||||
| delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr |
|
||||
| delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:23:9:23:31 | <get-name> | VarAccess |
|
||||
| delegatedProperties.kt:23:29:23:31 | new (...) | delegatedProperties.kt:23:29:23:31 | get | ClassInstanceExpr |
|
||||
@@ -158,8 +158,8 @@
|
||||
| delegatedProperties.kt:28:50:28:71 | ? ... | file://:0:0:0:0 | <none> | WildcardTypeAccess |
|
||||
| delegatedProperties.kt:28:50:28:71 | KProperty<?> | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:28:74:28:83 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:29:17:29:24 | setCurValue(...) | delegatedProperties.kt:28:13:30:13 | setValue | MethodCall |
|
||||
| delegatedProperties.kt:29:17:29:24 | this | delegatedProperties.kt:28:13:30:13 | setValue | ThisAccess |
|
||||
| delegatedProperties.kt:29:17:29:32 | setCurValue(...) | delegatedProperties.kt:28:13:30:13 | setValue | MethodCall |
|
||||
| delegatedProperties.kt:29:17:29:32 | this | delegatedProperties.kt:28:13:30:13 | setValue | ThisAccess |
|
||||
| delegatedProperties.kt:29:28:29:32 | value | delegatedProperties.kt:28:13:30:13 | setValue | VarAccess |
|
||||
| delegatedProperties.kt:33:30:33:47 | ...::... | delegatedProperties.kt:33:9:33:47 | <get-readOnly> | PropertyRefExpr |
|
||||
| delegatedProperties.kt:33:30:33:47 | <get-readOnly>(...) | delegatedProperties.kt:33:30:33:47 | get | MethodCall |
|
||||
@@ -1379,7 +1379,6 @@
|
||||
| exprs.kt:137:12:137:23 | ... > ... | exprs.kt:4:1:142:1 | topLevelMethod | GTExpr |
|
||||
| exprs.kt:137:23:137:23 | 0 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral |
|
||||
| exprs.kt:138:9:138:16 | variable | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:138:9:138:16 | variable | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:138:9:138:18 | ...=... | exprs.kt:4:1:142:1 | topLevelMethod | AssignExpr |
|
||||
| exprs.kt:138:9:138:18 | <Stmt> | exprs.kt:4:1:142:1 | topLevelMethod | StmtExpr |
|
||||
| exprs.kt:138:9:138:18 | <implicit coercion to unit> | exprs.kt:4:1:142:1 | topLevelMethod | ImplicitCoercionToUnitExpr |
|
||||
@@ -1388,6 +1387,7 @@
|
||||
| exprs.kt:138:9:138:18 | <unary> | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:138:9:138:18 | Unit | exprs.kt:4:1:142:1 | topLevelMethod | TypeAccess |
|
||||
| exprs.kt:138:9:138:18 | dec(...) | exprs.kt:4:1:142:1 | topLevelMethod | MethodCall |
|
||||
| exprs.kt:138:9:138:18 | variable | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:141:12:141:14 | 123 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral |
|
||||
| exprs.kt:141:12:141:20 | ... + ... | exprs.kt:4:1:142:1 | topLevelMethod | AddExpr |
|
||||
| exprs.kt:141:18:141:20 | 456 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral |
|
||||
@@ -1423,7 +1423,6 @@
|
||||
| exprs.kt:160:29:160:29 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess |
|
||||
| exprs.kt:160:29:160:42 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr |
|
||||
| exprs.kt:160:29:160:42 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess |
|
||||
| exprs.kt:160:45:160:49 | <Stmt> | exprs.kt:156:1:163:1 | typeTests | StmtExpr |
|
||||
| exprs.kt:160:47:160:47 | <implicit cast> | exprs.kt:156:1:163:1 | typeTests | ImplicitCastExpr |
|
||||
| exprs.kt:160:47:160:47 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess |
|
||||
| exprs.kt:160:47:160:47 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess |
|
||||
@@ -1431,7 +1430,6 @@
|
||||
| exprs.kt:160:58:160:58 | y | exprs.kt:156:1:163:1 | typeTests | VarAccess |
|
||||
| exprs.kt:161:5:161:13 | q | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr |
|
||||
| exprs.kt:161:13:161:13 | 1 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral |
|
||||
| exprs.kt:162:5:162:48 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral |
|
||||
| exprs.kt:162:5:162:48 | when ... | exprs.kt:156:1:163:1 | typeTests | WhenExpr |
|
||||
| exprs.kt:162:9:162:9 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess |
|
||||
| exprs.kt:162:9:162:22 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr |
|
||||
@@ -1439,8 +1437,9 @@
|
||||
| exprs.kt:162:27:162:31 | ...=... | exprs.kt:156:1:163:1 | typeTests | AssignExpr |
|
||||
| exprs.kt:162:27:162:31 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess |
|
||||
| exprs.kt:162:31:162:31 | 2 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral |
|
||||
| exprs.kt:162:40:162:48 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral |
|
||||
| exprs.kt:162:42:162:46 | ...=... | exprs.kt:156:1:163:1 | typeTests | AssignExpr |
|
||||
| exprs.kt:162:42:162:42 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess |
|
||||
| exprs.kt:162:42:162:46 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess |
|
||||
| exprs.kt:162:46:162:46 | 3 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral |
|
||||
| exprs.kt:165:1:172:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:165:9:165:18 | Polygon | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
@@ -1452,8 +1451,6 @@
|
||||
| exprs.kt:167:8:167:16 | ... (value not-equals) ... | exprs.kt:165:1:172:1 | foo | ValueNEExpr |
|
||||
| exprs.kt:167:13:167:16 | null | exprs.kt:165:1:172:1 | foo | NullLiteral |
|
||||
| exprs.kt:168:9:168:29 | r2 | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr |
|
||||
| exprs.kt:168:29:168:29 | <implicit not null> | exprs.kt:165:1:172:1 | foo | ImplicitNotNullExpr |
|
||||
| exprs.kt:168:29:168:29 | Rectangle | exprs.kt:165:1:172:1 | foo | TypeAccess |
|
||||
| exprs.kt:168:29:168:29 | r | exprs.kt:165:1:172:1 | foo | VarAccess |
|
||||
| exprs.kt:169:9:169:30 | height | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr |
|
||||
| exprs.kt:169:22:169:23 | r2 | exprs.kt:165:1:172:1 | foo | VarAccess |
|
||||
@@ -1497,17 +1494,17 @@
|
||||
| exprs.kt:175:25:175:28 | Direction | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:175:25:175:28 | Direction.EAST | exprs.kt:0:0:0:0 | <clinit> | VarAccess |
|
||||
| exprs.kt:175:25:175:28 | new Direction(...) | exprs.kt:0:0:0:0 | <clinit> | ClassInstanceExpr |
|
||||
| exprs.kt:178:1:182:1 | 0 | exprs.kt:178:6:182:1 | Color | IntegerLiteral |
|
||||
| exprs.kt:178:1:182:1 | Color | exprs.kt:178:6:182:1 | Color | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | Color | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | Color | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | Color | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | Color[] | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | Enum<Color> | exprs.kt:178:6:182:1 | Color | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | EnumEntries<Color> | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | String | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:178:1:182:1 | new Enum(...) | exprs.kt:178:6:182:1 | Color | ClassInstanceExpr |
|
||||
| exprs.kt:178:1:182:1 | null | exprs.kt:178:6:182:1 | Color | NullLiteral |
|
||||
| exprs.kt:178:17:178:30 | 0 | exprs.kt:178:17:178:30 | Color | IntegerLiteral |
|
||||
| exprs.kt:178:17:178:30 | Color | exprs.kt:178:17:178:30 | Color | TypeAccess |
|
||||
| exprs.kt:178:17:178:30 | Enum<Color> | exprs.kt:178:17:178:30 | Color | TypeAccess |
|
||||
| exprs.kt:178:17:178:30 | new Enum<Color>(...) | exprs.kt:178:17:178:30 | Color | ClassInstanceExpr |
|
||||
| exprs.kt:178:17:178:30 | null | exprs.kt:178:17:178:30 | Color | NullLiteral |
|
||||
| exprs.kt:178:18:178:29 | ...=... | exprs.kt:178:17:178:30 | Color | KtInitializerAssignExpr |
|
||||
| exprs.kt:178:18:178:29 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:178:18:178:29 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/javascript-all
|
||||
version: 0.8.13
|
||||
version: 0.8.14-dev
|
||||
groups: javascript
|
||||
dbscheme: semmlecode.javascript.dbscheme
|
||||
extractor: javascript
|
||||
|
||||
@@ -245,7 +245,7 @@ class TopLevel extends @toplevel, StmtContainer {
|
||||
/** Gets the number of lines containing comments in this toplevel. */
|
||||
int getNumberOfLinesOfComments() { numlines(this, _, _, result) }
|
||||
|
||||
override predicate isStrict() { this.getAStmt() instanceof StrictModeDecl }
|
||||
override predicate isStrict() { this.getAStmt() instanceof Directive::StrictModeDecl }
|
||||
|
||||
override ControlFlowNode getFirstControlFlowNode() { result = this.getEntry() }
|
||||
|
||||
|
||||
@@ -237,7 +237,7 @@ class Function extends @function, Parameterized, TypeParameterized, StmtContaine
|
||||
|
||||
override predicate isStrict() {
|
||||
// check for explicit strict mode directive
|
||||
exists(StrictModeDecl smd | this = smd.getContainer()) or
|
||||
exists(Directive::StrictModeDecl smd | this = smd.getContainer()) or
|
||||
// check for enclosing strict function
|
||||
StmtContainer.super.isStrict() or
|
||||
// all parts of a class definition are strict code
|
||||
|
||||
@@ -259,149 +259,210 @@ class Directive extends MaybeDirective {
|
||||
}
|
||||
|
||||
/**
|
||||
* A known directive, such as a strict mode declaration.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use strict";
|
||||
* ```
|
||||
* Module containing subclasses of the `Directive` class.
|
||||
*/
|
||||
abstract class KnownDirective extends Directive { }
|
||||
module Directive {
|
||||
/**
|
||||
* A known directive, such as a strict mode declaration.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use strict";
|
||||
* ```
|
||||
*/
|
||||
abstract class KnownDirective extends Directive { }
|
||||
|
||||
/**
|
||||
* A strict mode declaration.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use strict";
|
||||
* ```
|
||||
*/
|
||||
class StrictModeDecl extends KnownDirective {
|
||||
StrictModeDecl() { this.getDirectiveText() = "use strict" }
|
||||
}
|
||||
/**
|
||||
* A strict mode declaration.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use strict";
|
||||
* ```
|
||||
*/
|
||||
class StrictModeDecl extends KnownDirective {
|
||||
StrictModeDecl() { this.getDirectiveText() = "use strict" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An asm.js directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use asm";
|
||||
* ```
|
||||
*/
|
||||
class AsmJSDirective extends KnownDirective {
|
||||
AsmJSDirective() { this.getDirectiveText() = "use asm" }
|
||||
}
|
||||
/**
|
||||
* An asm.js directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use asm";
|
||||
* ```
|
||||
*/
|
||||
class AsmJSDirective extends KnownDirective {
|
||||
AsmJSDirective() { this.getDirectiveText() = "use asm" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A Babel directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use babel";
|
||||
* ```
|
||||
*/
|
||||
class BabelDirective extends KnownDirective {
|
||||
BabelDirective() { this.getDirectiveText() = "use babel" }
|
||||
}
|
||||
/**
|
||||
* A Babel directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use babel";
|
||||
* ```
|
||||
*/
|
||||
class BabelDirective extends KnownDirective {
|
||||
BabelDirective() { this.getDirectiveText() = "use babel" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A legacy 6to5 directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use 6to5";
|
||||
* ```
|
||||
*/
|
||||
class SixToFiveDirective extends KnownDirective {
|
||||
SixToFiveDirective() { this.getDirectiveText() = "use 6to5" }
|
||||
}
|
||||
/**
|
||||
* A legacy 6to5 directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use 6to5";
|
||||
* ```
|
||||
*/
|
||||
class SixToFiveDirective extends KnownDirective {
|
||||
SixToFiveDirective() { this.getDirectiveText() = "use 6to5" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A SystemJS `format` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "format global";
|
||||
* ```
|
||||
*/
|
||||
class SystemJSFormatDirective extends KnownDirective {
|
||||
SystemJSFormatDirective() {
|
||||
this.getDirectiveText().regexpMatch("format (cjs|esm|global|register)")
|
||||
/**
|
||||
* A SystemJS `format` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "format global";
|
||||
* ```
|
||||
*/
|
||||
class SystemJSFormatDirective extends KnownDirective {
|
||||
SystemJSFormatDirective() {
|
||||
this.getDirectiveText().regexpMatch("format (cjs|esm|global|register)")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A SystemJS `format register` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "format register";
|
||||
* ```
|
||||
*/
|
||||
class FormatRegisterDirective extends SystemJSFormatDirective {
|
||||
FormatRegisterDirective() { this.getDirectiveText() = "format register" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A `ngInject` or `ngNoInject` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "ngInject";
|
||||
* ```
|
||||
*/
|
||||
class NgInjectDirective extends KnownDirective {
|
||||
NgInjectDirective() { this.getDirectiveText().regexpMatch("ng(No)?Inject") }
|
||||
}
|
||||
|
||||
/**
|
||||
* A YUI compressor directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "console:nomunge";
|
||||
* ```
|
||||
*/
|
||||
class YuiDirective extends KnownDirective {
|
||||
YuiDirective() {
|
||||
this.getDirectiveText().regexpMatch("([a-z0-9_]+:nomunge, ?)*([a-z0-9_]+:nomunge)")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A SystemJS `deps` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "deps fs";
|
||||
* ```
|
||||
*/
|
||||
class SystemJSDepsDirective extends KnownDirective {
|
||||
SystemJSDepsDirective() { this.getDirectiveText().regexpMatch("deps [^ ]+") }
|
||||
}
|
||||
|
||||
/**
|
||||
* A `bundle` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "bundle";
|
||||
* ```
|
||||
*/
|
||||
class BundleDirective extends KnownDirective {
|
||||
BundleDirective() { this.getDirectiveText() = "bundle" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A `use server` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use server";
|
||||
* ```
|
||||
*/
|
||||
class UseServerDirective extends KnownDirective {
|
||||
UseServerDirective() { this.getDirectiveText() = "use server" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A `use client` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "use client";
|
||||
* ```
|
||||
*/
|
||||
class UseClientDirective extends KnownDirective {
|
||||
UseClientDirective() { this.getDirectiveText() = "use client" }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A SystemJS `format register` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "format register";
|
||||
* ```
|
||||
*/
|
||||
class FormatRegisterDirective extends SystemJSFormatDirective {
|
||||
FormatRegisterDirective() { this.getDirectiveText() = "format register" }
|
||||
}
|
||||
/** DEPRECATED. Use `Directive::KnownDirective` instead. */
|
||||
deprecated class KnownDirective = Directive::KnownDirective;
|
||||
|
||||
/**
|
||||
* A `ngInject` or `ngNoInject` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "ngInject";
|
||||
* ```
|
||||
*/
|
||||
class NgInjectDirective extends KnownDirective {
|
||||
NgInjectDirective() { this.getDirectiveText().regexpMatch("ng(No)?Inject") }
|
||||
}
|
||||
/** DEPRECATED. Use `Directive::StrictModeDecl` instead. */
|
||||
deprecated class StrictModeDecl = Directive::StrictModeDecl;
|
||||
|
||||
/**
|
||||
* A YUI compressor directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "console:nomunge";
|
||||
* ```
|
||||
*/
|
||||
class YuiDirective extends KnownDirective {
|
||||
YuiDirective() {
|
||||
this.getDirectiveText().regexpMatch("([a-z0-9_]+:nomunge, ?)*([a-z0-9_]+:nomunge)")
|
||||
}
|
||||
}
|
||||
/** DEPRECATED. Use `Directive::AsmJSDirective` instead. */
|
||||
deprecated class AsmJSDirective = Directive::AsmJSDirective;
|
||||
|
||||
/**
|
||||
* A SystemJS `deps` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "deps fs";
|
||||
* ```
|
||||
*/
|
||||
class SystemJSDepsDirective extends KnownDirective {
|
||||
SystemJSDepsDirective() { this.getDirectiveText().regexpMatch("deps [^ ]+") }
|
||||
}
|
||||
/** DEPRECATED. Use `Directive::BabelDirective` instead. */
|
||||
deprecated class BabelDirective = Directive::BabelDirective;
|
||||
|
||||
/**
|
||||
* A `bundle` directive.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* "bundle";
|
||||
* ```
|
||||
*/
|
||||
class BundleDirective extends KnownDirective {
|
||||
BundleDirective() { this.getDirectiveText() = "bundle" }
|
||||
}
|
||||
/** DEPRECATED. Use `Directive::SixToFiveDirective` instead. */
|
||||
deprecated class SixToFiveDirective = Directive::SixToFiveDirective;
|
||||
|
||||
/** DEPRECATED. Use `Directive::SystemJSFormatDirective` instead. */
|
||||
deprecated class SystemJSFormatDirective = Directive::SystemJSFormatDirective;
|
||||
|
||||
/** DEPRECATED. Use `Directive::NgInjectDirective` instead. */
|
||||
deprecated class NgInjectDirective = Directive::NgInjectDirective;
|
||||
|
||||
/** DEPRECATED. Use `Directive::YuiDirective` instead. */
|
||||
deprecated class YuiDirective = Directive::YuiDirective;
|
||||
|
||||
/** DEPRECATED. Use `Directive::SystemJSDepsDirective` instead. */
|
||||
deprecated class SystemJSDepsDirective = Directive::SystemJSDepsDirective;
|
||||
|
||||
/** DEPRECATED. Use `Directive::BundleDirective` instead. */
|
||||
deprecated class BundleDirective = Directive::BundleDirective;
|
||||
|
||||
/**
|
||||
* An `if` statement.
|
||||
|
||||
@@ -242,7 +242,9 @@ predicate isMultiLicenseBundle(TopLevel tl) {
|
||||
/**
|
||||
* Holds if this is a bundle with a "bundle" directive.
|
||||
*/
|
||||
predicate isDirectiveBundle(TopLevel tl) { exists(BundleDirective d | d.getTopLevel() = tl) }
|
||||
predicate isDirectiveBundle(TopLevel tl) {
|
||||
exists(Directive::BundleDirective d | d.getTopLevel() = tl)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if toplevel `tl` contains code that looks like the output of a module bundler.
|
||||
|
||||
@@ -12,7 +12,7 @@ import javascript
|
||||
|
||||
from Directive d
|
||||
where
|
||||
not d instanceof KnownDirective and
|
||||
not d instanceof Directive::KnownDirective and
|
||||
// ignore ":" pseudo-directive sometimes seen in dual-use shell/node.js scripts
|
||||
not d.getExpr().getStringValue() = ":" and
|
||||
// but exclude attribute top-levels: `<a href="javascript:'some-attribute-string'">`
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/javascript-queries
|
||||
version: 0.8.13
|
||||
version: 0.8.14-dev
|
||||
groups:
|
||||
- javascript
|
||||
- queries
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import javascript
|
||||
|
||||
from KnownDirective d
|
||||
from Directive::KnownDirective d
|
||||
select d, d.getDirectiveText()
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
| UnknownDirective.js:12:5:12:17 | "use struct;" | Unknown directive: 'use struct;'. |
|
||||
| UnknownDirective.js:13:5:13:17 | "Use Strict"; | Unknown directive: 'Use Strict'. |
|
||||
| UnknownDirective.js:14:5:14:14 | "use bar"; | Unknown directive: 'use bar'. |
|
||||
| UnknownDirective.js:38:5:38:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. |
|
||||
| UnknownDirective.js:39:5:39:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. |
|
||||
| UnknownDirective.js:45:5:45:15 | ":nomunge"; | Unknown directive: ':nomunge'. |
|
||||
| UnknownDirective.js:46:5:46:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. |
|
||||
| UnknownDirective.js:40:5:40:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. |
|
||||
| UnknownDirective.js:41:5:41:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. |
|
||||
| UnknownDirective.js:47:5:47:15 | ":nomunge"; | Unknown directive: ':nomunge'. |
|
||||
| UnknownDirective.js:48:5:48:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. |
|
||||
|
||||
@@ -32,6 +32,8 @@ function good() {
|
||||
"ngNoInject"; // OK
|
||||
"deps foo"; // OK
|
||||
"deps bar"; // OK
|
||||
"use server"; // OK
|
||||
"use client"; // OK
|
||||
}
|
||||
|
||||
function data() {
|
||||
@@ -46,6 +48,6 @@ function yui() {
|
||||
"foo(), bar, baz:nomunge"; // NOT OK
|
||||
}
|
||||
|
||||
function babel_typeof(obj) {
|
||||
function babel_typeof(obj) {
|
||||
"@babel/helpers - typeof"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: codeql/suite-helpers
|
||||
version: 0.7.13
|
||||
version: 0.7.14-dev
|
||||
groups: shared
|
||||
warnOnImplicitThis: true
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/python-all
|
||||
version: 0.11.13
|
||||
version: 0.11.14-dev
|
||||
groups: python
|
||||
dbscheme: semmlecode.python.dbscheme
|
||||
extractor: python
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/python-queries
|
||||
version: 0.9.13
|
||||
version: 0.9.14-dev
|
||||
groups:
|
||||
- python
|
||||
- queries
|
||||
|
||||
BIN
ql/Cargo.lock
generated
BIN
ql/Cargo.lock
generated
Binary file not shown.
@@ -7,6 +7,6 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
lazy_static = "1.4.0"
|
||||
chrono = "0.4.35"
|
||||
chrono = "0.4.37"
|
||||
rayon = "1.9.0"
|
||||
regex = "1.10.3"
|
||||
regex = "1.10.4"
|
||||
|
||||
@@ -16,5 +16,5 @@ clap = { version = "4.2", features = ["derive"] }
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
|
||||
rayon = "1.9.0"
|
||||
regex = "1.10.3"
|
||||
regex = "1.10.4"
|
||||
codeql-extractor = { path = "../../shared/tree-sitter-extractor" }
|
||||
|
||||
@@ -14,6 +14,14 @@
|
||||
- error
|
||||
- warning
|
||||
- recommendation
|
||||
- include:
|
||||
kind:
|
||||
- diagnostic
|
||||
- include:
|
||||
kind:
|
||||
- metric
|
||||
tags contain:
|
||||
- summary
|
||||
- exclude:
|
||||
deprecated: //
|
||||
- exclude:
|
||||
|
||||
@@ -22,6 +22,35 @@ private import codeql.ruby.dataflow.internal.DataFlowDispatch
|
||||
module ActionController {
|
||||
// TODO: move the rest of this file inside this module.
|
||||
import codeql.ruby.frameworks.actioncontroller.Filters
|
||||
|
||||
/**
|
||||
* An ActionController class which sits at the top of the class hierarchy.
|
||||
* In other words, it does not subclass any other class in source code.
|
||||
*/
|
||||
class RootController extends ActionControllerClass {
|
||||
RootController() {
|
||||
not exists(ActionControllerClass parent | this != parent and this = parent.getADescendent())
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A call to `protect_from_forgery`.
|
||||
*/
|
||||
class ProtectFromForgeryCall extends CsrfProtectionSetting::Range, DataFlow::CallNode {
|
||||
ProtectFromForgeryCall() {
|
||||
this = actionControllerInstance().getAMethodCall("protect_from_forgery")
|
||||
}
|
||||
|
||||
private string getWithValueText() {
|
||||
result = this.getKeywordArgument("with").getConstantValue().getSymbol()
|
||||
}
|
||||
|
||||
// Calls without `with: :exception` can allow for bypassing CSRF protection
|
||||
// in some scenarios.
|
||||
override boolean getVerificationSetting() {
|
||||
if this.getWithValueText() = "exception" then result = true else result = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -39,18 +68,12 @@ module ActionController {
|
||||
*/
|
||||
class ActionControllerClass extends DataFlow::ClassNode {
|
||||
ActionControllerClass() {
|
||||
this =
|
||||
[
|
||||
DataFlow::getConstant("ActionController").getConstant("Base"),
|
||||
// In Rails applications `ApplicationController` typically extends `ActionController::Base`, but we
|
||||
// treat it separately in case the `ApplicationController` definition is not in the database.
|
||||
DataFlow::getConstant("ApplicationController"),
|
||||
// ActionController::Metal technically doesn't contain all of the
|
||||
// methods available in Base, such as those for rendering views.
|
||||
// However we prefer to be over-sensitive in this case in order to find
|
||||
// more results.
|
||||
DataFlow::getConstant("ActionController").getConstant("Metal")
|
||||
].getADescendentModule()
|
||||
// In Rails applications `ApplicationController` typically extends `ActionController::Base`, but we
|
||||
// treat it separately in case the `ApplicationController` definition is not in the database.
|
||||
this = DataFlow::getConstant("ApplicationController").getADescendentModule()
|
||||
or
|
||||
this = actionControllerBaseClass().getADescendentModule() and
|
||||
not exists(DataFlow::ModuleNode m | m = actionControllerBaseClass().asModule() | this = m)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,6 +97,18 @@ class ActionControllerClass extends DataFlow::ClassNode {
|
||||
}
|
||||
}
|
||||
|
||||
private DataFlow::ConstRef actionControllerBaseClass() {
|
||||
result =
|
||||
[
|
||||
DataFlow::getConstant("ActionController").getConstant("Base"),
|
||||
// ActionController::Metal and ActionController::API technically don't contain all of the
|
||||
// methods available in Base, such as those for rendering views.
|
||||
// However we prefer to be over-sensitive in this case in order to find more results.
|
||||
DataFlow::getConstant("ActionController").getConstant("Metal"),
|
||||
DataFlow::getConstant("ActionController").getConstant("API")
|
||||
]
|
||||
}
|
||||
|
||||
private API::Node actionControllerInstance() {
|
||||
result = any(ActionControllerClass cls).getSelf().track()
|
||||
}
|
||||
@@ -407,27 +442,6 @@ class ActionControllerSkipForgeryProtectionCall extends CsrfProtectionSetting::R
|
||||
override boolean getVerificationSetting() { result = false }
|
||||
}
|
||||
|
||||
/**
|
||||
* A call to `protect_from_forgery`.
|
||||
*/
|
||||
private class ActionControllerProtectFromForgeryCall extends CsrfProtectionSetting::Range,
|
||||
DataFlow::CallNode
|
||||
{
|
||||
ActionControllerProtectFromForgeryCall() {
|
||||
this = actionControllerInstance().getAMethodCall("protect_from_forgery")
|
||||
}
|
||||
|
||||
private string getWithValueText() {
|
||||
result = this.getKeywordArgument("with").getConstantValue().getSymbol()
|
||||
}
|
||||
|
||||
// Calls without `with: :exception` can allow for bypassing CSRF protection
|
||||
// in some scenarios.
|
||||
override boolean getVerificationSetting() {
|
||||
if this.getWithValueText() = "exception" then result = true else result = false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A call to `send_file`, which sends the file at the given path to the client.
|
||||
*/
|
||||
|
||||
254
ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll
Normal file
254
ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll
Normal file
@@ -0,0 +1,254 @@
|
||||
/**
|
||||
* Provides classes and predicates for Gemfiles, including version constraint logic.
|
||||
*/
|
||||
|
||||
private import codeql.ruby.AST
|
||||
|
||||
/**
|
||||
* Provides classes and predicates for Gemfiles, including version constraint logic.
|
||||
*/
|
||||
module Gemfile {
|
||||
private File getGemfile() { result.getBaseName() = "Gemfile" }
|
||||
|
||||
/**
|
||||
* A call to `gem` inside a gemfile. This defines a dependency. For example:
|
||||
*
|
||||
* ```rb
|
||||
* gem "actionpack", "~> 7.0.0"
|
||||
* ```
|
||||
*
|
||||
* This call defines a dependency on the `actionpack` gem, with version constraint `~> 7.0.0`.
|
||||
* For detail on version constraints, see the `VersionConstraint` class.
|
||||
*/
|
||||
class Gem extends MethodCall {
|
||||
Gem() { this.getMethodName() = "gem" and this.getFile() = getGemfile() }
|
||||
|
||||
/**
|
||||
* Gets the name of the gem in this version constraint.
|
||||
*/
|
||||
string getName() { result = this.getArgument(0).getConstantValue().getStringlikeValue() }
|
||||
|
||||
/**
|
||||
* Gets the `i`th version string for this gem. A single `gem` call may have multiple version constraints, for example:
|
||||
*
|
||||
* ```rb
|
||||
* gem "json", "3.4.0", ">= 3.0"
|
||||
* ```
|
||||
*/
|
||||
string getVersionString(int i) {
|
||||
result = this.getArgument(i + 1).getConstantValue().getStringlikeValue()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a version constraint defined by this call.
|
||||
*/
|
||||
VersionConstraint getAVersionConstraint() { result = this.getVersionString(_) }
|
||||
}
|
||||
|
||||
private newtype TComparator =
|
||||
TEq() or
|
||||
TNeq() or
|
||||
TGt() or
|
||||
TLt() or
|
||||
TGeq() or
|
||||
TLeq() or
|
||||
TPGeq()
|
||||
|
||||
/**
|
||||
* A comparison operator in a version constraint.
|
||||
*/
|
||||
private class Comparator extends TComparator {
|
||||
string toString() { result = this.toSourceString() }
|
||||
|
||||
/**
|
||||
* Gets the representation of the comparator in source code.
|
||||
* This is defined separately so that we can change the `toString` implementation without breaking `parseConstraint`.
|
||||
*/
|
||||
string toSourceString() {
|
||||
this = TEq() and result = "="
|
||||
or
|
||||
this = TNeq() and result = "!="
|
||||
or
|
||||
this = TGt() and result = ">"
|
||||
or
|
||||
this = TLt() and result = "<"
|
||||
or
|
||||
this = TGeq() and result = ">="
|
||||
or
|
||||
this = TLeq() and result = "<="
|
||||
or
|
||||
this = TPGeq() and result = "~>"
|
||||
}
|
||||
}
|
||||
|
||||
bindingset[s]
|
||||
private predicate parseExactVersion(string s, string version) {
|
||||
version = s.regexpCapture("\\s*(\\d+\\.\\d+\\.\\d+)\\s*", 1)
|
||||
}
|
||||
|
||||
bindingset[s]
|
||||
private predicate parseConstraint(string s, Comparator c, string version) {
|
||||
exists(string pattern | pattern = "(=|!=|>=?|<=?|~>)\\s+(.+)" |
|
||||
c.toSourceString() = s.regexpCapture(pattern, 1) and version = s.regexpCapture(pattern, 2)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* A version constraint in a `gem` call. This consists of a version number and an optional comparator, for example
|
||||
* `>= 1.2.3`.
|
||||
*/
|
||||
class VersionConstraint extends string {
|
||||
Comparator comp;
|
||||
string versionString;
|
||||
|
||||
VersionConstraint() {
|
||||
this = any(Gem g).getVersionString(_) and
|
||||
(
|
||||
parseConstraint(this, comp, versionString)
|
||||
or
|
||||
parseExactVersion(this, versionString) and comp = TEq()
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the string defining the version number used in this constraint.
|
||||
*/
|
||||
string getVersionString() { result = versionString }
|
||||
|
||||
/**
|
||||
* Gets the `Version` used in this constraint.
|
||||
*/
|
||||
Version getVersion() { result = this.getVersionString() }
|
||||
|
||||
/**
|
||||
* Holds if `other` is a version which is strictly greater than the range described by this version constraint.
|
||||
*/
|
||||
bindingset[other]
|
||||
predicate before(string other) {
|
||||
comp = TEq() and this.getVersion().before(other)
|
||||
or
|
||||
comp = TLt() and
|
||||
(this.getVersion().before(other) or this.getVersion().equal(other))
|
||||
or
|
||||
comp = TLeq() and this.getVersion().before(other)
|
||||
or
|
||||
// ~> x.y.z <=> >= x.y.z && < x.(y+1).0
|
||||
// ~> x.y <=> >= x.y && < (x+1).0
|
||||
comp = TPGeq() and
|
||||
exists(int thisMajor, int thisMinor, int otherMajor, int otherMinor |
|
||||
thisMajor = this.getVersion().getMajor() and
|
||||
thisMinor = this.getVersion().getMinor() and
|
||||
exists(string maj, string mi | normalizeSemver(other, _, maj, mi, _) |
|
||||
otherMajor = maj.toInt() and otherMinor = mi.toInt()
|
||||
)
|
||||
|
|
||||
exists(this.getVersion().getPatch()) and
|
||||
(
|
||||
thisMajor < otherMajor
|
||||
or
|
||||
thisMajor = otherMajor and
|
||||
thisMinor < otherMinor
|
||||
)
|
||||
or
|
||||
not exists(this.getVersion().getPatch()) and
|
||||
thisMajor < otherMajor
|
||||
)
|
||||
// if the comparator is > or >=, it has no upper bound and therefore isn't guaranteed to be before any other version.
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A version number in a version constraint. For example, in the following code
|
||||
*
|
||||
* ```rb
|
||||
* gem "json", ">= 3.4.5"
|
||||
* ```
|
||||
*
|
||||
* The version is `3.4.5`.
|
||||
*/
|
||||
private class Version extends string {
|
||||
string normalized;
|
||||
|
||||
Version() {
|
||||
this = any(Gem c).getAVersionConstraint().getVersionString() and
|
||||
normalized = normalizeSemver(this)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this version is strictly before the version defined by `other`.
|
||||
*/
|
||||
bindingset[other]
|
||||
predicate before(string other) { normalized < normalizeSemver(other) }
|
||||
|
||||
/**
|
||||
* Holds if this versino is equal to the version defined by `other`.
|
||||
*/
|
||||
bindingset[other]
|
||||
predicate equal(string other) { normalized = normalizeSemver(other) }
|
||||
|
||||
/**
|
||||
* Holds if this version is strictly after the version defined by `other`.
|
||||
*/
|
||||
bindingset[other]
|
||||
predicate after(string other) { normalized > normalizeSemver(other) }
|
||||
|
||||
/**
|
||||
* Holds if this version defines a patch number.
|
||||
*/
|
||||
predicate hasPatch() { exists(getPatch(this)) }
|
||||
|
||||
/**
|
||||
* Gets the major number of this version.
|
||||
*/
|
||||
int getMajor() { result = getMajor(normalized).toInt() }
|
||||
|
||||
/**
|
||||
* Gets the minor number of this version, if it exists.
|
||||
*/
|
||||
int getMinor() { result = getMinor(normalized).toInt() }
|
||||
|
||||
/**
|
||||
* Gets the patch number of this version, if it exists.
|
||||
*/
|
||||
int getPatch() { result = getPatch(normalized).toInt() }
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalizes a SemVer string such that the lexicographical ordering
|
||||
* of two normalized strings is consistent with the SemVer ordering.
|
||||
*
|
||||
* Pre-release information and build metadata is not supported.
|
||||
*/
|
||||
bindingset[orig]
|
||||
private predicate normalizeSemver(
|
||||
string orig, string normalized, string major, string minor, string patch
|
||||
) {
|
||||
major = getMajor(orig) and
|
||||
(
|
||||
minor = getMinor(orig)
|
||||
or
|
||||
not exists(getMinor(orig)) and minor = "0"
|
||||
) and
|
||||
(
|
||||
patch = getPatch(orig)
|
||||
or
|
||||
not exists(getPatch(orig)) and patch = "0"
|
||||
) and
|
||||
normalized = leftPad(major) + "." + leftPad(minor) + "." + leftPad(patch)
|
||||
}
|
||||
|
||||
bindingset[orig]
|
||||
private string normalizeSemver(string orig) { normalizeSemver(orig, result, _, _, _) }
|
||||
|
||||
bindingset[s]
|
||||
private string getMajor(string s) { result = s.regexpCapture("(\\d+).*", 1) }
|
||||
|
||||
bindingset[s]
|
||||
private string getMinor(string s) { result = s.regexpCapture("(\\d+)\\.(\\d+).*", 2) }
|
||||
|
||||
bindingset[s]
|
||||
private string getPatch(string s) { result = s.regexpCapture("(\\d+)\\.(\\d+)\\.(\\d+).*", 3) }
|
||||
|
||||
bindingset[str]
|
||||
private string leftPad(string str) { result = ("000" + str).suffix(str.length()) }
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
private import ruby
|
||||
private import codeql.ruby.ApiGraphs
|
||||
private import codeql.ruby.frameworks.core.Gem::Gem as Gem
|
||||
private import codeql.ruby.security.XSS::ReflectedXss as ReflectedXss
|
||||
private import codeql.ruby.typetracking.TypeTracking
|
||||
|
||||
/**
|
||||
@@ -34,7 +35,11 @@ module UnsafeHtmlConstruction {
|
||||
abstract string getSinkType();
|
||||
}
|
||||
|
||||
private import codeql.ruby.security.XSS::ReflectedXss as ReflectedXss
|
||||
/** A sanitizer for HTML constructed from library input vulnerabilities. */
|
||||
abstract class Sanitizer extends DataFlow::Node { }
|
||||
|
||||
/** A sanitizer from the reflected-xss query, which is also a sanitizer for unsafe HTML construction. */
|
||||
private class ReflectedXssSanitizers extends Sanitizer instanceof ReflectedXss::Sanitizer { }
|
||||
|
||||
/** Gets a node that eventually ends up in the XSS `sink`. */
|
||||
private DataFlow::Node getANodeThatEndsInXssSink(ReflectedXss::Sink sink) {
|
||||
|
||||
@@ -23,10 +23,7 @@ deprecated class Configuration extends TaintTracking::Configuration {
|
||||
|
||||
override predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||
|
||||
override predicate isSanitizer(DataFlow::Node node) {
|
||||
node instanceof StringConstCompareBarrier or
|
||||
node instanceof StringConstArrayInclusionCallBarrier
|
||||
}
|
||||
override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer }
|
||||
|
||||
// override to require the path doesn't have unmatched return steps
|
||||
override DataFlow::FlowFeature getAFeature() {
|
||||
@@ -39,10 +36,7 @@ private module UnsafeHtmlConstructionConfig implements DataFlow::ConfigSig {
|
||||
|
||||
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
|
||||
|
||||
predicate isBarrier(DataFlow::Node node) {
|
||||
node instanceof StringConstCompareBarrier or
|
||||
node instanceof StringConstArrayInclusionCallBarrier
|
||||
}
|
||||
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
|
||||
|
||||
// override to require the path doesn't have unmatched return steps
|
||||
DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext }
|
||||
|
||||
@@ -248,6 +248,19 @@ private module Shared {
|
||||
or
|
||||
isFlowFromHelperMethod(node1, node2)
|
||||
}
|
||||
|
||||
private predicate htmlSafeGuard(CfgNodes::AstCfgNode guard, CfgNode testedNode, boolean branch) {
|
||||
exists(DataFlow::CallNode html_safe_call | html_safe_call.getMethodName() = "html_safe?" |
|
||||
guard = html_safe_call.asExpr() and
|
||||
testedNode = html_safe_call.getReceiver().asExpr() and
|
||||
branch = true
|
||||
)
|
||||
}
|
||||
|
||||
/** A guard that calls `.html_safe?` to check whether the string is already HTML-safe. */
|
||||
private class HtmlSafeGuard extends Sanitizer {
|
||||
HtmlSafeGuard() { this = DataFlow::BarrierGuard<htmlSafeGuard/3>::getABarrierNode() }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/ruby-all
|
||||
version: 0.8.13
|
||||
version: 0.8.14-dev
|
||||
groups: ruby
|
||||
extractor: ruby
|
||||
dbscheme: ruby.dbscheme
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: newQuery
|
||||
---
|
||||
* Added a new query, `rb/csrf-protection-not-enabled`, to detect cases where Cross-Site Request Forgery protection is not enabled in Ruby on Rails controllers.
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/ruby-queries
|
||||
version: 0.8.13
|
||||
version: 0.8.14-dev
|
||||
groups:
|
||||
- ruby
|
||||
- queries
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
|
||||
<overview>
|
||||
<p>
|
||||
Cross-site request forgery (CSRF) is a type of vulnerability in which an
|
||||
attacker is able to force a user to carry out an action that the user did
|
||||
not intend.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The attacker tricks an authenticated user into submitting a request to the
|
||||
web application. Typically this request will result in a state change on
|
||||
the server, such as changing the user's password. The request can be
|
||||
initiated when the user visits a site controlled by the attacker. If the
|
||||
web application relies only on cookies for authentication, or on other
|
||||
credentials that are automatically included in the request, then this
|
||||
request will appear as legitimate to the server.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A common countermeasure for CSRF is to generate a unique token to be
|
||||
included in the HTML sent from the server to a user. This token can be
|
||||
used as a hidden field to be sent back with requests to the server, where
|
||||
the server can then check that the token is valid and associated with the
|
||||
relevant user session.
|
||||
</p>
|
||||
</overview>
|
||||
|
||||
<recommendation>
|
||||
<p>
|
||||
In the Rails web framework, CSRF protection is enabled by the adding a call to
|
||||
the <code>protect_from_forgery</code> method inside an
|
||||
<code>ActionController</code> class. Typically this is done in the
|
||||
<code>ApplicationController</code> class, or an equivalent class from which
|
||||
other controller classes are subclassed.
|
||||
|
||||
The default behaviour of this method is to null the session when an invalid
|
||||
CSRF token is provided. This may not be sufficient to avoid a CSRF
|
||||
vulnerability - for example if parts of the session are memoized. Calling
|
||||
<code>protect_from_forgery with: :exception</code> can help to avoid this
|
||||
by raising an exception on an invalid CSRF token instead.
|
||||
</p>
|
||||
</recommendation>
|
||||
|
||||
<example>
|
||||
<p>
|
||||
The following example shows a case where CSRF protection is enabled with
|
||||
a secure request handling strategy of <code>:exception</code>.
|
||||
</p>
|
||||
|
||||
<sample src="examples/ProtectFromForgeryGood.rb"/>
|
||||
|
||||
</example>
|
||||
|
||||
<references>
|
||||
<li>Wikipedia: <a href="https://en.wikipedia.org/wiki/Cross-site_request_forgery">Cross-site request forgery</a></li>
|
||||
<li>OWASP: <a href="https://owasp.org/www-community/attacks/csrf">Cross-site request forgery</a></li>
|
||||
<li>Securing Rails Applications: <a href="https://guides.rubyonrails.org/security.html#cross-site-request-forgery-csrf">Cross-Site Request Forgery (CSRF)</a></li>
|
||||
<li>Veracode: <a href="https://www.veracode.com/blog/managing-appsec/when-rails-protectfromforgery-fails">When Rails' protect_from_forgery Fails</a>.</li>
|
||||
</references>
|
||||
|
||||
</qhelp>
|
||||
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* @name CSRF protection not enabled
|
||||
* @description Not enabling CSRF protection may make the application
|
||||
* vulnerable to a Cross-Site Request Forgery (CSRF) attack.
|
||||
* @kind problem
|
||||
* @problem.severity warning
|
||||
* @security-severity 8.8
|
||||
* @precision high
|
||||
* @id rb/csrf-protection-not-enabled
|
||||
* @tags security
|
||||
* external/cwe/cwe-352
|
||||
*/
|
||||
|
||||
import codeql.ruby.AST
|
||||
import codeql.ruby.Concepts
|
||||
import codeql.ruby.frameworks.ActionController
|
||||
import codeql.ruby.frameworks.Gemfile
|
||||
import codeql.ruby.DataFlow
|
||||
|
||||
/**
|
||||
* Holds if a call to `protect_from_forgery` is made in the controller class `definedIn`,
|
||||
* which is inherited by the controller class `child`. These classes may be the same.
|
||||
*/
|
||||
private predicate protectFromForgeryCall(
|
||||
ActionControllerClass definedIn, ActionControllerClass child,
|
||||
ActionController::ProtectFromForgeryCall call
|
||||
) {
|
||||
definedIn.getSelf().flowsTo(call.getReceiver()) and child = definedIn.getADescendent()
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if the Gemfile for this application specifies a version of "rails" or "actionpack" < 5.2.
|
||||
* Rails versions prior to 5.2 do not enable CSRF protection by default.
|
||||
*/
|
||||
private predicate railsPreVersion5_2() {
|
||||
exists(Gemfile::Gem g |
|
||||
g.getName() = ["rails", "actionpack"] and g.getAVersionConstraint().before("5.2")
|
||||
)
|
||||
}
|
||||
|
||||
private float getRailsConfigDefaultVersion() {
|
||||
exists(DataFlow::CallNode config, DataFlow::CallNode loadDefaultsCall |
|
||||
DataFlow::getConstant("Rails")
|
||||
.getConstant("Application")
|
||||
.getADescendentModule()
|
||||
.getAnImmediateReference()
|
||||
.flowsTo(config.getReceiver()) and
|
||||
config.getMethodName() = "config" and
|
||||
loadDefaultsCall.getReceiver() = config and
|
||||
loadDefaultsCall.getMethodName() = "load_defaults" and
|
||||
result = loadDefaultsCall.getArgument(0).getConstantValue().getFloat()
|
||||
)
|
||||
}
|
||||
|
||||
from ActionControllerClass c
|
||||
where
|
||||
not protectFromForgeryCall(_, c, _) and
|
||||
(
|
||||
// Rails versions prior to 5.2 require CSRF protection to be explicitly enabled.
|
||||
railsPreVersion5_2()
|
||||
or
|
||||
// For Rails >= 5.2, CSRF protection is enabled by default if there is a `load_defaults` call in the root application class
|
||||
// which specifies a version >= 5.2.
|
||||
not getRailsConfigDefaultVersion() >= 5.2
|
||||
) and
|
||||
// Only generate alerts for the topmost controller in the tree.
|
||||
not exists(ActionControllerClass parent | c = parent.getAnImmediateDescendent())
|
||||
select c, "Potential CSRF vulnerability due to forgery protection not being enabled."
|
||||
@@ -0,0 +1,4 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
protect_from_forgery with: :exception
|
||||
end
|
||||
|
||||
9
ruby/ql/test/library-tests/frameworks/gemfile/Gemfile
Normal file
9
ruby/ql/test/library-tests/frameworks/gemfile/Gemfile
Normal file
@@ -0,0 +1,9 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "rails", "7.0.0"
|
||||
gem "json", "~> 2.6.0"
|
||||
gem "jwt"
|
||||
|
||||
gem "loofah", ">= 2"
|
||||
|
||||
gem "invalid-version", "abc"
|
||||
@@ -0,0 +1,8 @@
|
||||
gemCalls
|
||||
| Gemfile:3:1:3:20 | call to gem | rails | 7.0.0 | 7.0.0 |
|
||||
| Gemfile:4:1:4:22 | call to gem | json | ~> 2.6.0 | 2.6.0 |
|
||||
| Gemfile:7:1:7:20 | call to gem | loofah | >= 2 | 2 |
|
||||
versionBefore
|
||||
| 2 | 2.6.0 |
|
||||
| 2 | 7.0.0 |
|
||||
| 2.6.0 | 7.0.0 |
|
||||
17
ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.ql
Normal file
17
ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.ql
Normal file
@@ -0,0 +1,17 @@
|
||||
import codeql.ruby.frameworks.Gemfile
|
||||
|
||||
query predicate gemCalls(
|
||||
Gemfile::Gem gem, string name, Gemfile::VersionConstraint constraint, string version
|
||||
) {
|
||||
name = gem.getName() and
|
||||
constraint = gem.getAVersionConstraint() and
|
||||
version = constraint.getVersion()
|
||||
}
|
||||
|
||||
query predicate versionBefore(string before, string after) {
|
||||
exists(Gemfile::VersionConstraint c1, Gemfile::VersionConstraint c2 |
|
||||
c1.getVersion() = before and c2.getVersion() = after
|
||||
|
|
||||
c1.getVersion().before(after)
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
gem "this-gem-not-in-gemfile", "1.2"
|
||||
@@ -2,6 +2,7 @@ edges
|
||||
| lib/unsafeHtml.rb:2:31:2:34 | name | lib/unsafeHtml.rb:3:10:3:16 | #{...} | provenance | |
|
||||
| lib/unsafeHtml.rb:9:27:9:30 | name | lib/unsafeHtml.rb:11:13:11:19 | #{...} | provenance | |
|
||||
| lib/unsafeHtml.rb:16:19:16:22 | name | lib/unsafeHtml.rb:17:28:17:31 | name | provenance | |
|
||||
| lib/unsafeHtml.rb:23:32:23:35 | name | lib/unsafeHtml.rb:24:10:24:16 | #{...} | provenance | |
|
||||
nodes
|
||||
| lib/unsafeHtml.rb:2:31:2:34 | name | semmle.label | name |
|
||||
| lib/unsafeHtml.rb:3:10:3:16 | #{...} | semmle.label | #{...} |
|
||||
@@ -9,8 +10,11 @@ nodes
|
||||
| lib/unsafeHtml.rb:11:13:11:19 | #{...} | semmle.label | #{...} |
|
||||
| lib/unsafeHtml.rb:16:19:16:22 | name | semmle.label | name |
|
||||
| lib/unsafeHtml.rb:17:28:17:31 | name | semmle.label | name |
|
||||
| lib/unsafeHtml.rb:23:32:23:35 | name | semmle.label | name |
|
||||
| lib/unsafeHtml.rb:24:10:24:16 | #{...} | semmle.label | #{...} |
|
||||
subpaths
|
||||
#select
|
||||
| lib/unsafeHtml.rb:3:10:3:16 | #{...} | lib/unsafeHtml.rb:2:31:2:34 | name | lib/unsafeHtml.rb:3:10:3:16 | #{...} | This string interpolation which depends on $@ might later allow $@. | lib/unsafeHtml.rb:2:31:2:34 | name | library input | lib/unsafeHtml.rb:3:5:3:22 | "<h2>#{...}</h2>" | cross-site scripting |
|
||||
| lib/unsafeHtml.rb:11:13:11:19 | #{...} | lib/unsafeHtml.rb:9:27:9:30 | name | lib/unsafeHtml.rb:11:13:11:19 | #{...} | This string interpolation which depends on $@ might later allow $@. | lib/unsafeHtml.rb:9:27:9:30 | name | library input | lib/unsafeHtml.rb:13:5:13:5 | h | cross-site scripting |
|
||||
| lib/unsafeHtml.rb:17:28:17:31 | name | lib/unsafeHtml.rb:16:19:16:22 | name | lib/unsafeHtml.rb:17:28:17:31 | name | This string format which depends on $@ might later allow $@. | lib/unsafeHtml.rb:16:19:16:22 | name | library input | lib/unsafeHtml.rb:17:5:17:32 | call to sprintf | cross-site scripting |
|
||||
| lib/unsafeHtml.rb:24:10:24:16 | #{...} | lib/unsafeHtml.rb:23:32:23:35 | name | lib/unsafeHtml.rb:24:10:24:16 | #{...} | This string interpolation which depends on $@ might later allow $@. | lib/unsafeHtml.rb:23:32:23:35 | name | library input | lib/unsafeHtml.rb:24:5:24:22 | "<h2>#{...}</h2>" | cross-site scripting |
|
||||
|
||||
@@ -19,4 +19,12 @@ class Foobar
|
||||
# escape
|
||||
sprintf("<h2>%s</h2>", ERB::Util.html_escape(name)).html_safe # OK - the parameter is escaped
|
||||
end
|
||||
|
||||
def create_user_description2(name)
|
||||
"<h2>#{name}</h2>".html_safe # NOT OK - the value is not necessarily HTML safe
|
||||
|
||||
if name.html_safe?
|
||||
"<h2>#{name}</h2>".html_safe # OK - value is marked as being HTML safe
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
| railsapp/app/controllers/application_controller.rb:5:3:5:22 | call to protect_from_forgery | Potential CSRF vulnerability due to forgery protection being disabled or weakened. |
|
||||
| railsapp/app/controllers/users_controller.rb:4:3:4:47 | call to skip_before_action | Potential CSRF vulnerability due to forgery protection being disabled or weakened. |
|
||||
| railsapp/config/application.rb:15:5:15:53 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. |
|
||||
| railsapp/config/application.rb:16:5:16:53 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. |
|
||||
| railsapp/config/environments/development.rb:5:3:5:51 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. |
|
||||
| railsapp/config/environments/production.rb:5:3:5:51 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. |
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
| railsapp/app/controllers/alternative_root_controller.rb:1:1:3:3 | AlternativeRootController | Potential CSRF vulnerability due to forgery protection not being enabled. |
|
||||
@@ -0,0 +1 @@
|
||||
queries/security/cwe-352/CSRFProtectionNotEnabled.ql
|
||||
@@ -0,0 +1,3 @@
|
||||
class AlternativeRootController < ActionController::Base
|
||||
# BAD: no protect_from_forgery call
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
class SubscriptionsController < AlternativeRootController
|
||||
protect_from_forgery with: :exception
|
||||
end
|
||||
@@ -0,0 +1,2 @@
|
||||
class TagsController < AlternativeRootController
|
||||
end
|
||||
@@ -9,7 +9,8 @@ Bundler.require(*Rails.groups)
|
||||
module Railsapp
|
||||
class Application < Rails::Application
|
||||
# Initialize configuration defaults for originally generated Rails version.
|
||||
config.load_defaults 6.0
|
||||
# This defaults version does NOT enable CSRF protection by default.
|
||||
config.load_defaults 5.1
|
||||
|
||||
# BAD: Disabling forgery protection may open the application to CSRF attacks
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/controlflow
|
||||
version: 0.1.13
|
||||
version: 0.1.14-dev
|
||||
groups: shared
|
||||
library: true
|
||||
dependencies:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/dataflow
|
||||
version: 0.2.4
|
||||
version: 0.2.5-dev
|
||||
groups: shared
|
||||
library: true
|
||||
dependencies:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/mad
|
||||
version: 0.2.13
|
||||
version: 0.2.14-dev
|
||||
groups: shared
|
||||
library: true
|
||||
dependencies: null
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/rangeanalysis
|
||||
version: 0.0.12
|
||||
version: 0.0.13-dev
|
||||
groups: shared
|
||||
library: true
|
||||
dependencies:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/regex
|
||||
version: 0.2.13
|
||||
version: 0.2.14-dev
|
||||
groups: shared
|
||||
library: true
|
||||
dependencies:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/ssa
|
||||
version: 0.2.13
|
||||
version: 0.2.14-dev
|
||||
groups: shared
|
||||
library: true
|
||||
dependencies:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/threat-models
|
||||
version: 0.0.12
|
||||
version: 0.0.13-dev
|
||||
library: true
|
||||
groups: shared
|
||||
dataExtensions:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: codeql/tutorial
|
||||
description: Library for the CodeQL detective tutorials, helping new users learn to
|
||||
write CodeQL queries.
|
||||
version: 0.2.13
|
||||
version: 0.2.14-dev
|
||||
groups: shared
|
||||
library: true
|
||||
warnOnImplicitThis: true
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: codeql/typetracking
|
||||
version: 0.2.13
|
||||
version: 0.2.14-dev
|
||||
groups: shared
|
||||
library: true
|
||||
dependencies:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user