From ba32c5403884027c8ec56f078b886f7c65cb6ead Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Mon, 25 Oct 2021 16:11:59 +0200 Subject: [PATCH 01/16] Move files to ruby subfolder --- .gitmodules | 2 +- .codeqlmanifest.json => ruby/.codeqlmanifest.json | 0 .gitattributes => ruby/.gitattributes | 0 .gitignore => ruby/.gitignore | 0 {.vscode => ruby/.vscode}/tasks.json | 0 CODE_OF_CONDUCT.md => ruby/CODE_OF_CONDUCT.md | 0 Cargo.lock => ruby/Cargo.lock | 0 Cargo.toml => ruby/Cargo.toml | 0 LICENSE => ruby/LICENSE | 0 Makefile => ruby/Makefile | 0 README.md => ruby/README.md | 0 {autobuilder => ruby/autobuilder}/Cargo.toml | 0 {autobuilder => ruby/autobuilder}/src/main.rs | 0 codeql => ruby/codeql | 0 codeql-extractor.yml => ruby/codeql-extractor.yml | 0 codeql-ruby.code-workspace => ruby/codeql-ruby.code-workspace | 0 {doc => ruby/doc}/prepare-db-upgrade.md | 0 {extractor => ruby/extractor}/Cargo.toml | 0 {extractor => ruby/extractor}/src/extractor.rs | 0 {extractor => ruby/extractor}/src/main.rs | 0 {generator => ruby/generator}/Cargo.toml | 0 {generator => ruby/generator}/src/dbscheme.rs | 0 {generator => ruby/generator}/src/language.rs | 0 {generator => ruby/generator}/src/main.rs | 0 {generator => ruby/generator}/src/ql.rs | 0 {generator => ruby/generator}/src/ql_gen.rs | 0 {node-types => ruby/node-types}/Cargo.toml | 0 {node-types => ruby/node-types}/src/lib.rs | 0 {ql => ruby/ql}/consistency-queries/AstConsistency.ql | 0 {ql => ruby/ql}/consistency-queries/CfgConsistency.ql | 0 {ql => ruby/ql}/consistency-queries/DataFlowConsistency.ql | 0 {ql => ruby/ql}/consistency-queries/SsaConsistency.ql | 0 {ql => ruby/ql}/consistency-queries/VariablesConsistency.ql | 0 {ql => ruby/ql}/consistency-queries/qlpack.yml | 0 {ql => ruby/ql}/docs/experimental.md | 0 {ql => ruby/ql}/examples/qlpack.lock.yml | 0 {ql => ruby/ql}/examples/qlpack.yml | 0 {ql => ruby/ql}/examples/queries.xml | 0 {ql => ruby/ql}/examples/snippets/emptythen.ql | 0 {ql => ruby/ql}/lib/codeql/IDEContextual.qll | 0 {ql => ruby/ql}/lib/codeql/Locations.qll | 0 {ql => ruby/ql}/lib/codeql/files/FileSystem.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/AST.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ApiGraphs.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/CFG.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/Concepts.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/DataFlow.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/Diagnostics.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/Frameworks.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/TaintTracking.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Call.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Constant.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Control.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Erb.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Expr.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Literal.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Method.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Module.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Operation.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Parameter.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Pattern.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Scope.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Statement.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/Variable.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/AST.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Call.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Erb.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Module.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Operation.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Parameter.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Pattern.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Scope.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Synthesis.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/TreeSitter.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Variable.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/controlflow/BasicBlocks.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/controlflow/CfgNodes.qll | 0 .../ql}/lib/codeql/ruby/controlflow/ControlFlowGraph.qll | 0 .../ql}/lib/codeql/ruby/controlflow/internal/Completion.qll | 0 .../codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll | 0 .../ruby/controlflow/internal/ControlFlowGraphImplShared.qll | 0 .../ruby/controlflow/internal/ControlFlowGraphImplSpecific.qll | 0 .../ql}/lib/codeql/ruby/controlflow/internal/NonReturning.qll | 0 .../ql}/lib/codeql/ruby/controlflow/internal/Splitting.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/dataflow/BarrierGuards.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/dataflow/FlowSummary.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/dataflow/RemoteFlowSources.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/dataflow/SSA.qll | 0 .../ql}/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll | 0 .../ql}/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll | 0 .../lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll | 0 .../codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll | 0 .../lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll | 0 .../ql}/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll | 0 .../ql}/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll | 0 .../ql}/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll | 0 .../codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/SsaImpl.qll | 0 .../ql}/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll | 0 .../ql}/lib/codeql/ruby/dataflow/internal/SsaImplSpecific.qll | 0 .../lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll | 0 .../lib/codeql/ruby/dataflow/internal/TaintTrackingPublic.qll | 0 .../ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll | 0 .../dataflow/internal/tainttracking1/TaintTrackingParameter.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/filters/GeneratedCode.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/frameworks/ActionController.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/frameworks/ActionView.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/frameworks/ActiveRecord.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/frameworks/Files.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/frameworks/HTTPClients.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/frameworks/StandardLibrary.qll | 0 .../ql}/lib/codeql/ruby/frameworks/http_clients/Excon.qll | 0 .../ql}/lib/codeql/ruby/frameworks/http_clients/Faraday.qll | 0 .../ql}/lib/codeql/ruby/frameworks/http_clients/NetHTTP.qll | 0 .../ql}/lib/codeql/ruby/frameworks/http_clients/RestClient.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/printAst.qll | 0 .../ql}/lib/codeql/ruby/regexp/ExponentialBackTracking.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/regexp/ParseRegExp.qll | 0 .../lib/codeql/ruby/regexp/PolynomialReDoSCustomizations.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/regexp/PolynomialReDoSQuery.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/regexp/ReDoSUtil.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/regexp/RegExpTreeView.qll | 0 .../ql}/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll | 0 .../lib/codeql/ruby/security/CodeInjectionCustomizations.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/security/CodeInjectionQuery.qll | 0 .../lib/codeql/ruby/security/CommandInjectionCustomizations.qll | 0 .../ql}/lib/codeql/ruby/security/CommandInjectionQuery.qll | 0 .../ql}/lib/codeql/ruby/security/ReflectedXSSCustomizations.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/security/ReflectedXSSQuery.qll | 0 .../ruby/security/UnsafeDeserializationCustomizations.qll | 0 .../ql}/lib/codeql/ruby/security/UnsafeDeserializationQuery.qll | 0 .../ql}/lib/codeql/ruby/security/UrlRedirectCustomizations.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/security/UrlRedirectQuery.qll | 0 {ql => ruby/ql}/lib/codeql/ruby/typetracking/TypeTracker.qll | 0 .../ql}/lib/codeql/ruby/typetracking/TypeTrackerSpecific.qll | 0 {ql => ruby/ql}/lib/qlpack.lock.yml | 0 {ql => ruby/ql}/lib/qlpack.yml | 0 {ql => ruby/ql}/lib/ruby.dbscheme | 0 {ql => ruby/ql}/lib/ruby.dbscheme.stats | 0 {ql => ruby/ql}/lib/ruby.qll | 0 .../09a494ce67d8141f28d6411f89b9ff7bdad440f3/old.dbscheme | 0 .../09a494ce67d8141f28d6411f89b9ff7bdad440f3/ruby.dbscheme | 0 .../09a494ce67d8141f28d6411f89b9ff7bdad440f3/upgrade.properties | 0 .../30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/old.dbscheme | 0 .../30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/ruby.dbscheme | 0 .../30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/upgrade.properties | 0 .../40be81bc2086eb0368f33c770e0a84817bb340c3/old.dbscheme | 0 .../40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme | 0 .../ruby.dbscheme.stats | 0 .../40be81bc2086eb0368f33c770e0a84817bb340c3/upgrade.properties | 0 .../8725deeb2fa6627c45235f18b7c121c35498dac7/old.dbscheme | 0 .../8725deeb2fa6627c45235f18b7c121c35498dac7/ruby.dbscheme | 0 .../8725deeb2fa6627c45235f18b7c121c35498dac7/upgrade.properties | 0 .../b5aef9c93ae64f848017d2dcb760eed916ab0cdd/old.dbscheme | 0 .../b5aef9c93ae64f848017d2dcb760eed916ab0cdd/ruby.dbscheme | 0 .../b5aef9c93ae64f848017d2dcb760eed916ab0cdd/upgrade.properties | 0 {ql => ruby/ql}/lib/upgrades/initial/ruby.dbscheme | 0 {ql => ruby/ql}/src/AlertSuppression.ql | 0 {ql => ruby/ql}/src/codeql-suites/ruby-code-scanning.qls | 0 {ql => ruby/ql}/src/codeql-suites/ruby-lgtm-full.qls | 0 {ql => ruby/ql}/src/codeql-suites/ruby-lgtm.qls | 0 {ql => ruby/ql}/src/codeql-suites/ruby-security-and-quality.qls | 0 {ql => ruby/ql}/src/codeql-suites/ruby-security-extended.qls | 0 {ql => ruby/ql}/src/experimental/README.md | 0 {ql => ruby/ql}/src/experimental/performance/UseDetect.ql | 0 {ql => ruby/ql}/src/filters/ClassifyFiles.ql | 0 {ql => ruby/ql}/src/ide-contextual-queries/localDefinitions.ql | 0 {ql => ruby/ql}/src/ide-contextual-queries/localReferences.ql | 0 {ql => ruby/ql}/src/ide-contextual-queries/printAst.ql | 0 {ql => ruby/ql}/src/qlpack.lock.yml | 0 {ql => ruby/ql}/src/qlpack.yml | 0 {ql => ruby/ql}/src/queries/analysis/Definitions.ql | 0 {ql => ruby/ql}/src/queries/diagnostics/ExtractionErrors.ql | 0 .../ql}/src/queries/diagnostics/SuccessfullyExtractedFiles.ql | 0 {ql => ruby/ql}/src/queries/metrics/FLines.ql | 0 {ql => ruby/ql}/src/queries/metrics/FLinesOfCode.ql | 0 {ql => ruby/ql}/src/queries/metrics/FLinesOfComments.ql | 0 .../ql}/src/queries/security/cwe-078/CommandInjection.qhelp | 0 .../ql}/src/queries/security/cwe-078/CommandInjection.ql | 0 .../src/queries/security/cwe-078/examples/command_injection.rb | 0 {ql => ruby/ql}/src/queries/security/cwe-079/ReflectedXSS.qhelp | 0 {ql => ruby/ql}/src/queries/security/cwe-079/ReflectedXSS.ql | 0 .../queries/security/cwe-079/examples/reflective_xss.html.erb | 0 .../ql}/src/queries/security/cwe-079/examples/safe.html.erb | 0 {ql => ruby/ql}/src/queries/security/cwe-089/SqlInjection.qhelp | 0 {ql => ruby/ql}/src/queries/security/cwe-089/SqlInjection.ql | 0 .../ql}/src/queries/security/cwe-089/examples/SqlInjection.rb | 0 .../ql}/src/queries/security/cwe-094/CodeInjection.qhelp | 0 {ql => ruby/ql}/src/queries/security/cwe-094/CodeInjection.ql | 0 .../ql}/src/queries/security/cwe-094/examples/code_injection.rb | 0 .../ql}/src/queries/security/cwe-1333/PolynomialReDoS.qhelp | 0 .../ql}/src/queries/security/cwe-1333/PolynomialReDoS.ql | 0 {ql => ruby/ql}/src/queries/security/cwe-1333/ReDoS.qhelp | 0 {ql => ruby/ql}/src/queries/security/cwe-1333/ReDoS.ql | 0 .../src/queries/security/cwe-1333/ReDoSIntroduction.inc.qhelp | 0 .../ql}/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp | 0 .../src/queries/security/cwe-502/UnsafeDeserialization.qhelp | 0 .../ql}/src/queries/security/cwe-502/UnsafeDeserialization.ql | 0 .../security/cwe-502/examples/UnsafeDeserializationBad.rb | 0 .../security/cwe-502/examples/UnsafeDeserializationGood.rb | 0 {ql => ruby/ql}/src/queries/security/cwe-601/UrlRedirect.qhelp | 0 {ql => ruby/ql}/src/queries/security/cwe-601/UrlRedirect.ql | 0 .../ql}/src/queries/security/cwe-601/examples/redirect_bad.rb | 0 .../ql}/src/queries/security/cwe-601/examples/redirect_good.rb | 0 .../ql}/src/queries/security/cwe-732/WeakFilePermissions.qhelp | 0 .../ql}/src/queries/security/cwe-732/WeakFilePermissions.ql | 0 .../ql}/src/queries/security/cwe-798/HardcodedCredentials.qhelp | 0 .../ql}/src/queries/security/cwe-798/HardcodedCredentials.ql | 0 .../ql}/src/queries/security/cwe-798/HardcodedCredentials.rb | 0 {ql => ruby/ql}/src/queries/summary/LinesOfCode.ql | 0 {ql => ruby/ql}/src/queries/summary/LinesOfUserCode.ql | 0 .../ql}/src/queries/summary/NumberOfFilesExtractedWithErrors.ql | 0 .../src/queries/summary/NumberOfSuccessfullyExtractedFiles.ql | 0 {ql => ruby/ql}/src/queries/variables/DeadStoreOfLocal.ql | 0 {ql => ruby/ql}/src/queries/variables/UninitializedLocal.ql | 0 {ql => ruby/ql}/src/queries/variables/UnusedParameter.ql | 0 {ql => ruby/ql}/test/TestUtilities/InlineExpectationsTest.qll | 0 .../ql}/test/TestUtilities/InlineExpectationsTestPrivate.qll | 0 {ql => ruby/ql}/test/library-tests/ast/Ast.expected | 0 {ql => ruby/ql}/test/library-tests/ast/Ast.ql | 0 {ql => ruby/ql}/test/library-tests/ast/AstDesugar.expected | 0 {ql => ruby/ql}/test/library-tests/ast/AstDesugar.ql | 0 {ql => ruby/ql}/test/library-tests/ast/calls/arguments.expected | 0 {ql => ruby/ql}/test/library-tests/ast/calls/arguments.ql | 0 {ql => ruby/ql}/test/library-tests/ast/calls/calls.expected | 0 {ql => ruby/ql}/test/library-tests/ast/calls/calls.ql | 0 {ql => ruby/ql}/test/library-tests/ast/calls/calls.rb | 0 .../ql}/test/library-tests/ast/constants/constants.expected | 0 {ql => ruby/ql}/test/library-tests/ast/constants/constants.ql | 0 {ql => ruby/ql}/test/library-tests/ast/constants/constants.rb | 0 .../ql}/test/library-tests/ast/control/CaseExpr.expected | 0 {ql => ruby/ql}/test/library-tests/ast/control/CaseExpr.ql | 0 .../ql}/test/library-tests/ast/control/ConditionalExpr.expected | 0 .../ql}/test/library-tests/ast/control/ConditionalExpr.ql | 0 .../ql}/test/library-tests/ast/control/ControlExpr.expected | 0 {ql => ruby/ql}/test/library-tests/ast/control/ControlExpr.ql | 0 {ql => ruby/ql}/test/library-tests/ast/control/Loop.expected | 0 {ql => ruby/ql}/test/library-tests/ast/control/Loop.ql | 0 {ql => ruby/ql}/test/library-tests/ast/control/cases.rb | 0 {ql => ruby/ql}/test/library-tests/ast/control/conditionals.rb | 0 {ql => ruby/ql}/test/library-tests/ast/control/loops.rb | 0 {ql => ruby/ql}/test/library-tests/ast/erb/Erb.expected | 0 {ql => ruby/ql}/test/library-tests/ast/erb/Erb.ql | 0 {ql => ruby/ql}/test/library-tests/ast/erb/template.html.erb | 0 {ql => ruby/ql}/test/library-tests/ast/gems/Gemfile | 0 {ql => ruby/ql}/test/library-tests/ast/gems/lib/test.rb | 0 {ql => ruby/ql}/test/library-tests/ast/gems/test.expected | 0 {ql => ruby/ql}/test/library-tests/ast/gems/test.gemspec | 0 {ql => ruby/ql}/test/library-tests/ast/gems/test.ql | 0 .../ql}/test/library-tests/ast/literals/literals.expected | 0 {ql => ruby/ql}/test/library-tests/ast/literals/literals.ql | 0 {ql => ruby/ql}/test/library-tests/ast/literals/literals.rb | 0 {ql => ruby/ql}/test/library-tests/ast/misc/misc.erb | 0 {ql => ruby/ql}/test/library-tests/ast/misc/misc.expected | 0 {ql => ruby/ql}/test/library-tests/ast/misc/misc.ql | 0 {ql => ruby/ql}/test/library-tests/ast/misc/misc.rb | 0 {ql => ruby/ql}/test/library-tests/ast/modules/classes.expected | 0 {ql => ruby/ql}/test/library-tests/ast/modules/classes.ql | 0 {ql => ruby/ql}/test/library-tests/ast/modules/classes.rb | 0 .../ql}/test/library-tests/ast/modules/module_base.expected | 0 {ql => ruby/ql}/test/library-tests/ast/modules/module_base.ql | 0 {ql => ruby/ql}/test/library-tests/ast/modules/modules.expected | 0 {ql => ruby/ql}/test/library-tests/ast/modules/modules.ql | 0 {ql => ruby/ql}/test/library-tests/ast/modules/modules.rb | 0 .../test/library-tests/ast/modules/singleton_classes.expected | 0 .../ql}/test/library-tests/ast/modules/singleton_classes.ql | 0 .../ql}/test/library-tests/ast/modules/toplevel.expected | 0 {ql => ruby/ql}/test/library-tests/ast/modules/toplevel.ql | 0 {ql => ruby/ql}/test/library-tests/ast/modules/toplevel.rb | 0 .../ql}/test/library-tests/ast/operations/assignment.expected | 0 {ql => ruby/ql}/test/library-tests/ast/operations/assignment.ql | 0 .../ql}/test/library-tests/ast/operations/binary.expected | 0 {ql => ruby/ql}/test/library-tests/ast/operations/binary.ql | 0 .../ql}/test/library-tests/ast/operations/operation.expected | 0 {ql => ruby/ql}/test/library-tests/ast/operations/operation.ql | 0 {ql => ruby/ql}/test/library-tests/ast/operations/operations.rb | 0 .../ql}/test/library-tests/ast/operations/unary.expected | 0 {ql => ruby/ql}/test/library-tests/ast/operations/unary.ql | 0 {ql => ruby/ql}/test/library-tests/ast/params/params.expected | 0 {ql => ruby/ql}/test/library-tests/ast/params/params.ql | 0 {ql => ruby/ql}/test/library-tests/ast/params/params.rb | 0 .../ql}/test/library-tests/controlflow/graph/Cfg.expected | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/Cfg.ql | 0 .../ql}/test/library-tests/controlflow/graph/break_ensure.rb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/case.rb | 0 .../ql}/test/library-tests/controlflow/graph/cfg.html.erb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/cfg.rb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/desugar.rb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/exit.rb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/heredoc.rb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/ifs.rb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/loops.rb | 0 {ql => ruby/ql}/test/library-tests/controlflow/graph/raise.rb | 0 {ql => ruby/ql}/test/library-tests/dataflow/api-graphs/test1.rb | 0 .../ql}/test/library-tests/dataflow/api-graphs/use.expected | 0 {ql => ruby/ql}/test/library-tests/dataflow/api-graphs/use.ql | 0 .../dataflow/barrier-guards/barrier-guards.expected | 0 .../library-tests/dataflow/barrier-guards/barrier-guards.ql | 0 .../library-tests/dataflow/barrier-guards/barrier-guards.rb | 0 .../dataflow/call-sensitivity/call-sensitivity.expected | 0 .../library-tests/dataflow/call-sensitivity/call-sensitivity.ql | 0 .../library-tests/dataflow/call-sensitivity/call_sensitivity.rb | 0 .../ql}/test/library-tests/dataflow/local/DataflowStep.expected | 0 .../ql}/test/library-tests/dataflow/local/DataflowStep.ql | 0 .../ql}/test/library-tests/dataflow/local/ReturnNodes.expected | 0 .../ql}/test/library-tests/dataflow/local/ReturnNodes.ql | 0 .../ql}/test/library-tests/dataflow/local/local_dataflow.rb | 0 .../test/library-tests/dataflow/summaries/Summaries.expected | 0 .../ql}/test/library-tests/dataflow/summaries/Summaries.ql | 0 .../ql}/test/library-tests/dataflow/summaries/summaries.rb | 0 .../ql}/test/library-tests/frameworks/ActionController.expected | 0 .../ql}/test/library-tests/frameworks/ActionController.ql | 0 .../ql}/test/library-tests/frameworks/ActionView.expected | 0 {ql => ruby/ql}/test/library-tests/frameworks/ActionView.ql | 0 .../ql}/test/library-tests/frameworks/ActiveRecord.expected | 0 {ql => ruby/ql}/test/library-tests/frameworks/ActiveRecord.ql | 0 .../ql}/test/library-tests/frameworks/ActiveRecordInjection.rb | 0 .../ql}/test/library-tests/frameworks/CommandExecution.rb | 0 {ql => ruby/ql}/test/library-tests/frameworks/Eval.rb | 0 {ql => ruby/ql}/test/library-tests/frameworks/Files.expected | 0 {ql => ruby/ql}/test/library-tests/frameworks/Files.ql | 0 {ql => ruby/ql}/test/library-tests/frameworks/Files.rb | 0 .../ql}/test/library-tests/frameworks/StandardLibrary.expected | 0 .../ql}/test/library-tests/frameworks/StandardLibrary.ql | 0 .../library-tests/frameworks/app/components/DummyComponent.rb | 0 .../frameworks/app/controllers/foo/bars_controller.rb | 0 .../frameworks/app/views/foo/bars/_widget.html.erb | 0 .../library-tests/frameworks/app/views/foo/bars/show.html.erb | 0 .../test/library-tests/frameworks/http_clients/Excon.expected | 0 .../ql}/test/library-tests/frameworks/http_clients/Excon.ql | 0 .../ql}/test/library-tests/frameworks/http_clients/Excon.rb | 0 .../test/library-tests/frameworks/http_clients/Faraday.expected | 0 .../ql}/test/library-tests/frameworks/http_clients/Faraday.ql | 0 .../ql}/test/library-tests/frameworks/http_clients/Faraday.rb | 0 .../test/library-tests/frameworks/http_clients/NetHTTP.expected | 0 .../ql}/test/library-tests/frameworks/http_clients/NetHTTP.ql | 0 .../ql}/test/library-tests/frameworks/http_clients/NetHTTP.rb | 0 .../library-tests/frameworks/http_clients/RestClient.expected | 0 .../test/library-tests/frameworks/http_clients/RestClient.ql | 0 .../test/library-tests/frameworks/http_clients/RestClient.rb | 0 {ql => ruby/ql}/test/library-tests/modules/ancestors.expected | 0 {ql => ruby/ql}/test/library-tests/modules/ancestors.ql | 0 {ql => ruby/ql}/test/library-tests/modules/callgraph.expected | 0 {ql => ruby/ql}/test/library-tests/modules/callgraph.ql | 0 {ql => ruby/ql}/test/library-tests/modules/calls.rb | 0 {ql => ruby/ql}/test/library-tests/modules/hello.rb | 0 {ql => ruby/ql}/test/library-tests/modules/methods.expected | 0 {ql => ruby/ql}/test/library-tests/modules/methods.ql | 0 {ql => ruby/ql}/test/library-tests/modules/modules.expected | 0 {ql => ruby/ql}/test/library-tests/modules/modules.ql | 0 {ql => ruby/ql}/test/library-tests/modules/modules.rb | 0 {ql => ruby/ql}/test/library-tests/modules/private.rb | 0 .../ql}/test/library-tests/modules/superclasses.expected | 0 {ql => ruby/ql}/test/library-tests/modules/superclasses.ql | 0 {ql => ruby/ql}/test/library-tests/regexp/parse.expected | 0 {ql => ruby/ql}/test/library-tests/regexp/parse.ql | 0 {ql => ruby/ql}/test/library-tests/regexp/regexp.rb | 0 {ql => ruby/ql}/test/library-tests/variables/class_variables.rb | 0 .../ql}/test/library-tests/variables/instance_variables.rb | 0 {ql => ruby/ql}/test/library-tests/variables/nested_scopes.rb | 0 {ql => ruby/ql}/test/library-tests/variables/parameter.expected | 0 {ql => ruby/ql}/test/library-tests/variables/parameter.ql | 0 {ql => ruby/ql}/test/library-tests/variables/parameters.rb | 0 {ql => ruby/ql}/test/library-tests/variables/scopes.rb | 0 {ql => ruby/ql}/test/library-tests/variables/ssa.expected | 0 {ql => ruby/ql}/test/library-tests/variables/ssa.ql | 0 {ql => ruby/ql}/test/library-tests/variables/ssa.rb | 0 {ql => ruby/ql}/test/library-tests/variables/varaccess.expected | 0 {ql => ruby/ql}/test/library-tests/variables/varaccess.ql | 0 {ql => ruby/ql}/test/library-tests/variables/variable.expected | 0 {ql => ruby/ql}/test/library-tests/variables/variable.ql | 0 {ql => ruby/ql}/test/library-tests/variables/varscopes.expected | 0 {ql => ruby/ql}/test/library-tests/variables/varscopes.ql | 0 {ql => ruby/ql}/test/qlpack.lock.yml | 0 {ql => ruby/ql}/test/qlpack.yml | 0 .../ql}/test/query-tests/AlertSuppression/.gitattributes | 0 .../test/query-tests/AlertSuppression/AlertSuppression.expected | 0 .../test/query-tests/AlertSuppression/AlertSuppression.qlref | 0 {ql => ruby/ql}/test/query-tests/AlertSuppression/Test.rb | 0 .../ql}/test/query-tests/AlertSuppression/TestWindows.rb | 0 {ql => ruby/ql}/test/query-tests/analysis/Definitions.expected | 0 {ql => ruby/ql}/test/query-tests/analysis/Definitions.qlref | 0 {ql => ruby/ql}/test/query-tests/analysis/Definitions.rb | 0 .../ql}/test/query-tests/diagnostics/ExtractionErrors.expected | 0 .../ql}/test/query-tests/diagnostics/ExtractionErrors.qlref | 0 .../diagnostics/NumberOfFilesExtractedWithErrors.expected | 0 .../diagnostics/NumberOfFilesExtractedWithErrors.qlref | 0 .../diagnostics/NumberOfSuccessfullyExtractedFiles.expected | 0 .../diagnostics/NumberOfSuccessfullyExtractedFiles.qlref | 0 .../query-tests/diagnostics/SuccessfullyExtractedFiles.expected | 0 .../query-tests/diagnostics/SuccessfullyExtractedFiles.qlref | 0 {ql => ruby/ql}/test/query-tests/diagnostics/src/bar.erb | 0 {ql => ruby/ql}/test/query-tests/diagnostics/src/foo.rb | 0 {ql => ruby/ql}/test/query-tests/diagnostics/src/not_ruby.rb | 0 .../ql}/test/query-tests/diagnostics/src/unsupported_feature.rb | 0 .../ql}/test/query-tests/diagnostics/src/vendor/cache/lib.rb | 0 {ql => ruby/ql}/test/query-tests/metrics/FLines/Empty.rb | 0 {ql => ruby/ql}/test/query-tests/metrics/FLines/FLines.expected | 0 {ql => ruby/ql}/test/query-tests/metrics/FLines/FLines.qlref | 0 {ql => ruby/ql}/test/query-tests/metrics/FLines/FLines.rb | 0 .../ql}/test/query-tests/metrics/FLines/FLinesOfCode.expected | 0 .../ql}/test/query-tests/metrics/FLines/FLinesOfCode.qlref | 0 .../test/query-tests/metrics/FLines/FLinesOfComments.expected | 0 .../ql}/test/query-tests/metrics/FLines/FLinesOfComments.qlref | 0 .../test/query-tests/performance/UseDetect/UseDetect.expected | 0 .../ql}/test/query-tests/performance/UseDetect/UseDetect.qlref | 0 .../ql}/test/query-tests/performance/UseDetect/UseDetect.rb | 0 .../test/query-tests/security/cwe-078/CommandInjection.expected | 0 .../test/query-tests/security/cwe-078/CommandInjection.qlref | 0 .../ql}/test/query-tests/security/cwe-078/CommandInjection.rb | 0 .../ql}/test/query-tests/security/cwe-079/ReflectedXSS.expected | 0 .../ql}/test/query-tests/security/cwe-079/ReflectedXSS.qlref | 0 .../security/cwe-079/app/controllers/foo/bars_controller.rb | 0 .../security/cwe-079/app/views/foo/bars/_widget.html.erb | 0 .../security/cwe-079/app/views/foo/bars/show.html.erb | 0 .../test/query-tests/security/cwe-089/ActiveRecordInjection.rb | 0 .../ql}/test/query-tests/security/cwe-089/SqlInjection.expected | 0 .../ql}/test/query-tests/security/cwe-089/SqlInjection.qlref | 0 .../test/query-tests/security/cwe-094/CodeInjection.expected | 0 .../ql}/test/query-tests/security/cwe-094/CodeInjection.qlref | 0 .../ql}/test/query-tests/security/cwe-094/CodeInjection.rb | 0 .../security/cwe-1333-exponential-redos/ANodeBlog-LICENSE | 0 .../security/cwe-1333-exponential-redos/CodeMirror-LICENSE | 0 .../security/cwe-1333-exponential-redos/Prism-LICENSE | 0 .../security/cwe-1333-exponential-redos/Prototype.js-LICENSE | 0 .../security/cwe-1333-exponential-redos/ReDoS.expected | 0 .../query-tests/security/cwe-1333-exponential-redos/ReDoS.qlref | 0 .../security/cwe-1333-exponential-redos/brace-expansion-LICENSE | 0 .../security/cwe-1333-exponential-redos/jest-LICENSE | 0 .../security/cwe-1333-exponential-redos/knockout-LICENSE | 0 .../security/cwe-1333-exponential-redos/marked-LICENSE | 0 .../test/query-tests/security/cwe-1333-exponential-redos/tst.rb | 0 .../security/cwe-1333-polynomial-redos/PolynomialReDoS.expected | 0 .../security/cwe-1333-polynomial-redos/PolynomialReDoS.qlref | 0 .../security/cwe-1333-polynomial-redos/PolynomialReDoS.rb | 0 .../query-tests/security/cwe-502/UnsafeDeserialization.expected | 0 .../query-tests/security/cwe-502/UnsafeDeserialization.qlref | 0 .../test/query-tests/security/cwe-502/UnsafeDeserialization.rb | 0 .../ql}/test/query-tests/security/cwe-601/UrlRedirect.expected | 0 .../ql}/test/query-tests/security/cwe-601/UrlRedirect.qlref | 0 .../ql}/test/query-tests/security/cwe-601/UrlRedirect.rb | 0 .../ql}/test/query-tests/security/cwe-732/FilePermissions.rb | 0 .../query-tests/security/cwe-732/WeakFilePermissions.expected | 0 .../test/query-tests/security/cwe-732/WeakFilePermissions.qlref | 0 .../query-tests/security/cwe-798/HardcodedCredentials.expected | 0 .../query-tests/security/cwe-798/HardcodedCredentials.qlref | 0 .../test/query-tests/security/cwe-798/HardcodedCredentials.rb | 0 {ql => ruby/ql}/test/query-tests/summary/LinesOfCode.expected | 0 {ql => ruby/ql}/test/query-tests/summary/LinesOfCode.qlref | 0 .../ql}/test/query-tests/summary/LinesOfUserCode.expected | 0 {ql => ruby/ql}/test/query-tests/summary/LinesOfUserCode.qlref | 0 {ql => ruby/ql}/test/query-tests/summary/src/foo.rb | 0 .../ql}/test/query-tests/summary/src/vendor/cache/lib.rb | 0 {scripts => ruby/scripts}/create-extractor-pack.ps1 | 0 {scripts => ruby/scripts}/create-extractor-pack.sh | 0 {scripts => ruby/scripts}/identical-files.json | 0 {scripts => ruby/scripts}/merge_stats.py | 0 {scripts => ruby/scripts}/prepare-db-upgrade.sh | 0 {scripts => ruby/scripts}/sync-identical-files.py | 0 {tools => ruby/tools}/autobuild.cmd | 0 {tools => ruby/tools}/autobuild.sh | 0 {tools => ruby/tools}/index-files.cmd | 0 {tools => ruby/tools}/index-files.sh | 0 {tools => ruby/tools}/qltest.cmd | 0 {tools => ruby/tools}/qltest.sh | 0 465 files changed, 1 insertion(+), 1 deletion(-) rename .codeqlmanifest.json => ruby/.codeqlmanifest.json (100%) rename .gitattributes => ruby/.gitattributes (100%) rename .gitignore => ruby/.gitignore (100%) rename {.vscode => ruby/.vscode}/tasks.json (100%) rename CODE_OF_CONDUCT.md => ruby/CODE_OF_CONDUCT.md (100%) rename Cargo.lock => ruby/Cargo.lock (100%) rename Cargo.toml => ruby/Cargo.toml (100%) rename LICENSE => ruby/LICENSE (100%) rename Makefile => ruby/Makefile (100%) rename README.md => ruby/README.md (100%) rename {autobuilder => ruby/autobuilder}/Cargo.toml (100%) rename {autobuilder => ruby/autobuilder}/src/main.rs (100%) rename codeql => ruby/codeql (100%) rename codeql-extractor.yml => ruby/codeql-extractor.yml (100%) rename codeql-ruby.code-workspace => ruby/codeql-ruby.code-workspace (100%) rename {doc => ruby/doc}/prepare-db-upgrade.md (100%) rename {extractor => ruby/extractor}/Cargo.toml (100%) rename {extractor => ruby/extractor}/src/extractor.rs (100%) rename {extractor => ruby/extractor}/src/main.rs (100%) rename {generator => ruby/generator}/Cargo.toml (100%) rename {generator => ruby/generator}/src/dbscheme.rs (100%) rename {generator => ruby/generator}/src/language.rs (100%) rename {generator => ruby/generator}/src/main.rs (100%) rename {generator => ruby/generator}/src/ql.rs (100%) rename {generator => ruby/generator}/src/ql_gen.rs (100%) rename {node-types => ruby/node-types}/Cargo.toml (100%) rename {node-types => ruby/node-types}/src/lib.rs (100%) rename {ql => ruby/ql}/consistency-queries/AstConsistency.ql (100%) rename {ql => ruby/ql}/consistency-queries/CfgConsistency.ql (100%) rename {ql => ruby/ql}/consistency-queries/DataFlowConsistency.ql (100%) rename {ql => ruby/ql}/consistency-queries/SsaConsistency.ql (100%) rename {ql => ruby/ql}/consistency-queries/VariablesConsistency.ql (100%) rename {ql => ruby/ql}/consistency-queries/qlpack.yml (100%) rename {ql => ruby/ql}/docs/experimental.md (100%) rename {ql => ruby/ql}/examples/qlpack.lock.yml (100%) rename {ql => ruby/ql}/examples/qlpack.yml (100%) rename {ql => ruby/ql}/examples/queries.xml (100%) rename {ql => ruby/ql}/examples/snippets/emptythen.ql (100%) rename {ql => ruby/ql}/lib/codeql/IDEContextual.qll (100%) rename {ql => ruby/ql}/lib/codeql/Locations.qll (100%) rename {ql => ruby/ql}/lib/codeql/files/FileSystem.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/AST.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ApiGraphs.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/CFG.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/Concepts.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/DataFlow.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/Diagnostics.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/Frameworks.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/TaintTracking.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Call.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Constant.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Control.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Erb.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Expr.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Literal.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Method.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Module.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Operation.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Parameter.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Pattern.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Scope.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Statement.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/Variable.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/AST.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Call.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Erb.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Module.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Operation.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Parameter.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Pattern.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Scope.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Synthesis.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/TreeSitter.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/ast/internal/Variable.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/BasicBlocks.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/CfgNodes.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/ControlFlowGraph.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/internal/Completion.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplSpecific.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/internal/NonReturning.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/controlflow/internal/Splitting.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/BarrierGuards.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/FlowSummary.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/RemoteFlowSources.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/SSA.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/SsaImpl.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/SsaImplSpecific.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/TaintTrackingPublic.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingParameter.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/filters/GeneratedCode.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/ActionController.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/ActionView.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/ActiveRecord.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/Files.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/HTTPClients.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/StandardLibrary.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/http_clients/Excon.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/http_clients/Faraday.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/http_clients/NetHTTP.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/frameworks/http_clients/RestClient.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/printAst.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/regexp/ExponentialBackTracking.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/regexp/ParseRegExp.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/regexp/PolynomialReDoSCustomizations.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/regexp/PolynomialReDoSQuery.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/regexp/ReDoSUtil.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/regexp/RegExpTreeView.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/CodeInjectionCustomizations.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/CodeInjectionQuery.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/CommandInjectionCustomizations.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/CommandInjectionQuery.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/ReflectedXSSCustomizations.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/ReflectedXSSQuery.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/UnsafeDeserializationCustomizations.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/UnsafeDeserializationQuery.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/UrlRedirectCustomizations.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/security/UrlRedirectQuery.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/typetracking/TypeTracker.qll (100%) rename {ql => ruby/ql}/lib/codeql/ruby/typetracking/TypeTrackerSpecific.qll (100%) rename {ql => ruby/ql}/lib/qlpack.lock.yml (100%) rename {ql => ruby/ql}/lib/qlpack.yml (100%) rename {ql => ruby/ql}/lib/ruby.dbscheme (100%) rename {ql => ruby/ql}/lib/ruby.dbscheme.stats (100%) rename {ql => ruby/ql}/lib/ruby.qll (100%) rename {ql => ruby/ql}/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/old.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/ruby.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/upgrade.properties (100%) rename {ql => ruby/ql}/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/old.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/ruby.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/upgrade.properties (100%) rename {ql => ruby/ql}/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/old.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme.stats (100%) rename {ql => ruby/ql}/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/upgrade.properties (100%) rename {ql => ruby/ql}/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/old.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/ruby.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/upgrade.properties (100%) rename {ql => ruby/ql}/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/old.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/ruby.dbscheme (100%) rename {ql => ruby/ql}/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/upgrade.properties (100%) rename {ql => ruby/ql}/lib/upgrades/initial/ruby.dbscheme (100%) rename {ql => ruby/ql}/src/AlertSuppression.ql (100%) rename {ql => ruby/ql}/src/codeql-suites/ruby-code-scanning.qls (100%) rename {ql => ruby/ql}/src/codeql-suites/ruby-lgtm-full.qls (100%) rename {ql => ruby/ql}/src/codeql-suites/ruby-lgtm.qls (100%) rename {ql => ruby/ql}/src/codeql-suites/ruby-security-and-quality.qls (100%) rename {ql => ruby/ql}/src/codeql-suites/ruby-security-extended.qls (100%) rename {ql => ruby/ql}/src/experimental/README.md (100%) rename {ql => ruby/ql}/src/experimental/performance/UseDetect.ql (100%) rename {ql => ruby/ql}/src/filters/ClassifyFiles.ql (100%) rename {ql => ruby/ql}/src/ide-contextual-queries/localDefinitions.ql (100%) rename {ql => ruby/ql}/src/ide-contextual-queries/localReferences.ql (100%) rename {ql => ruby/ql}/src/ide-contextual-queries/printAst.ql (100%) rename {ql => ruby/ql}/src/qlpack.lock.yml (100%) rename {ql => ruby/ql}/src/qlpack.yml (100%) rename {ql => ruby/ql}/src/queries/analysis/Definitions.ql (100%) rename {ql => ruby/ql}/src/queries/diagnostics/ExtractionErrors.ql (100%) rename {ql => ruby/ql}/src/queries/diagnostics/SuccessfullyExtractedFiles.ql (100%) rename {ql => ruby/ql}/src/queries/metrics/FLines.ql (100%) rename {ql => ruby/ql}/src/queries/metrics/FLinesOfCode.ql (100%) rename {ql => ruby/ql}/src/queries/metrics/FLinesOfComments.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-078/CommandInjection.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-078/CommandInjection.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-078/examples/command_injection.rb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-079/ReflectedXSS.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-079/ReflectedXSS.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-079/examples/reflective_xss.html.erb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-079/examples/safe.html.erb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-089/SqlInjection.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-089/SqlInjection.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-089/examples/SqlInjection.rb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-094/CodeInjection.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-094/CodeInjection.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-094/examples/code_injection.rb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-1333/PolynomialReDoS.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-1333/PolynomialReDoS.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-1333/ReDoS.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-1333/ReDoS.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-1333/ReDoSIntroduction.inc.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-502/UnsafeDeserialization.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-502/UnsafeDeserialization.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-502/examples/UnsafeDeserializationBad.rb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-502/examples/UnsafeDeserializationGood.rb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-601/UrlRedirect.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-601/UrlRedirect.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-601/examples/redirect_bad.rb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-601/examples/redirect_good.rb (100%) rename {ql => ruby/ql}/src/queries/security/cwe-732/WeakFilePermissions.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-732/WeakFilePermissions.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-798/HardcodedCredentials.qhelp (100%) rename {ql => ruby/ql}/src/queries/security/cwe-798/HardcodedCredentials.ql (100%) rename {ql => ruby/ql}/src/queries/security/cwe-798/HardcodedCredentials.rb (100%) rename {ql => ruby/ql}/src/queries/summary/LinesOfCode.ql (100%) rename {ql => ruby/ql}/src/queries/summary/LinesOfUserCode.ql (100%) rename {ql => ruby/ql}/src/queries/summary/NumberOfFilesExtractedWithErrors.ql (100%) rename {ql => ruby/ql}/src/queries/summary/NumberOfSuccessfullyExtractedFiles.ql (100%) rename {ql => ruby/ql}/src/queries/variables/DeadStoreOfLocal.ql (100%) rename {ql => ruby/ql}/src/queries/variables/UninitializedLocal.ql (100%) rename {ql => ruby/ql}/src/queries/variables/UnusedParameter.ql (100%) rename {ql => ruby/ql}/test/TestUtilities/InlineExpectationsTest.qll (100%) rename {ql => ruby/ql}/test/TestUtilities/InlineExpectationsTestPrivate.qll (100%) rename {ql => ruby/ql}/test/library-tests/ast/Ast.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/Ast.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/AstDesugar.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/AstDesugar.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/calls/arguments.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/calls/arguments.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/calls/calls.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/calls/calls.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/calls/calls.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/constants/constants.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/constants/constants.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/constants/constants.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/CaseExpr.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/CaseExpr.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/ConditionalExpr.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/ConditionalExpr.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/ControlExpr.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/ControlExpr.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/Loop.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/Loop.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/cases.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/conditionals.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/control/loops.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/erb/Erb.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/erb/Erb.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/erb/template.html.erb (100%) rename {ql => ruby/ql}/test/library-tests/ast/gems/Gemfile (100%) rename {ql => ruby/ql}/test/library-tests/ast/gems/lib/test.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/gems/test.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/gems/test.gemspec (100%) rename {ql => ruby/ql}/test/library-tests/ast/gems/test.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/literals/literals.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/literals/literals.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/literals/literals.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/misc/misc.erb (100%) rename {ql => ruby/ql}/test/library-tests/ast/misc/misc.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/misc/misc.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/misc/misc.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/classes.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/classes.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/classes.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/module_base.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/module_base.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/modules.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/modules.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/modules.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/singleton_classes.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/singleton_classes.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/toplevel.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/toplevel.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/modules/toplevel.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/assignment.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/assignment.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/binary.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/binary.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/operation.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/operation.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/operations.rb (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/unary.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/operations/unary.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/params/params.expected (100%) rename {ql => ruby/ql}/test/library-tests/ast/params/params.ql (100%) rename {ql => ruby/ql}/test/library-tests/ast/params/params.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/Cfg.expected (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/Cfg.ql (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/break_ensure.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/case.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/cfg.html.erb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/cfg.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/desugar.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/exit.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/heredoc.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/ifs.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/loops.rb (100%) rename {ql => ruby/ql}/test/library-tests/controlflow/graph/raise.rb (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/api-graphs/test1.rb (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/api-graphs/use.expected (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/api-graphs/use.ql (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/barrier-guards/barrier-guards.expected (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/barrier-guards/barrier-guards.ql (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/barrier-guards/barrier-guards.rb (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/call-sensitivity/call-sensitivity.ql (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/call-sensitivity/call_sensitivity.rb (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/local/DataflowStep.expected (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/local/DataflowStep.ql (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/local/ReturnNodes.expected (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/local/ReturnNodes.ql (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/local/local_dataflow.rb (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/summaries/Summaries.expected (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/summaries/Summaries.ql (100%) rename {ql => ruby/ql}/test/library-tests/dataflow/summaries/summaries.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/ActionController.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/ActionController.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/ActionView.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/ActionView.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/ActiveRecord.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/ActiveRecord.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/ActiveRecordInjection.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/CommandExecution.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/Eval.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/Files.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/Files.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/Files.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/StandardLibrary.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/StandardLibrary.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/app/components/DummyComponent.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/app/controllers/foo/bars_controller.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/app/views/foo/bars/_widget.html.erb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/app/views/foo/bars/show.html.erb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/Excon.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/Excon.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/Excon.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/Faraday.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/Faraday.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/Faraday.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/NetHTTP.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/NetHTTP.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/NetHTTP.rb (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/RestClient.expected (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/RestClient.ql (100%) rename {ql => ruby/ql}/test/library-tests/frameworks/http_clients/RestClient.rb (100%) rename {ql => ruby/ql}/test/library-tests/modules/ancestors.expected (100%) rename {ql => ruby/ql}/test/library-tests/modules/ancestors.ql (100%) rename {ql => ruby/ql}/test/library-tests/modules/callgraph.expected (100%) rename {ql => ruby/ql}/test/library-tests/modules/callgraph.ql (100%) rename {ql => ruby/ql}/test/library-tests/modules/calls.rb (100%) rename {ql => ruby/ql}/test/library-tests/modules/hello.rb (100%) rename {ql => ruby/ql}/test/library-tests/modules/methods.expected (100%) rename {ql => ruby/ql}/test/library-tests/modules/methods.ql (100%) rename {ql => ruby/ql}/test/library-tests/modules/modules.expected (100%) rename {ql => ruby/ql}/test/library-tests/modules/modules.ql (100%) rename {ql => ruby/ql}/test/library-tests/modules/modules.rb (100%) rename {ql => ruby/ql}/test/library-tests/modules/private.rb (100%) rename {ql => ruby/ql}/test/library-tests/modules/superclasses.expected (100%) rename {ql => ruby/ql}/test/library-tests/modules/superclasses.ql (100%) rename {ql => ruby/ql}/test/library-tests/regexp/parse.expected (100%) rename {ql => ruby/ql}/test/library-tests/regexp/parse.ql (100%) rename {ql => ruby/ql}/test/library-tests/regexp/regexp.rb (100%) rename {ql => ruby/ql}/test/library-tests/variables/class_variables.rb (100%) rename {ql => ruby/ql}/test/library-tests/variables/instance_variables.rb (100%) rename {ql => ruby/ql}/test/library-tests/variables/nested_scopes.rb (100%) rename {ql => ruby/ql}/test/library-tests/variables/parameter.expected (100%) rename {ql => ruby/ql}/test/library-tests/variables/parameter.ql (100%) rename {ql => ruby/ql}/test/library-tests/variables/parameters.rb (100%) rename {ql => ruby/ql}/test/library-tests/variables/scopes.rb (100%) rename {ql => ruby/ql}/test/library-tests/variables/ssa.expected (100%) rename {ql => ruby/ql}/test/library-tests/variables/ssa.ql (100%) rename {ql => ruby/ql}/test/library-tests/variables/ssa.rb (100%) rename {ql => ruby/ql}/test/library-tests/variables/varaccess.expected (100%) rename {ql => ruby/ql}/test/library-tests/variables/varaccess.ql (100%) rename {ql => ruby/ql}/test/library-tests/variables/variable.expected (100%) rename {ql => ruby/ql}/test/library-tests/variables/variable.ql (100%) rename {ql => ruby/ql}/test/library-tests/variables/varscopes.expected (100%) rename {ql => ruby/ql}/test/library-tests/variables/varscopes.ql (100%) rename {ql => ruby/ql}/test/qlpack.lock.yml (100%) rename {ql => ruby/ql}/test/qlpack.yml (100%) rename {ql => ruby/ql}/test/query-tests/AlertSuppression/.gitattributes (100%) rename {ql => ruby/ql}/test/query-tests/AlertSuppression/AlertSuppression.expected (100%) rename {ql => ruby/ql}/test/query-tests/AlertSuppression/AlertSuppression.qlref (100%) rename {ql => ruby/ql}/test/query-tests/AlertSuppression/Test.rb (100%) rename {ql => ruby/ql}/test/query-tests/AlertSuppression/TestWindows.rb (100%) rename {ql => ruby/ql}/test/query-tests/analysis/Definitions.expected (100%) rename {ql => ruby/ql}/test/query-tests/analysis/Definitions.qlref (100%) rename {ql => ruby/ql}/test/query-tests/analysis/Definitions.rb (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/ExtractionErrors.expected (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/ExtractionErrors.qlref (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.expected (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.qlref (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.expected (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.qlref (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/SuccessfullyExtractedFiles.expected (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/SuccessfullyExtractedFiles.qlref (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/src/bar.erb (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/src/foo.rb (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/src/not_ruby.rb (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/src/unsupported_feature.rb (100%) rename {ql => ruby/ql}/test/query-tests/diagnostics/src/vendor/cache/lib.rb (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/Empty.rb (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/FLines.expected (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/FLines.qlref (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/FLines.rb (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/FLinesOfCode.expected (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/FLinesOfCode.qlref (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/FLinesOfComments.expected (100%) rename {ql => ruby/ql}/test/query-tests/metrics/FLines/FLinesOfComments.qlref (100%) rename {ql => ruby/ql}/test/query-tests/performance/UseDetect/UseDetect.expected (100%) rename {ql => ruby/ql}/test/query-tests/performance/UseDetect/UseDetect.qlref (100%) rename {ql => ruby/ql}/test/query-tests/performance/UseDetect/UseDetect.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-078/CommandInjection.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-078/CommandInjection.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-078/CommandInjection.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-079/ReflectedXSS.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-079/ReflectedXSS.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-079/app/controllers/foo/bars_controller.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-079/app/views/foo/bars/_widget.html.erb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-079/app/views/foo/bars/show.html.erb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-089/ActiveRecordInjection.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-089/SqlInjection.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-089/SqlInjection.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-094/CodeInjection.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-094/CodeInjection.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-094/CodeInjection.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/ANodeBlog-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/CodeMirror-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/Prism-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/Prototype.js-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/brace-expansion-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/jest-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/knockout-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/marked-LICENSE (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-exponential-redos/tst.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-502/UnsafeDeserialization.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-502/UnsafeDeserialization.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-502/UnsafeDeserialization.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-601/UrlRedirect.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-601/UrlRedirect.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-601/UrlRedirect.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-732/FilePermissions.rb (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-732/WeakFilePermissions.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-732/WeakFilePermissions.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-798/HardcodedCredentials.expected (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-798/HardcodedCredentials.qlref (100%) rename {ql => ruby/ql}/test/query-tests/security/cwe-798/HardcodedCredentials.rb (100%) rename {ql => ruby/ql}/test/query-tests/summary/LinesOfCode.expected (100%) rename {ql => ruby/ql}/test/query-tests/summary/LinesOfCode.qlref (100%) rename {ql => ruby/ql}/test/query-tests/summary/LinesOfUserCode.expected (100%) rename {ql => ruby/ql}/test/query-tests/summary/LinesOfUserCode.qlref (100%) rename {ql => ruby/ql}/test/query-tests/summary/src/foo.rb (100%) rename {ql => ruby/ql}/test/query-tests/summary/src/vendor/cache/lib.rb (100%) rename {scripts => ruby/scripts}/create-extractor-pack.ps1 (100%) rename {scripts => ruby/scripts}/create-extractor-pack.sh (100%) rename {scripts => ruby/scripts}/identical-files.json (100%) rename {scripts => ruby/scripts}/merge_stats.py (100%) rename {scripts => ruby/scripts}/prepare-db-upgrade.sh (100%) rename {scripts => ruby/scripts}/sync-identical-files.py (100%) rename {tools => ruby/tools}/autobuild.cmd (100%) rename {tools => ruby/tools}/autobuild.sh (100%) rename {tools => ruby/tools}/index-files.cmd (100%) rename {tools => ruby/tools}/index-files.sh (100%) rename {tools => ruby/tools}/qltest.cmd (100%) rename {tools => ruby/tools}/qltest.sh (100%) diff --git a/.gitmodules b/.gitmodules index b9b6762c49b3..1372e928c4e4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "codeql"] - path = codeql + path = ruby/codeql url = https://github.com/github/codeql.git diff --git a/.codeqlmanifest.json b/ruby/.codeqlmanifest.json similarity index 100% rename from .codeqlmanifest.json rename to ruby/.codeqlmanifest.json diff --git a/.gitattributes b/ruby/.gitattributes similarity index 100% rename from .gitattributes rename to ruby/.gitattributes diff --git a/.gitignore b/ruby/.gitignore similarity index 100% rename from .gitignore rename to ruby/.gitignore diff --git a/.vscode/tasks.json b/ruby/.vscode/tasks.json similarity index 100% rename from .vscode/tasks.json rename to ruby/.vscode/tasks.json diff --git a/CODE_OF_CONDUCT.md b/ruby/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to ruby/CODE_OF_CONDUCT.md diff --git a/Cargo.lock b/ruby/Cargo.lock similarity index 100% rename from Cargo.lock rename to ruby/Cargo.lock diff --git a/Cargo.toml b/ruby/Cargo.toml similarity index 100% rename from Cargo.toml rename to ruby/Cargo.toml diff --git a/LICENSE b/ruby/LICENSE similarity index 100% rename from LICENSE rename to ruby/LICENSE diff --git a/Makefile b/ruby/Makefile similarity index 100% rename from Makefile rename to ruby/Makefile diff --git a/README.md b/ruby/README.md similarity index 100% rename from README.md rename to ruby/README.md diff --git a/autobuilder/Cargo.toml b/ruby/autobuilder/Cargo.toml similarity index 100% rename from autobuilder/Cargo.toml rename to ruby/autobuilder/Cargo.toml diff --git a/autobuilder/src/main.rs b/ruby/autobuilder/src/main.rs similarity index 100% rename from autobuilder/src/main.rs rename to ruby/autobuilder/src/main.rs diff --git a/codeql b/ruby/codeql similarity index 100% rename from codeql rename to ruby/codeql diff --git a/codeql-extractor.yml b/ruby/codeql-extractor.yml similarity index 100% rename from codeql-extractor.yml rename to ruby/codeql-extractor.yml diff --git a/codeql-ruby.code-workspace b/ruby/codeql-ruby.code-workspace similarity index 100% rename from codeql-ruby.code-workspace rename to ruby/codeql-ruby.code-workspace diff --git a/doc/prepare-db-upgrade.md b/ruby/doc/prepare-db-upgrade.md similarity index 100% rename from doc/prepare-db-upgrade.md rename to ruby/doc/prepare-db-upgrade.md diff --git a/extractor/Cargo.toml b/ruby/extractor/Cargo.toml similarity index 100% rename from extractor/Cargo.toml rename to ruby/extractor/Cargo.toml diff --git a/extractor/src/extractor.rs b/ruby/extractor/src/extractor.rs similarity index 100% rename from extractor/src/extractor.rs rename to ruby/extractor/src/extractor.rs diff --git a/extractor/src/main.rs b/ruby/extractor/src/main.rs similarity index 100% rename from extractor/src/main.rs rename to ruby/extractor/src/main.rs diff --git a/generator/Cargo.toml b/ruby/generator/Cargo.toml similarity index 100% rename from generator/Cargo.toml rename to ruby/generator/Cargo.toml diff --git a/generator/src/dbscheme.rs b/ruby/generator/src/dbscheme.rs similarity index 100% rename from generator/src/dbscheme.rs rename to ruby/generator/src/dbscheme.rs diff --git a/generator/src/language.rs b/ruby/generator/src/language.rs similarity index 100% rename from generator/src/language.rs rename to ruby/generator/src/language.rs diff --git a/generator/src/main.rs b/ruby/generator/src/main.rs similarity index 100% rename from generator/src/main.rs rename to ruby/generator/src/main.rs diff --git a/generator/src/ql.rs b/ruby/generator/src/ql.rs similarity index 100% rename from generator/src/ql.rs rename to ruby/generator/src/ql.rs diff --git a/generator/src/ql_gen.rs b/ruby/generator/src/ql_gen.rs similarity index 100% rename from generator/src/ql_gen.rs rename to ruby/generator/src/ql_gen.rs diff --git a/node-types/Cargo.toml b/ruby/node-types/Cargo.toml similarity index 100% rename from node-types/Cargo.toml rename to ruby/node-types/Cargo.toml diff --git a/node-types/src/lib.rs b/ruby/node-types/src/lib.rs similarity index 100% rename from node-types/src/lib.rs rename to ruby/node-types/src/lib.rs diff --git a/ql/consistency-queries/AstConsistency.ql b/ruby/ql/consistency-queries/AstConsistency.ql similarity index 100% rename from ql/consistency-queries/AstConsistency.ql rename to ruby/ql/consistency-queries/AstConsistency.ql diff --git a/ql/consistency-queries/CfgConsistency.ql b/ruby/ql/consistency-queries/CfgConsistency.ql similarity index 100% rename from ql/consistency-queries/CfgConsistency.ql rename to ruby/ql/consistency-queries/CfgConsistency.ql diff --git a/ql/consistency-queries/DataFlowConsistency.ql b/ruby/ql/consistency-queries/DataFlowConsistency.ql similarity index 100% rename from ql/consistency-queries/DataFlowConsistency.ql rename to ruby/ql/consistency-queries/DataFlowConsistency.ql diff --git a/ql/consistency-queries/SsaConsistency.ql b/ruby/ql/consistency-queries/SsaConsistency.ql similarity index 100% rename from ql/consistency-queries/SsaConsistency.ql rename to ruby/ql/consistency-queries/SsaConsistency.ql diff --git a/ql/consistency-queries/VariablesConsistency.ql b/ruby/ql/consistency-queries/VariablesConsistency.ql similarity index 100% rename from ql/consistency-queries/VariablesConsistency.ql rename to ruby/ql/consistency-queries/VariablesConsistency.ql diff --git a/ql/consistency-queries/qlpack.yml b/ruby/ql/consistency-queries/qlpack.yml similarity index 100% rename from ql/consistency-queries/qlpack.yml rename to ruby/ql/consistency-queries/qlpack.yml diff --git a/ql/docs/experimental.md b/ruby/ql/docs/experimental.md similarity index 100% rename from ql/docs/experimental.md rename to ruby/ql/docs/experimental.md diff --git a/ql/examples/qlpack.lock.yml b/ruby/ql/examples/qlpack.lock.yml similarity index 100% rename from ql/examples/qlpack.lock.yml rename to ruby/ql/examples/qlpack.lock.yml diff --git a/ql/examples/qlpack.yml b/ruby/ql/examples/qlpack.yml similarity index 100% rename from ql/examples/qlpack.yml rename to ruby/ql/examples/qlpack.yml diff --git a/ql/examples/queries.xml b/ruby/ql/examples/queries.xml similarity index 100% rename from ql/examples/queries.xml rename to ruby/ql/examples/queries.xml diff --git a/ql/examples/snippets/emptythen.ql b/ruby/ql/examples/snippets/emptythen.ql similarity index 100% rename from ql/examples/snippets/emptythen.ql rename to ruby/ql/examples/snippets/emptythen.ql diff --git a/ql/lib/codeql/IDEContextual.qll b/ruby/ql/lib/codeql/IDEContextual.qll similarity index 100% rename from ql/lib/codeql/IDEContextual.qll rename to ruby/ql/lib/codeql/IDEContextual.qll diff --git a/ql/lib/codeql/Locations.qll b/ruby/ql/lib/codeql/Locations.qll similarity index 100% rename from ql/lib/codeql/Locations.qll rename to ruby/ql/lib/codeql/Locations.qll diff --git a/ql/lib/codeql/files/FileSystem.qll b/ruby/ql/lib/codeql/files/FileSystem.qll similarity index 100% rename from ql/lib/codeql/files/FileSystem.qll rename to ruby/ql/lib/codeql/files/FileSystem.qll diff --git a/ql/lib/codeql/ruby/AST.qll b/ruby/ql/lib/codeql/ruby/AST.qll similarity index 100% rename from ql/lib/codeql/ruby/AST.qll rename to ruby/ql/lib/codeql/ruby/AST.qll diff --git a/ql/lib/codeql/ruby/ApiGraphs.qll b/ruby/ql/lib/codeql/ruby/ApiGraphs.qll similarity index 100% rename from ql/lib/codeql/ruby/ApiGraphs.qll rename to ruby/ql/lib/codeql/ruby/ApiGraphs.qll diff --git a/ql/lib/codeql/ruby/CFG.qll b/ruby/ql/lib/codeql/ruby/CFG.qll similarity index 100% rename from ql/lib/codeql/ruby/CFG.qll rename to ruby/ql/lib/codeql/ruby/CFG.qll diff --git a/ql/lib/codeql/ruby/Concepts.qll b/ruby/ql/lib/codeql/ruby/Concepts.qll similarity index 100% rename from ql/lib/codeql/ruby/Concepts.qll rename to ruby/ql/lib/codeql/ruby/Concepts.qll diff --git a/ql/lib/codeql/ruby/DataFlow.qll b/ruby/ql/lib/codeql/ruby/DataFlow.qll similarity index 100% rename from ql/lib/codeql/ruby/DataFlow.qll rename to ruby/ql/lib/codeql/ruby/DataFlow.qll diff --git a/ql/lib/codeql/ruby/Diagnostics.qll b/ruby/ql/lib/codeql/ruby/Diagnostics.qll similarity index 100% rename from ql/lib/codeql/ruby/Diagnostics.qll rename to ruby/ql/lib/codeql/ruby/Diagnostics.qll diff --git a/ql/lib/codeql/ruby/Frameworks.qll b/ruby/ql/lib/codeql/ruby/Frameworks.qll similarity index 100% rename from ql/lib/codeql/ruby/Frameworks.qll rename to ruby/ql/lib/codeql/ruby/Frameworks.qll diff --git a/ql/lib/codeql/ruby/TaintTracking.qll b/ruby/ql/lib/codeql/ruby/TaintTracking.qll similarity index 100% rename from ql/lib/codeql/ruby/TaintTracking.qll rename to ruby/ql/lib/codeql/ruby/TaintTracking.qll diff --git a/ql/lib/codeql/ruby/ast/Call.qll b/ruby/ql/lib/codeql/ruby/ast/Call.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Call.qll rename to ruby/ql/lib/codeql/ruby/ast/Call.qll diff --git a/ql/lib/codeql/ruby/ast/Constant.qll b/ruby/ql/lib/codeql/ruby/ast/Constant.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Constant.qll rename to ruby/ql/lib/codeql/ruby/ast/Constant.qll diff --git a/ql/lib/codeql/ruby/ast/Control.qll b/ruby/ql/lib/codeql/ruby/ast/Control.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Control.qll rename to ruby/ql/lib/codeql/ruby/ast/Control.qll diff --git a/ql/lib/codeql/ruby/ast/Erb.qll b/ruby/ql/lib/codeql/ruby/ast/Erb.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Erb.qll rename to ruby/ql/lib/codeql/ruby/ast/Erb.qll diff --git a/ql/lib/codeql/ruby/ast/Expr.qll b/ruby/ql/lib/codeql/ruby/ast/Expr.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Expr.qll rename to ruby/ql/lib/codeql/ruby/ast/Expr.qll diff --git a/ql/lib/codeql/ruby/ast/Literal.qll b/ruby/ql/lib/codeql/ruby/ast/Literal.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Literal.qll rename to ruby/ql/lib/codeql/ruby/ast/Literal.qll diff --git a/ql/lib/codeql/ruby/ast/Method.qll b/ruby/ql/lib/codeql/ruby/ast/Method.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Method.qll rename to ruby/ql/lib/codeql/ruby/ast/Method.qll diff --git a/ql/lib/codeql/ruby/ast/Module.qll b/ruby/ql/lib/codeql/ruby/ast/Module.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Module.qll rename to ruby/ql/lib/codeql/ruby/ast/Module.qll diff --git a/ql/lib/codeql/ruby/ast/Operation.qll b/ruby/ql/lib/codeql/ruby/ast/Operation.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Operation.qll rename to ruby/ql/lib/codeql/ruby/ast/Operation.qll diff --git a/ql/lib/codeql/ruby/ast/Parameter.qll b/ruby/ql/lib/codeql/ruby/ast/Parameter.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Parameter.qll rename to ruby/ql/lib/codeql/ruby/ast/Parameter.qll diff --git a/ql/lib/codeql/ruby/ast/Pattern.qll b/ruby/ql/lib/codeql/ruby/ast/Pattern.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Pattern.qll rename to ruby/ql/lib/codeql/ruby/ast/Pattern.qll diff --git a/ql/lib/codeql/ruby/ast/Scope.qll b/ruby/ql/lib/codeql/ruby/ast/Scope.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Scope.qll rename to ruby/ql/lib/codeql/ruby/ast/Scope.qll diff --git a/ql/lib/codeql/ruby/ast/Statement.qll b/ruby/ql/lib/codeql/ruby/ast/Statement.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Statement.qll rename to ruby/ql/lib/codeql/ruby/ast/Statement.qll diff --git a/ql/lib/codeql/ruby/ast/Variable.qll b/ruby/ql/lib/codeql/ruby/ast/Variable.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/Variable.qll rename to ruby/ql/lib/codeql/ruby/ast/Variable.qll diff --git a/ql/lib/codeql/ruby/ast/internal/AST.qll b/ruby/ql/lib/codeql/ruby/ast/internal/AST.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/AST.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/AST.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Call.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Call.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Call.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Call.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Erb.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Erb.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Erb.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Erb.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Module.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Module.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Module.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Module.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Operation.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Operation.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Operation.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Operation.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Parameter.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Parameter.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Parameter.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Parameter.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Pattern.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Pattern.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Pattern.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Pattern.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Scope.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Scope.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Scope.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Scope.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Synthesis.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Synthesis.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Synthesis.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Synthesis.qll diff --git a/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/TreeSitter.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll diff --git a/ql/lib/codeql/ruby/ast/internal/Variable.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Variable.qll similarity index 100% rename from ql/lib/codeql/ruby/ast/internal/Variable.qll rename to ruby/ql/lib/codeql/ruby/ast/internal/Variable.qll diff --git a/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll b/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/BasicBlocks.qll rename to ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll diff --git a/ql/lib/codeql/ruby/controlflow/CfgNodes.qll b/ruby/ql/lib/codeql/ruby/controlflow/CfgNodes.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/CfgNodes.qll rename to ruby/ql/lib/codeql/ruby/controlflow/CfgNodes.qll diff --git a/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll b/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll rename to ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll diff --git a/ql/lib/codeql/ruby/controlflow/internal/Completion.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/Completion.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/internal/Completion.qll rename to ruby/ql/lib/codeql/ruby/controlflow/internal/Completion.qll diff --git a/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll rename to ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll diff --git a/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll rename to ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll diff --git a/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplSpecific.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplSpecific.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplSpecific.qll rename to ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplSpecific.qll diff --git a/ql/lib/codeql/ruby/controlflow/internal/NonReturning.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/NonReturning.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/internal/NonReturning.qll rename to ruby/ql/lib/codeql/ruby/controlflow/internal/NonReturning.qll diff --git a/ql/lib/codeql/ruby/controlflow/internal/Splitting.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/Splitting.qll similarity index 100% rename from ql/lib/codeql/ruby/controlflow/internal/Splitting.qll rename to ruby/ql/lib/codeql/ruby/controlflow/internal/Splitting.qll diff --git a/ql/lib/codeql/ruby/dataflow/BarrierGuards.qll b/ruby/ql/lib/codeql/ruby/dataflow/BarrierGuards.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/BarrierGuards.qll rename to ruby/ql/lib/codeql/ruby/dataflow/BarrierGuards.qll diff --git a/ql/lib/codeql/ruby/dataflow/FlowSummary.qll b/ruby/ql/lib/codeql/ruby/dataflow/FlowSummary.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/FlowSummary.qll rename to ruby/ql/lib/codeql/ruby/dataflow/FlowSummary.qll diff --git a/ql/lib/codeql/ruby/dataflow/RemoteFlowSources.qll b/ruby/ql/lib/codeql/ruby/dataflow/RemoteFlowSources.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/RemoteFlowSources.qll rename to ruby/ql/lib/codeql/ruby/dataflow/RemoteFlowSources.qll diff --git a/ql/lib/codeql/ruby/dataflow/SSA.qll b/ruby/ql/lib/codeql/ruby/dataflow/SSA.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/SSA.qll rename to ruby/ql/lib/codeql/ruby/dataflow/SSA.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImplSpecific.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/SsaImplSpecific.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImplSpecific.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/SsaImplSpecific.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImplSpecific.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPublic.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPublic.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPublic.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPublic.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll diff --git a/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingParameter.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingParameter.qll similarity index 100% rename from ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingParameter.qll rename to ruby/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingParameter.qll diff --git a/ql/lib/codeql/ruby/filters/GeneratedCode.qll b/ruby/ql/lib/codeql/ruby/filters/GeneratedCode.qll similarity index 100% rename from ql/lib/codeql/ruby/filters/GeneratedCode.qll rename to ruby/ql/lib/codeql/ruby/filters/GeneratedCode.qll diff --git a/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/ActionController.qll rename to ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll diff --git a/ql/lib/codeql/ruby/frameworks/ActionView.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionView.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/ActionView.qll rename to ruby/ql/lib/codeql/ruby/frameworks/ActionView.qll diff --git a/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/ActiveRecord.qll rename to ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll diff --git a/ql/lib/codeql/ruby/frameworks/Files.qll b/ruby/ql/lib/codeql/ruby/frameworks/Files.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/Files.qll rename to ruby/ql/lib/codeql/ruby/frameworks/Files.qll diff --git a/ql/lib/codeql/ruby/frameworks/HTTPClients.qll b/ruby/ql/lib/codeql/ruby/frameworks/HTTPClients.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/HTTPClients.qll rename to ruby/ql/lib/codeql/ruby/frameworks/HTTPClients.qll diff --git a/ql/lib/codeql/ruby/frameworks/StandardLibrary.qll b/ruby/ql/lib/codeql/ruby/frameworks/StandardLibrary.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/StandardLibrary.qll rename to ruby/ql/lib/codeql/ruby/frameworks/StandardLibrary.qll diff --git a/ql/lib/codeql/ruby/frameworks/http_clients/Excon.qll b/ruby/ql/lib/codeql/ruby/frameworks/http_clients/Excon.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/http_clients/Excon.qll rename to ruby/ql/lib/codeql/ruby/frameworks/http_clients/Excon.qll diff --git a/ql/lib/codeql/ruby/frameworks/http_clients/Faraday.qll b/ruby/ql/lib/codeql/ruby/frameworks/http_clients/Faraday.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/http_clients/Faraday.qll rename to ruby/ql/lib/codeql/ruby/frameworks/http_clients/Faraday.qll diff --git a/ql/lib/codeql/ruby/frameworks/http_clients/NetHTTP.qll b/ruby/ql/lib/codeql/ruby/frameworks/http_clients/NetHTTP.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/http_clients/NetHTTP.qll rename to ruby/ql/lib/codeql/ruby/frameworks/http_clients/NetHTTP.qll diff --git a/ql/lib/codeql/ruby/frameworks/http_clients/RestClient.qll b/ruby/ql/lib/codeql/ruby/frameworks/http_clients/RestClient.qll similarity index 100% rename from ql/lib/codeql/ruby/frameworks/http_clients/RestClient.qll rename to ruby/ql/lib/codeql/ruby/frameworks/http_clients/RestClient.qll diff --git a/ql/lib/codeql/ruby/printAst.qll b/ruby/ql/lib/codeql/ruby/printAst.qll similarity index 100% rename from ql/lib/codeql/ruby/printAst.qll rename to ruby/ql/lib/codeql/ruby/printAst.qll diff --git a/ql/lib/codeql/ruby/regexp/ExponentialBackTracking.qll b/ruby/ql/lib/codeql/ruby/regexp/ExponentialBackTracking.qll similarity index 100% rename from ql/lib/codeql/ruby/regexp/ExponentialBackTracking.qll rename to ruby/ql/lib/codeql/ruby/regexp/ExponentialBackTracking.qll diff --git a/ql/lib/codeql/ruby/regexp/ParseRegExp.qll b/ruby/ql/lib/codeql/ruby/regexp/ParseRegExp.qll similarity index 100% rename from ql/lib/codeql/ruby/regexp/ParseRegExp.qll rename to ruby/ql/lib/codeql/ruby/regexp/ParseRegExp.qll diff --git a/ql/lib/codeql/ruby/regexp/PolynomialReDoSCustomizations.qll b/ruby/ql/lib/codeql/ruby/regexp/PolynomialReDoSCustomizations.qll similarity index 100% rename from ql/lib/codeql/ruby/regexp/PolynomialReDoSCustomizations.qll rename to ruby/ql/lib/codeql/ruby/regexp/PolynomialReDoSCustomizations.qll diff --git a/ql/lib/codeql/ruby/regexp/PolynomialReDoSQuery.qll b/ruby/ql/lib/codeql/ruby/regexp/PolynomialReDoSQuery.qll similarity index 100% rename from ql/lib/codeql/ruby/regexp/PolynomialReDoSQuery.qll rename to ruby/ql/lib/codeql/ruby/regexp/PolynomialReDoSQuery.qll diff --git a/ql/lib/codeql/ruby/regexp/ReDoSUtil.qll b/ruby/ql/lib/codeql/ruby/regexp/ReDoSUtil.qll similarity index 100% rename from ql/lib/codeql/ruby/regexp/ReDoSUtil.qll rename to ruby/ql/lib/codeql/ruby/regexp/ReDoSUtil.qll diff --git a/ql/lib/codeql/ruby/regexp/RegExpTreeView.qll b/ruby/ql/lib/codeql/ruby/regexp/RegExpTreeView.qll similarity index 100% rename from ql/lib/codeql/ruby/regexp/RegExpTreeView.qll rename to ruby/ql/lib/codeql/ruby/regexp/RegExpTreeView.qll diff --git a/ql/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll b/ruby/ql/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll similarity index 100% rename from ql/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll rename to ruby/ql/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll diff --git a/ql/lib/codeql/ruby/security/CodeInjectionCustomizations.qll b/ruby/ql/lib/codeql/ruby/security/CodeInjectionCustomizations.qll similarity index 100% rename from ql/lib/codeql/ruby/security/CodeInjectionCustomizations.qll rename to ruby/ql/lib/codeql/ruby/security/CodeInjectionCustomizations.qll diff --git a/ql/lib/codeql/ruby/security/CodeInjectionQuery.qll b/ruby/ql/lib/codeql/ruby/security/CodeInjectionQuery.qll similarity index 100% rename from ql/lib/codeql/ruby/security/CodeInjectionQuery.qll rename to ruby/ql/lib/codeql/ruby/security/CodeInjectionQuery.qll diff --git a/ql/lib/codeql/ruby/security/CommandInjectionCustomizations.qll b/ruby/ql/lib/codeql/ruby/security/CommandInjectionCustomizations.qll similarity index 100% rename from ql/lib/codeql/ruby/security/CommandInjectionCustomizations.qll rename to ruby/ql/lib/codeql/ruby/security/CommandInjectionCustomizations.qll diff --git a/ql/lib/codeql/ruby/security/CommandInjectionQuery.qll b/ruby/ql/lib/codeql/ruby/security/CommandInjectionQuery.qll similarity index 100% rename from ql/lib/codeql/ruby/security/CommandInjectionQuery.qll rename to ruby/ql/lib/codeql/ruby/security/CommandInjectionQuery.qll diff --git a/ql/lib/codeql/ruby/security/ReflectedXSSCustomizations.qll b/ruby/ql/lib/codeql/ruby/security/ReflectedXSSCustomizations.qll similarity index 100% rename from ql/lib/codeql/ruby/security/ReflectedXSSCustomizations.qll rename to ruby/ql/lib/codeql/ruby/security/ReflectedXSSCustomizations.qll diff --git a/ql/lib/codeql/ruby/security/ReflectedXSSQuery.qll b/ruby/ql/lib/codeql/ruby/security/ReflectedXSSQuery.qll similarity index 100% rename from ql/lib/codeql/ruby/security/ReflectedXSSQuery.qll rename to ruby/ql/lib/codeql/ruby/security/ReflectedXSSQuery.qll diff --git a/ql/lib/codeql/ruby/security/UnsafeDeserializationCustomizations.qll b/ruby/ql/lib/codeql/ruby/security/UnsafeDeserializationCustomizations.qll similarity index 100% rename from ql/lib/codeql/ruby/security/UnsafeDeserializationCustomizations.qll rename to ruby/ql/lib/codeql/ruby/security/UnsafeDeserializationCustomizations.qll diff --git a/ql/lib/codeql/ruby/security/UnsafeDeserializationQuery.qll b/ruby/ql/lib/codeql/ruby/security/UnsafeDeserializationQuery.qll similarity index 100% rename from ql/lib/codeql/ruby/security/UnsafeDeserializationQuery.qll rename to ruby/ql/lib/codeql/ruby/security/UnsafeDeserializationQuery.qll diff --git a/ql/lib/codeql/ruby/security/UrlRedirectCustomizations.qll b/ruby/ql/lib/codeql/ruby/security/UrlRedirectCustomizations.qll similarity index 100% rename from ql/lib/codeql/ruby/security/UrlRedirectCustomizations.qll rename to ruby/ql/lib/codeql/ruby/security/UrlRedirectCustomizations.qll diff --git a/ql/lib/codeql/ruby/security/UrlRedirectQuery.qll b/ruby/ql/lib/codeql/ruby/security/UrlRedirectQuery.qll similarity index 100% rename from ql/lib/codeql/ruby/security/UrlRedirectQuery.qll rename to ruby/ql/lib/codeql/ruby/security/UrlRedirectQuery.qll diff --git a/ql/lib/codeql/ruby/typetracking/TypeTracker.qll b/ruby/ql/lib/codeql/ruby/typetracking/TypeTracker.qll similarity index 100% rename from ql/lib/codeql/ruby/typetracking/TypeTracker.qll rename to ruby/ql/lib/codeql/ruby/typetracking/TypeTracker.qll diff --git a/ql/lib/codeql/ruby/typetracking/TypeTrackerSpecific.qll b/ruby/ql/lib/codeql/ruby/typetracking/TypeTrackerSpecific.qll similarity index 100% rename from ql/lib/codeql/ruby/typetracking/TypeTrackerSpecific.qll rename to ruby/ql/lib/codeql/ruby/typetracking/TypeTrackerSpecific.qll diff --git a/ql/lib/qlpack.lock.yml b/ruby/ql/lib/qlpack.lock.yml similarity index 100% rename from ql/lib/qlpack.lock.yml rename to ruby/ql/lib/qlpack.lock.yml diff --git a/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml similarity index 100% rename from ql/lib/qlpack.yml rename to ruby/ql/lib/qlpack.yml diff --git a/ql/lib/ruby.dbscheme b/ruby/ql/lib/ruby.dbscheme similarity index 100% rename from ql/lib/ruby.dbscheme rename to ruby/ql/lib/ruby.dbscheme diff --git a/ql/lib/ruby.dbscheme.stats b/ruby/ql/lib/ruby.dbscheme.stats similarity index 100% rename from ql/lib/ruby.dbscheme.stats rename to ruby/ql/lib/ruby.dbscheme.stats diff --git a/ql/lib/ruby.qll b/ruby/ql/lib/ruby.qll similarity index 100% rename from ql/lib/ruby.qll rename to ruby/ql/lib/ruby.qll diff --git a/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/old.dbscheme b/ruby/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/old.dbscheme similarity index 100% rename from ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/old.dbscheme rename to ruby/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/old.dbscheme diff --git a/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/ruby.dbscheme b/ruby/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/ruby.dbscheme similarity index 100% rename from ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/ruby.dbscheme rename to ruby/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/ruby.dbscheme diff --git a/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/upgrade.properties b/ruby/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/upgrade.properties similarity index 100% rename from ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/upgrade.properties rename to ruby/ql/lib/upgrades/09a494ce67d8141f28d6411f89b9ff7bdad440f3/upgrade.properties diff --git a/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/old.dbscheme b/ruby/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/old.dbscheme similarity index 100% rename from ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/old.dbscheme rename to ruby/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/old.dbscheme diff --git a/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/ruby.dbscheme b/ruby/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/ruby.dbscheme similarity index 100% rename from ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/ruby.dbscheme rename to ruby/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/ruby.dbscheme diff --git a/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/upgrade.properties b/ruby/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/upgrade.properties similarity index 100% rename from ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/upgrade.properties rename to ruby/ql/lib/upgrades/30e1075bbdc9ce935dbe28dc7175489fe8e69a4c/upgrade.properties diff --git a/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/old.dbscheme b/ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/old.dbscheme similarity index 100% rename from ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/old.dbscheme rename to ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/old.dbscheme diff --git a/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme b/ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme similarity index 100% rename from ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme rename to ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme diff --git a/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme.stats b/ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme.stats similarity index 100% rename from ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme.stats rename to ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/ruby.dbscheme.stats diff --git a/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/upgrade.properties b/ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/upgrade.properties similarity index 100% rename from ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/upgrade.properties rename to ruby/ql/lib/upgrades/40be81bc2086eb0368f33c770e0a84817bb340c3/upgrade.properties diff --git a/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/old.dbscheme b/ruby/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/old.dbscheme similarity index 100% rename from ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/old.dbscheme rename to ruby/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/old.dbscheme diff --git a/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/ruby.dbscheme b/ruby/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/ruby.dbscheme similarity index 100% rename from ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/ruby.dbscheme rename to ruby/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/ruby.dbscheme diff --git a/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/upgrade.properties b/ruby/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/upgrade.properties similarity index 100% rename from ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/upgrade.properties rename to ruby/ql/lib/upgrades/8725deeb2fa6627c45235f18b7c121c35498dac7/upgrade.properties diff --git a/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/old.dbscheme b/ruby/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/old.dbscheme similarity index 100% rename from ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/old.dbscheme rename to ruby/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/old.dbscheme diff --git a/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/ruby.dbscheme b/ruby/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/ruby.dbscheme similarity index 100% rename from ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/ruby.dbscheme rename to ruby/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/ruby.dbscheme diff --git a/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/upgrade.properties b/ruby/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/upgrade.properties similarity index 100% rename from ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/upgrade.properties rename to ruby/ql/lib/upgrades/b5aef9c93ae64f848017d2dcb760eed916ab0cdd/upgrade.properties diff --git a/ql/lib/upgrades/initial/ruby.dbscheme b/ruby/ql/lib/upgrades/initial/ruby.dbscheme similarity index 100% rename from ql/lib/upgrades/initial/ruby.dbscheme rename to ruby/ql/lib/upgrades/initial/ruby.dbscheme diff --git a/ql/src/AlertSuppression.ql b/ruby/ql/src/AlertSuppression.ql similarity index 100% rename from ql/src/AlertSuppression.ql rename to ruby/ql/src/AlertSuppression.ql diff --git a/ql/src/codeql-suites/ruby-code-scanning.qls b/ruby/ql/src/codeql-suites/ruby-code-scanning.qls similarity index 100% rename from ql/src/codeql-suites/ruby-code-scanning.qls rename to ruby/ql/src/codeql-suites/ruby-code-scanning.qls diff --git a/ql/src/codeql-suites/ruby-lgtm-full.qls b/ruby/ql/src/codeql-suites/ruby-lgtm-full.qls similarity index 100% rename from ql/src/codeql-suites/ruby-lgtm-full.qls rename to ruby/ql/src/codeql-suites/ruby-lgtm-full.qls diff --git a/ql/src/codeql-suites/ruby-lgtm.qls b/ruby/ql/src/codeql-suites/ruby-lgtm.qls similarity index 100% rename from ql/src/codeql-suites/ruby-lgtm.qls rename to ruby/ql/src/codeql-suites/ruby-lgtm.qls diff --git a/ql/src/codeql-suites/ruby-security-and-quality.qls b/ruby/ql/src/codeql-suites/ruby-security-and-quality.qls similarity index 100% rename from ql/src/codeql-suites/ruby-security-and-quality.qls rename to ruby/ql/src/codeql-suites/ruby-security-and-quality.qls diff --git a/ql/src/codeql-suites/ruby-security-extended.qls b/ruby/ql/src/codeql-suites/ruby-security-extended.qls similarity index 100% rename from ql/src/codeql-suites/ruby-security-extended.qls rename to ruby/ql/src/codeql-suites/ruby-security-extended.qls diff --git a/ql/src/experimental/README.md b/ruby/ql/src/experimental/README.md similarity index 100% rename from ql/src/experimental/README.md rename to ruby/ql/src/experimental/README.md diff --git a/ql/src/experimental/performance/UseDetect.ql b/ruby/ql/src/experimental/performance/UseDetect.ql similarity index 100% rename from ql/src/experimental/performance/UseDetect.ql rename to ruby/ql/src/experimental/performance/UseDetect.ql diff --git a/ql/src/filters/ClassifyFiles.ql b/ruby/ql/src/filters/ClassifyFiles.ql similarity index 100% rename from ql/src/filters/ClassifyFiles.ql rename to ruby/ql/src/filters/ClassifyFiles.ql diff --git a/ql/src/ide-contextual-queries/localDefinitions.ql b/ruby/ql/src/ide-contextual-queries/localDefinitions.ql similarity index 100% rename from ql/src/ide-contextual-queries/localDefinitions.ql rename to ruby/ql/src/ide-contextual-queries/localDefinitions.ql diff --git a/ql/src/ide-contextual-queries/localReferences.ql b/ruby/ql/src/ide-contextual-queries/localReferences.ql similarity index 100% rename from ql/src/ide-contextual-queries/localReferences.ql rename to ruby/ql/src/ide-contextual-queries/localReferences.ql diff --git a/ql/src/ide-contextual-queries/printAst.ql b/ruby/ql/src/ide-contextual-queries/printAst.ql similarity index 100% rename from ql/src/ide-contextual-queries/printAst.ql rename to ruby/ql/src/ide-contextual-queries/printAst.ql diff --git a/ql/src/qlpack.lock.yml b/ruby/ql/src/qlpack.lock.yml similarity index 100% rename from ql/src/qlpack.lock.yml rename to ruby/ql/src/qlpack.lock.yml diff --git a/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml similarity index 100% rename from ql/src/qlpack.yml rename to ruby/ql/src/qlpack.yml diff --git a/ql/src/queries/analysis/Definitions.ql b/ruby/ql/src/queries/analysis/Definitions.ql similarity index 100% rename from ql/src/queries/analysis/Definitions.ql rename to ruby/ql/src/queries/analysis/Definitions.ql diff --git a/ql/src/queries/diagnostics/ExtractionErrors.ql b/ruby/ql/src/queries/diagnostics/ExtractionErrors.ql similarity index 100% rename from ql/src/queries/diagnostics/ExtractionErrors.ql rename to ruby/ql/src/queries/diagnostics/ExtractionErrors.ql diff --git a/ql/src/queries/diagnostics/SuccessfullyExtractedFiles.ql b/ruby/ql/src/queries/diagnostics/SuccessfullyExtractedFiles.ql similarity index 100% rename from ql/src/queries/diagnostics/SuccessfullyExtractedFiles.ql rename to ruby/ql/src/queries/diagnostics/SuccessfullyExtractedFiles.ql diff --git a/ql/src/queries/metrics/FLines.ql b/ruby/ql/src/queries/metrics/FLines.ql similarity index 100% rename from ql/src/queries/metrics/FLines.ql rename to ruby/ql/src/queries/metrics/FLines.ql diff --git a/ql/src/queries/metrics/FLinesOfCode.ql b/ruby/ql/src/queries/metrics/FLinesOfCode.ql similarity index 100% rename from ql/src/queries/metrics/FLinesOfCode.ql rename to ruby/ql/src/queries/metrics/FLinesOfCode.ql diff --git a/ql/src/queries/metrics/FLinesOfComments.ql b/ruby/ql/src/queries/metrics/FLinesOfComments.ql similarity index 100% rename from ql/src/queries/metrics/FLinesOfComments.ql rename to ruby/ql/src/queries/metrics/FLinesOfComments.ql diff --git a/ql/src/queries/security/cwe-078/CommandInjection.qhelp b/ruby/ql/src/queries/security/cwe-078/CommandInjection.qhelp similarity index 100% rename from ql/src/queries/security/cwe-078/CommandInjection.qhelp rename to ruby/ql/src/queries/security/cwe-078/CommandInjection.qhelp diff --git a/ql/src/queries/security/cwe-078/CommandInjection.ql b/ruby/ql/src/queries/security/cwe-078/CommandInjection.ql similarity index 100% rename from ql/src/queries/security/cwe-078/CommandInjection.ql rename to ruby/ql/src/queries/security/cwe-078/CommandInjection.ql diff --git a/ql/src/queries/security/cwe-078/examples/command_injection.rb b/ruby/ql/src/queries/security/cwe-078/examples/command_injection.rb similarity index 100% rename from ql/src/queries/security/cwe-078/examples/command_injection.rb rename to ruby/ql/src/queries/security/cwe-078/examples/command_injection.rb diff --git a/ql/src/queries/security/cwe-079/ReflectedXSS.qhelp b/ruby/ql/src/queries/security/cwe-079/ReflectedXSS.qhelp similarity index 100% rename from ql/src/queries/security/cwe-079/ReflectedXSS.qhelp rename to ruby/ql/src/queries/security/cwe-079/ReflectedXSS.qhelp diff --git a/ql/src/queries/security/cwe-079/ReflectedXSS.ql b/ruby/ql/src/queries/security/cwe-079/ReflectedXSS.ql similarity index 100% rename from ql/src/queries/security/cwe-079/ReflectedXSS.ql rename to ruby/ql/src/queries/security/cwe-079/ReflectedXSS.ql diff --git a/ql/src/queries/security/cwe-079/examples/reflective_xss.html.erb b/ruby/ql/src/queries/security/cwe-079/examples/reflective_xss.html.erb similarity index 100% rename from ql/src/queries/security/cwe-079/examples/reflective_xss.html.erb rename to ruby/ql/src/queries/security/cwe-079/examples/reflective_xss.html.erb diff --git a/ql/src/queries/security/cwe-079/examples/safe.html.erb b/ruby/ql/src/queries/security/cwe-079/examples/safe.html.erb similarity index 100% rename from ql/src/queries/security/cwe-079/examples/safe.html.erb rename to ruby/ql/src/queries/security/cwe-079/examples/safe.html.erb diff --git a/ql/src/queries/security/cwe-089/SqlInjection.qhelp b/ruby/ql/src/queries/security/cwe-089/SqlInjection.qhelp similarity index 100% rename from ql/src/queries/security/cwe-089/SqlInjection.qhelp rename to ruby/ql/src/queries/security/cwe-089/SqlInjection.qhelp diff --git a/ql/src/queries/security/cwe-089/SqlInjection.ql b/ruby/ql/src/queries/security/cwe-089/SqlInjection.ql similarity index 100% rename from ql/src/queries/security/cwe-089/SqlInjection.ql rename to ruby/ql/src/queries/security/cwe-089/SqlInjection.ql diff --git a/ql/src/queries/security/cwe-089/examples/SqlInjection.rb b/ruby/ql/src/queries/security/cwe-089/examples/SqlInjection.rb similarity index 100% rename from ql/src/queries/security/cwe-089/examples/SqlInjection.rb rename to ruby/ql/src/queries/security/cwe-089/examples/SqlInjection.rb diff --git a/ql/src/queries/security/cwe-094/CodeInjection.qhelp b/ruby/ql/src/queries/security/cwe-094/CodeInjection.qhelp similarity index 100% rename from ql/src/queries/security/cwe-094/CodeInjection.qhelp rename to ruby/ql/src/queries/security/cwe-094/CodeInjection.qhelp diff --git a/ql/src/queries/security/cwe-094/CodeInjection.ql b/ruby/ql/src/queries/security/cwe-094/CodeInjection.ql similarity index 100% rename from ql/src/queries/security/cwe-094/CodeInjection.ql rename to ruby/ql/src/queries/security/cwe-094/CodeInjection.ql diff --git a/ql/src/queries/security/cwe-094/examples/code_injection.rb b/ruby/ql/src/queries/security/cwe-094/examples/code_injection.rb similarity index 100% rename from ql/src/queries/security/cwe-094/examples/code_injection.rb rename to ruby/ql/src/queries/security/cwe-094/examples/code_injection.rb diff --git a/ql/src/queries/security/cwe-1333/PolynomialReDoS.qhelp b/ruby/ql/src/queries/security/cwe-1333/PolynomialReDoS.qhelp similarity index 100% rename from ql/src/queries/security/cwe-1333/PolynomialReDoS.qhelp rename to ruby/ql/src/queries/security/cwe-1333/PolynomialReDoS.qhelp diff --git a/ql/src/queries/security/cwe-1333/PolynomialReDoS.ql b/ruby/ql/src/queries/security/cwe-1333/PolynomialReDoS.ql similarity index 100% rename from ql/src/queries/security/cwe-1333/PolynomialReDoS.ql rename to ruby/ql/src/queries/security/cwe-1333/PolynomialReDoS.ql diff --git a/ql/src/queries/security/cwe-1333/ReDoS.qhelp b/ruby/ql/src/queries/security/cwe-1333/ReDoS.qhelp similarity index 100% rename from ql/src/queries/security/cwe-1333/ReDoS.qhelp rename to ruby/ql/src/queries/security/cwe-1333/ReDoS.qhelp diff --git a/ql/src/queries/security/cwe-1333/ReDoS.ql b/ruby/ql/src/queries/security/cwe-1333/ReDoS.ql similarity index 100% rename from ql/src/queries/security/cwe-1333/ReDoS.ql rename to ruby/ql/src/queries/security/cwe-1333/ReDoS.ql diff --git a/ql/src/queries/security/cwe-1333/ReDoSIntroduction.inc.qhelp b/ruby/ql/src/queries/security/cwe-1333/ReDoSIntroduction.inc.qhelp similarity index 100% rename from ql/src/queries/security/cwe-1333/ReDoSIntroduction.inc.qhelp rename to ruby/ql/src/queries/security/cwe-1333/ReDoSIntroduction.inc.qhelp diff --git a/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp b/ruby/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp similarity index 100% rename from ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp rename to ruby/ql/src/queries/security/cwe-1333/ReDoSReferences.inc.qhelp diff --git a/ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp b/ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp similarity index 100% rename from ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp rename to ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.qhelp diff --git a/ql/src/queries/security/cwe-502/UnsafeDeserialization.ql b/ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.ql similarity index 100% rename from ql/src/queries/security/cwe-502/UnsafeDeserialization.ql rename to ruby/ql/src/queries/security/cwe-502/UnsafeDeserialization.ql diff --git a/ql/src/queries/security/cwe-502/examples/UnsafeDeserializationBad.rb b/ruby/ql/src/queries/security/cwe-502/examples/UnsafeDeserializationBad.rb similarity index 100% rename from ql/src/queries/security/cwe-502/examples/UnsafeDeserializationBad.rb rename to ruby/ql/src/queries/security/cwe-502/examples/UnsafeDeserializationBad.rb diff --git a/ql/src/queries/security/cwe-502/examples/UnsafeDeserializationGood.rb b/ruby/ql/src/queries/security/cwe-502/examples/UnsafeDeserializationGood.rb similarity index 100% rename from ql/src/queries/security/cwe-502/examples/UnsafeDeserializationGood.rb rename to ruby/ql/src/queries/security/cwe-502/examples/UnsafeDeserializationGood.rb diff --git a/ql/src/queries/security/cwe-601/UrlRedirect.qhelp b/ruby/ql/src/queries/security/cwe-601/UrlRedirect.qhelp similarity index 100% rename from ql/src/queries/security/cwe-601/UrlRedirect.qhelp rename to ruby/ql/src/queries/security/cwe-601/UrlRedirect.qhelp diff --git a/ql/src/queries/security/cwe-601/UrlRedirect.ql b/ruby/ql/src/queries/security/cwe-601/UrlRedirect.ql similarity index 100% rename from ql/src/queries/security/cwe-601/UrlRedirect.ql rename to ruby/ql/src/queries/security/cwe-601/UrlRedirect.ql diff --git a/ql/src/queries/security/cwe-601/examples/redirect_bad.rb b/ruby/ql/src/queries/security/cwe-601/examples/redirect_bad.rb similarity index 100% rename from ql/src/queries/security/cwe-601/examples/redirect_bad.rb rename to ruby/ql/src/queries/security/cwe-601/examples/redirect_bad.rb diff --git a/ql/src/queries/security/cwe-601/examples/redirect_good.rb b/ruby/ql/src/queries/security/cwe-601/examples/redirect_good.rb similarity index 100% rename from ql/src/queries/security/cwe-601/examples/redirect_good.rb rename to ruby/ql/src/queries/security/cwe-601/examples/redirect_good.rb diff --git a/ql/src/queries/security/cwe-732/WeakFilePermissions.qhelp b/ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.qhelp similarity index 100% rename from ql/src/queries/security/cwe-732/WeakFilePermissions.qhelp rename to ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.qhelp diff --git a/ql/src/queries/security/cwe-732/WeakFilePermissions.ql b/ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql similarity index 100% rename from ql/src/queries/security/cwe-732/WeakFilePermissions.ql rename to ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql diff --git a/ql/src/queries/security/cwe-798/HardcodedCredentials.qhelp b/ruby/ql/src/queries/security/cwe-798/HardcodedCredentials.qhelp similarity index 100% rename from ql/src/queries/security/cwe-798/HardcodedCredentials.qhelp rename to ruby/ql/src/queries/security/cwe-798/HardcodedCredentials.qhelp diff --git a/ql/src/queries/security/cwe-798/HardcodedCredentials.ql b/ruby/ql/src/queries/security/cwe-798/HardcodedCredentials.ql similarity index 100% rename from ql/src/queries/security/cwe-798/HardcodedCredentials.ql rename to ruby/ql/src/queries/security/cwe-798/HardcodedCredentials.ql diff --git a/ql/src/queries/security/cwe-798/HardcodedCredentials.rb b/ruby/ql/src/queries/security/cwe-798/HardcodedCredentials.rb similarity index 100% rename from ql/src/queries/security/cwe-798/HardcodedCredentials.rb rename to ruby/ql/src/queries/security/cwe-798/HardcodedCredentials.rb diff --git a/ql/src/queries/summary/LinesOfCode.ql b/ruby/ql/src/queries/summary/LinesOfCode.ql similarity index 100% rename from ql/src/queries/summary/LinesOfCode.ql rename to ruby/ql/src/queries/summary/LinesOfCode.ql diff --git a/ql/src/queries/summary/LinesOfUserCode.ql b/ruby/ql/src/queries/summary/LinesOfUserCode.ql similarity index 100% rename from ql/src/queries/summary/LinesOfUserCode.ql rename to ruby/ql/src/queries/summary/LinesOfUserCode.ql diff --git a/ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql b/ruby/ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql similarity index 100% rename from ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql rename to ruby/ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql diff --git a/ql/src/queries/summary/NumberOfSuccessfullyExtractedFiles.ql b/ruby/ql/src/queries/summary/NumberOfSuccessfullyExtractedFiles.ql similarity index 100% rename from ql/src/queries/summary/NumberOfSuccessfullyExtractedFiles.ql rename to ruby/ql/src/queries/summary/NumberOfSuccessfullyExtractedFiles.ql diff --git a/ql/src/queries/variables/DeadStoreOfLocal.ql b/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql similarity index 100% rename from ql/src/queries/variables/DeadStoreOfLocal.ql rename to ruby/ql/src/queries/variables/DeadStoreOfLocal.ql diff --git a/ql/src/queries/variables/UninitializedLocal.ql b/ruby/ql/src/queries/variables/UninitializedLocal.ql similarity index 100% rename from ql/src/queries/variables/UninitializedLocal.ql rename to ruby/ql/src/queries/variables/UninitializedLocal.ql diff --git a/ql/src/queries/variables/UnusedParameter.ql b/ruby/ql/src/queries/variables/UnusedParameter.ql similarity index 100% rename from ql/src/queries/variables/UnusedParameter.ql rename to ruby/ql/src/queries/variables/UnusedParameter.ql diff --git a/ql/test/TestUtilities/InlineExpectationsTest.qll b/ruby/ql/test/TestUtilities/InlineExpectationsTest.qll similarity index 100% rename from ql/test/TestUtilities/InlineExpectationsTest.qll rename to ruby/ql/test/TestUtilities/InlineExpectationsTest.qll diff --git a/ql/test/TestUtilities/InlineExpectationsTestPrivate.qll b/ruby/ql/test/TestUtilities/InlineExpectationsTestPrivate.qll similarity index 100% rename from ql/test/TestUtilities/InlineExpectationsTestPrivate.qll rename to ruby/ql/test/TestUtilities/InlineExpectationsTestPrivate.qll diff --git a/ql/test/library-tests/ast/Ast.expected b/ruby/ql/test/library-tests/ast/Ast.expected similarity index 100% rename from ql/test/library-tests/ast/Ast.expected rename to ruby/ql/test/library-tests/ast/Ast.expected diff --git a/ql/test/library-tests/ast/Ast.ql b/ruby/ql/test/library-tests/ast/Ast.ql similarity index 100% rename from ql/test/library-tests/ast/Ast.ql rename to ruby/ql/test/library-tests/ast/Ast.ql diff --git a/ql/test/library-tests/ast/AstDesugar.expected b/ruby/ql/test/library-tests/ast/AstDesugar.expected similarity index 100% rename from ql/test/library-tests/ast/AstDesugar.expected rename to ruby/ql/test/library-tests/ast/AstDesugar.expected diff --git a/ql/test/library-tests/ast/AstDesugar.ql b/ruby/ql/test/library-tests/ast/AstDesugar.ql similarity index 100% rename from ql/test/library-tests/ast/AstDesugar.ql rename to ruby/ql/test/library-tests/ast/AstDesugar.ql diff --git a/ql/test/library-tests/ast/calls/arguments.expected b/ruby/ql/test/library-tests/ast/calls/arguments.expected similarity index 100% rename from ql/test/library-tests/ast/calls/arguments.expected rename to ruby/ql/test/library-tests/ast/calls/arguments.expected diff --git a/ql/test/library-tests/ast/calls/arguments.ql b/ruby/ql/test/library-tests/ast/calls/arguments.ql similarity index 100% rename from ql/test/library-tests/ast/calls/arguments.ql rename to ruby/ql/test/library-tests/ast/calls/arguments.ql diff --git a/ql/test/library-tests/ast/calls/calls.expected b/ruby/ql/test/library-tests/ast/calls/calls.expected similarity index 100% rename from ql/test/library-tests/ast/calls/calls.expected rename to ruby/ql/test/library-tests/ast/calls/calls.expected diff --git a/ql/test/library-tests/ast/calls/calls.ql b/ruby/ql/test/library-tests/ast/calls/calls.ql similarity index 100% rename from ql/test/library-tests/ast/calls/calls.ql rename to ruby/ql/test/library-tests/ast/calls/calls.ql diff --git a/ql/test/library-tests/ast/calls/calls.rb b/ruby/ql/test/library-tests/ast/calls/calls.rb similarity index 100% rename from ql/test/library-tests/ast/calls/calls.rb rename to ruby/ql/test/library-tests/ast/calls/calls.rb diff --git a/ql/test/library-tests/ast/constants/constants.expected b/ruby/ql/test/library-tests/ast/constants/constants.expected similarity index 100% rename from ql/test/library-tests/ast/constants/constants.expected rename to ruby/ql/test/library-tests/ast/constants/constants.expected diff --git a/ql/test/library-tests/ast/constants/constants.ql b/ruby/ql/test/library-tests/ast/constants/constants.ql similarity index 100% rename from ql/test/library-tests/ast/constants/constants.ql rename to ruby/ql/test/library-tests/ast/constants/constants.ql diff --git a/ql/test/library-tests/ast/constants/constants.rb b/ruby/ql/test/library-tests/ast/constants/constants.rb similarity index 100% rename from ql/test/library-tests/ast/constants/constants.rb rename to ruby/ql/test/library-tests/ast/constants/constants.rb diff --git a/ql/test/library-tests/ast/control/CaseExpr.expected b/ruby/ql/test/library-tests/ast/control/CaseExpr.expected similarity index 100% rename from ql/test/library-tests/ast/control/CaseExpr.expected rename to ruby/ql/test/library-tests/ast/control/CaseExpr.expected diff --git a/ql/test/library-tests/ast/control/CaseExpr.ql b/ruby/ql/test/library-tests/ast/control/CaseExpr.ql similarity index 100% rename from ql/test/library-tests/ast/control/CaseExpr.ql rename to ruby/ql/test/library-tests/ast/control/CaseExpr.ql diff --git a/ql/test/library-tests/ast/control/ConditionalExpr.expected b/ruby/ql/test/library-tests/ast/control/ConditionalExpr.expected similarity index 100% rename from ql/test/library-tests/ast/control/ConditionalExpr.expected rename to ruby/ql/test/library-tests/ast/control/ConditionalExpr.expected diff --git a/ql/test/library-tests/ast/control/ConditionalExpr.ql b/ruby/ql/test/library-tests/ast/control/ConditionalExpr.ql similarity index 100% rename from ql/test/library-tests/ast/control/ConditionalExpr.ql rename to ruby/ql/test/library-tests/ast/control/ConditionalExpr.ql diff --git a/ql/test/library-tests/ast/control/ControlExpr.expected b/ruby/ql/test/library-tests/ast/control/ControlExpr.expected similarity index 100% rename from ql/test/library-tests/ast/control/ControlExpr.expected rename to ruby/ql/test/library-tests/ast/control/ControlExpr.expected diff --git a/ql/test/library-tests/ast/control/ControlExpr.ql b/ruby/ql/test/library-tests/ast/control/ControlExpr.ql similarity index 100% rename from ql/test/library-tests/ast/control/ControlExpr.ql rename to ruby/ql/test/library-tests/ast/control/ControlExpr.ql diff --git a/ql/test/library-tests/ast/control/Loop.expected b/ruby/ql/test/library-tests/ast/control/Loop.expected similarity index 100% rename from ql/test/library-tests/ast/control/Loop.expected rename to ruby/ql/test/library-tests/ast/control/Loop.expected diff --git a/ql/test/library-tests/ast/control/Loop.ql b/ruby/ql/test/library-tests/ast/control/Loop.ql similarity index 100% rename from ql/test/library-tests/ast/control/Loop.ql rename to ruby/ql/test/library-tests/ast/control/Loop.ql diff --git a/ql/test/library-tests/ast/control/cases.rb b/ruby/ql/test/library-tests/ast/control/cases.rb similarity index 100% rename from ql/test/library-tests/ast/control/cases.rb rename to ruby/ql/test/library-tests/ast/control/cases.rb diff --git a/ql/test/library-tests/ast/control/conditionals.rb b/ruby/ql/test/library-tests/ast/control/conditionals.rb similarity index 100% rename from ql/test/library-tests/ast/control/conditionals.rb rename to ruby/ql/test/library-tests/ast/control/conditionals.rb diff --git a/ql/test/library-tests/ast/control/loops.rb b/ruby/ql/test/library-tests/ast/control/loops.rb similarity index 100% rename from ql/test/library-tests/ast/control/loops.rb rename to ruby/ql/test/library-tests/ast/control/loops.rb diff --git a/ql/test/library-tests/ast/erb/Erb.expected b/ruby/ql/test/library-tests/ast/erb/Erb.expected similarity index 100% rename from ql/test/library-tests/ast/erb/Erb.expected rename to ruby/ql/test/library-tests/ast/erb/Erb.expected diff --git a/ql/test/library-tests/ast/erb/Erb.ql b/ruby/ql/test/library-tests/ast/erb/Erb.ql similarity index 100% rename from ql/test/library-tests/ast/erb/Erb.ql rename to ruby/ql/test/library-tests/ast/erb/Erb.ql diff --git a/ql/test/library-tests/ast/erb/template.html.erb b/ruby/ql/test/library-tests/ast/erb/template.html.erb similarity index 100% rename from ql/test/library-tests/ast/erb/template.html.erb rename to ruby/ql/test/library-tests/ast/erb/template.html.erb diff --git a/ql/test/library-tests/ast/gems/Gemfile b/ruby/ql/test/library-tests/ast/gems/Gemfile similarity index 100% rename from ql/test/library-tests/ast/gems/Gemfile rename to ruby/ql/test/library-tests/ast/gems/Gemfile diff --git a/ql/test/library-tests/ast/gems/lib/test.rb b/ruby/ql/test/library-tests/ast/gems/lib/test.rb similarity index 100% rename from ql/test/library-tests/ast/gems/lib/test.rb rename to ruby/ql/test/library-tests/ast/gems/lib/test.rb diff --git a/ql/test/library-tests/ast/gems/test.expected b/ruby/ql/test/library-tests/ast/gems/test.expected similarity index 100% rename from ql/test/library-tests/ast/gems/test.expected rename to ruby/ql/test/library-tests/ast/gems/test.expected diff --git a/ql/test/library-tests/ast/gems/test.gemspec b/ruby/ql/test/library-tests/ast/gems/test.gemspec similarity index 100% rename from ql/test/library-tests/ast/gems/test.gemspec rename to ruby/ql/test/library-tests/ast/gems/test.gemspec diff --git a/ql/test/library-tests/ast/gems/test.ql b/ruby/ql/test/library-tests/ast/gems/test.ql similarity index 100% rename from ql/test/library-tests/ast/gems/test.ql rename to ruby/ql/test/library-tests/ast/gems/test.ql diff --git a/ql/test/library-tests/ast/literals/literals.expected b/ruby/ql/test/library-tests/ast/literals/literals.expected similarity index 100% rename from ql/test/library-tests/ast/literals/literals.expected rename to ruby/ql/test/library-tests/ast/literals/literals.expected diff --git a/ql/test/library-tests/ast/literals/literals.ql b/ruby/ql/test/library-tests/ast/literals/literals.ql similarity index 100% rename from ql/test/library-tests/ast/literals/literals.ql rename to ruby/ql/test/library-tests/ast/literals/literals.ql diff --git a/ql/test/library-tests/ast/literals/literals.rb b/ruby/ql/test/library-tests/ast/literals/literals.rb similarity index 100% rename from ql/test/library-tests/ast/literals/literals.rb rename to ruby/ql/test/library-tests/ast/literals/literals.rb diff --git a/ql/test/library-tests/ast/misc/misc.erb b/ruby/ql/test/library-tests/ast/misc/misc.erb similarity index 100% rename from ql/test/library-tests/ast/misc/misc.erb rename to ruby/ql/test/library-tests/ast/misc/misc.erb diff --git a/ql/test/library-tests/ast/misc/misc.expected b/ruby/ql/test/library-tests/ast/misc/misc.expected similarity index 100% rename from ql/test/library-tests/ast/misc/misc.expected rename to ruby/ql/test/library-tests/ast/misc/misc.expected diff --git a/ql/test/library-tests/ast/misc/misc.ql b/ruby/ql/test/library-tests/ast/misc/misc.ql similarity index 100% rename from ql/test/library-tests/ast/misc/misc.ql rename to ruby/ql/test/library-tests/ast/misc/misc.ql diff --git a/ql/test/library-tests/ast/misc/misc.rb b/ruby/ql/test/library-tests/ast/misc/misc.rb similarity index 100% rename from ql/test/library-tests/ast/misc/misc.rb rename to ruby/ql/test/library-tests/ast/misc/misc.rb diff --git a/ql/test/library-tests/ast/modules/classes.expected b/ruby/ql/test/library-tests/ast/modules/classes.expected similarity index 100% rename from ql/test/library-tests/ast/modules/classes.expected rename to ruby/ql/test/library-tests/ast/modules/classes.expected diff --git a/ql/test/library-tests/ast/modules/classes.ql b/ruby/ql/test/library-tests/ast/modules/classes.ql similarity index 100% rename from ql/test/library-tests/ast/modules/classes.ql rename to ruby/ql/test/library-tests/ast/modules/classes.ql diff --git a/ql/test/library-tests/ast/modules/classes.rb b/ruby/ql/test/library-tests/ast/modules/classes.rb similarity index 100% rename from ql/test/library-tests/ast/modules/classes.rb rename to ruby/ql/test/library-tests/ast/modules/classes.rb diff --git a/ql/test/library-tests/ast/modules/module_base.expected b/ruby/ql/test/library-tests/ast/modules/module_base.expected similarity index 100% rename from ql/test/library-tests/ast/modules/module_base.expected rename to ruby/ql/test/library-tests/ast/modules/module_base.expected diff --git a/ql/test/library-tests/ast/modules/module_base.ql b/ruby/ql/test/library-tests/ast/modules/module_base.ql similarity index 100% rename from ql/test/library-tests/ast/modules/module_base.ql rename to ruby/ql/test/library-tests/ast/modules/module_base.ql diff --git a/ql/test/library-tests/ast/modules/modules.expected b/ruby/ql/test/library-tests/ast/modules/modules.expected similarity index 100% rename from ql/test/library-tests/ast/modules/modules.expected rename to ruby/ql/test/library-tests/ast/modules/modules.expected diff --git a/ql/test/library-tests/ast/modules/modules.ql b/ruby/ql/test/library-tests/ast/modules/modules.ql similarity index 100% rename from ql/test/library-tests/ast/modules/modules.ql rename to ruby/ql/test/library-tests/ast/modules/modules.ql diff --git a/ql/test/library-tests/ast/modules/modules.rb b/ruby/ql/test/library-tests/ast/modules/modules.rb similarity index 100% rename from ql/test/library-tests/ast/modules/modules.rb rename to ruby/ql/test/library-tests/ast/modules/modules.rb diff --git a/ql/test/library-tests/ast/modules/singleton_classes.expected b/ruby/ql/test/library-tests/ast/modules/singleton_classes.expected similarity index 100% rename from ql/test/library-tests/ast/modules/singleton_classes.expected rename to ruby/ql/test/library-tests/ast/modules/singleton_classes.expected diff --git a/ql/test/library-tests/ast/modules/singleton_classes.ql b/ruby/ql/test/library-tests/ast/modules/singleton_classes.ql similarity index 100% rename from ql/test/library-tests/ast/modules/singleton_classes.ql rename to ruby/ql/test/library-tests/ast/modules/singleton_classes.ql diff --git a/ql/test/library-tests/ast/modules/toplevel.expected b/ruby/ql/test/library-tests/ast/modules/toplevel.expected similarity index 100% rename from ql/test/library-tests/ast/modules/toplevel.expected rename to ruby/ql/test/library-tests/ast/modules/toplevel.expected diff --git a/ql/test/library-tests/ast/modules/toplevel.ql b/ruby/ql/test/library-tests/ast/modules/toplevel.ql similarity index 100% rename from ql/test/library-tests/ast/modules/toplevel.ql rename to ruby/ql/test/library-tests/ast/modules/toplevel.ql diff --git a/ql/test/library-tests/ast/modules/toplevel.rb b/ruby/ql/test/library-tests/ast/modules/toplevel.rb similarity index 100% rename from ql/test/library-tests/ast/modules/toplevel.rb rename to ruby/ql/test/library-tests/ast/modules/toplevel.rb diff --git a/ql/test/library-tests/ast/operations/assignment.expected b/ruby/ql/test/library-tests/ast/operations/assignment.expected similarity index 100% rename from ql/test/library-tests/ast/operations/assignment.expected rename to ruby/ql/test/library-tests/ast/operations/assignment.expected diff --git a/ql/test/library-tests/ast/operations/assignment.ql b/ruby/ql/test/library-tests/ast/operations/assignment.ql similarity index 100% rename from ql/test/library-tests/ast/operations/assignment.ql rename to ruby/ql/test/library-tests/ast/operations/assignment.ql diff --git a/ql/test/library-tests/ast/operations/binary.expected b/ruby/ql/test/library-tests/ast/operations/binary.expected similarity index 100% rename from ql/test/library-tests/ast/operations/binary.expected rename to ruby/ql/test/library-tests/ast/operations/binary.expected diff --git a/ql/test/library-tests/ast/operations/binary.ql b/ruby/ql/test/library-tests/ast/operations/binary.ql similarity index 100% rename from ql/test/library-tests/ast/operations/binary.ql rename to ruby/ql/test/library-tests/ast/operations/binary.ql diff --git a/ql/test/library-tests/ast/operations/operation.expected b/ruby/ql/test/library-tests/ast/operations/operation.expected similarity index 100% rename from ql/test/library-tests/ast/operations/operation.expected rename to ruby/ql/test/library-tests/ast/operations/operation.expected diff --git a/ql/test/library-tests/ast/operations/operation.ql b/ruby/ql/test/library-tests/ast/operations/operation.ql similarity index 100% rename from ql/test/library-tests/ast/operations/operation.ql rename to ruby/ql/test/library-tests/ast/operations/operation.ql diff --git a/ql/test/library-tests/ast/operations/operations.rb b/ruby/ql/test/library-tests/ast/operations/operations.rb similarity index 100% rename from ql/test/library-tests/ast/operations/operations.rb rename to ruby/ql/test/library-tests/ast/operations/operations.rb diff --git a/ql/test/library-tests/ast/operations/unary.expected b/ruby/ql/test/library-tests/ast/operations/unary.expected similarity index 100% rename from ql/test/library-tests/ast/operations/unary.expected rename to ruby/ql/test/library-tests/ast/operations/unary.expected diff --git a/ql/test/library-tests/ast/operations/unary.ql b/ruby/ql/test/library-tests/ast/operations/unary.ql similarity index 100% rename from ql/test/library-tests/ast/operations/unary.ql rename to ruby/ql/test/library-tests/ast/operations/unary.ql diff --git a/ql/test/library-tests/ast/params/params.expected b/ruby/ql/test/library-tests/ast/params/params.expected similarity index 100% rename from ql/test/library-tests/ast/params/params.expected rename to ruby/ql/test/library-tests/ast/params/params.expected diff --git a/ql/test/library-tests/ast/params/params.ql b/ruby/ql/test/library-tests/ast/params/params.ql similarity index 100% rename from ql/test/library-tests/ast/params/params.ql rename to ruby/ql/test/library-tests/ast/params/params.ql diff --git a/ql/test/library-tests/ast/params/params.rb b/ruby/ql/test/library-tests/ast/params/params.rb similarity index 100% rename from ql/test/library-tests/ast/params/params.rb rename to ruby/ql/test/library-tests/ast/params/params.rb diff --git a/ql/test/library-tests/controlflow/graph/Cfg.expected b/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected similarity index 100% rename from ql/test/library-tests/controlflow/graph/Cfg.expected rename to ruby/ql/test/library-tests/controlflow/graph/Cfg.expected diff --git a/ql/test/library-tests/controlflow/graph/Cfg.ql b/ruby/ql/test/library-tests/controlflow/graph/Cfg.ql similarity index 100% rename from ql/test/library-tests/controlflow/graph/Cfg.ql rename to ruby/ql/test/library-tests/controlflow/graph/Cfg.ql diff --git a/ql/test/library-tests/controlflow/graph/break_ensure.rb b/ruby/ql/test/library-tests/controlflow/graph/break_ensure.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/break_ensure.rb rename to ruby/ql/test/library-tests/controlflow/graph/break_ensure.rb diff --git a/ql/test/library-tests/controlflow/graph/case.rb b/ruby/ql/test/library-tests/controlflow/graph/case.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/case.rb rename to ruby/ql/test/library-tests/controlflow/graph/case.rb diff --git a/ql/test/library-tests/controlflow/graph/cfg.html.erb b/ruby/ql/test/library-tests/controlflow/graph/cfg.html.erb similarity index 100% rename from ql/test/library-tests/controlflow/graph/cfg.html.erb rename to ruby/ql/test/library-tests/controlflow/graph/cfg.html.erb diff --git a/ql/test/library-tests/controlflow/graph/cfg.rb b/ruby/ql/test/library-tests/controlflow/graph/cfg.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/cfg.rb rename to ruby/ql/test/library-tests/controlflow/graph/cfg.rb diff --git a/ql/test/library-tests/controlflow/graph/desugar.rb b/ruby/ql/test/library-tests/controlflow/graph/desugar.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/desugar.rb rename to ruby/ql/test/library-tests/controlflow/graph/desugar.rb diff --git a/ql/test/library-tests/controlflow/graph/exit.rb b/ruby/ql/test/library-tests/controlflow/graph/exit.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/exit.rb rename to ruby/ql/test/library-tests/controlflow/graph/exit.rb diff --git a/ql/test/library-tests/controlflow/graph/heredoc.rb b/ruby/ql/test/library-tests/controlflow/graph/heredoc.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/heredoc.rb rename to ruby/ql/test/library-tests/controlflow/graph/heredoc.rb diff --git a/ql/test/library-tests/controlflow/graph/ifs.rb b/ruby/ql/test/library-tests/controlflow/graph/ifs.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/ifs.rb rename to ruby/ql/test/library-tests/controlflow/graph/ifs.rb diff --git a/ql/test/library-tests/controlflow/graph/loops.rb b/ruby/ql/test/library-tests/controlflow/graph/loops.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/loops.rb rename to ruby/ql/test/library-tests/controlflow/graph/loops.rb diff --git a/ql/test/library-tests/controlflow/graph/raise.rb b/ruby/ql/test/library-tests/controlflow/graph/raise.rb similarity index 100% rename from ql/test/library-tests/controlflow/graph/raise.rb rename to ruby/ql/test/library-tests/controlflow/graph/raise.rb diff --git a/ql/test/library-tests/dataflow/api-graphs/test1.rb b/ruby/ql/test/library-tests/dataflow/api-graphs/test1.rb similarity index 100% rename from ql/test/library-tests/dataflow/api-graphs/test1.rb rename to ruby/ql/test/library-tests/dataflow/api-graphs/test1.rb diff --git a/ql/test/library-tests/dataflow/api-graphs/use.expected b/ruby/ql/test/library-tests/dataflow/api-graphs/use.expected similarity index 100% rename from ql/test/library-tests/dataflow/api-graphs/use.expected rename to ruby/ql/test/library-tests/dataflow/api-graphs/use.expected diff --git a/ql/test/library-tests/dataflow/api-graphs/use.ql b/ruby/ql/test/library-tests/dataflow/api-graphs/use.ql similarity index 100% rename from ql/test/library-tests/dataflow/api-graphs/use.ql rename to ruby/ql/test/library-tests/dataflow/api-graphs/use.ql diff --git a/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected similarity index 100% rename from ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected rename to ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected diff --git a/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql similarity index 100% rename from ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql rename to ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql diff --git a/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.rb b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.rb similarity index 100% rename from ql/test/library-tests/dataflow/barrier-guards/barrier-guards.rb rename to ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.rb diff --git a/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected b/ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected similarity index 100% rename from ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected rename to ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected diff --git a/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.ql b/ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.ql similarity index 100% rename from ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.ql rename to ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.ql diff --git a/ql/test/library-tests/dataflow/call-sensitivity/call_sensitivity.rb b/ruby/ql/test/library-tests/dataflow/call-sensitivity/call_sensitivity.rb similarity index 100% rename from ql/test/library-tests/dataflow/call-sensitivity/call_sensitivity.rb rename to ruby/ql/test/library-tests/dataflow/call-sensitivity/call_sensitivity.rb diff --git a/ql/test/library-tests/dataflow/local/DataflowStep.expected b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected similarity index 100% rename from ql/test/library-tests/dataflow/local/DataflowStep.expected rename to ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected diff --git a/ql/test/library-tests/dataflow/local/DataflowStep.ql b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.ql similarity index 100% rename from ql/test/library-tests/dataflow/local/DataflowStep.ql rename to ruby/ql/test/library-tests/dataflow/local/DataflowStep.ql diff --git a/ql/test/library-tests/dataflow/local/ReturnNodes.expected b/ruby/ql/test/library-tests/dataflow/local/ReturnNodes.expected similarity index 100% rename from ql/test/library-tests/dataflow/local/ReturnNodes.expected rename to ruby/ql/test/library-tests/dataflow/local/ReturnNodes.expected diff --git a/ql/test/library-tests/dataflow/local/ReturnNodes.ql b/ruby/ql/test/library-tests/dataflow/local/ReturnNodes.ql similarity index 100% rename from ql/test/library-tests/dataflow/local/ReturnNodes.ql rename to ruby/ql/test/library-tests/dataflow/local/ReturnNodes.ql diff --git a/ql/test/library-tests/dataflow/local/local_dataflow.rb b/ruby/ql/test/library-tests/dataflow/local/local_dataflow.rb similarity index 100% rename from ql/test/library-tests/dataflow/local/local_dataflow.rb rename to ruby/ql/test/library-tests/dataflow/local/local_dataflow.rb diff --git a/ql/test/library-tests/dataflow/summaries/Summaries.expected b/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected similarity index 100% rename from ql/test/library-tests/dataflow/summaries/Summaries.expected rename to ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected diff --git a/ql/test/library-tests/dataflow/summaries/Summaries.ql b/ruby/ql/test/library-tests/dataflow/summaries/Summaries.ql similarity index 100% rename from ql/test/library-tests/dataflow/summaries/Summaries.ql rename to ruby/ql/test/library-tests/dataflow/summaries/Summaries.ql diff --git a/ql/test/library-tests/dataflow/summaries/summaries.rb b/ruby/ql/test/library-tests/dataflow/summaries/summaries.rb similarity index 100% rename from ql/test/library-tests/dataflow/summaries/summaries.rb rename to ruby/ql/test/library-tests/dataflow/summaries/summaries.rb diff --git a/ql/test/library-tests/frameworks/ActionController.expected b/ruby/ql/test/library-tests/frameworks/ActionController.expected similarity index 100% rename from ql/test/library-tests/frameworks/ActionController.expected rename to ruby/ql/test/library-tests/frameworks/ActionController.expected diff --git a/ql/test/library-tests/frameworks/ActionController.ql b/ruby/ql/test/library-tests/frameworks/ActionController.ql similarity index 100% rename from ql/test/library-tests/frameworks/ActionController.ql rename to ruby/ql/test/library-tests/frameworks/ActionController.ql diff --git a/ql/test/library-tests/frameworks/ActionView.expected b/ruby/ql/test/library-tests/frameworks/ActionView.expected similarity index 100% rename from ql/test/library-tests/frameworks/ActionView.expected rename to ruby/ql/test/library-tests/frameworks/ActionView.expected diff --git a/ql/test/library-tests/frameworks/ActionView.ql b/ruby/ql/test/library-tests/frameworks/ActionView.ql similarity index 100% rename from ql/test/library-tests/frameworks/ActionView.ql rename to ruby/ql/test/library-tests/frameworks/ActionView.ql diff --git a/ql/test/library-tests/frameworks/ActiveRecord.expected b/ruby/ql/test/library-tests/frameworks/ActiveRecord.expected similarity index 100% rename from ql/test/library-tests/frameworks/ActiveRecord.expected rename to ruby/ql/test/library-tests/frameworks/ActiveRecord.expected diff --git a/ql/test/library-tests/frameworks/ActiveRecord.ql b/ruby/ql/test/library-tests/frameworks/ActiveRecord.ql similarity index 100% rename from ql/test/library-tests/frameworks/ActiveRecord.ql rename to ruby/ql/test/library-tests/frameworks/ActiveRecord.ql diff --git a/ql/test/library-tests/frameworks/ActiveRecordInjection.rb b/ruby/ql/test/library-tests/frameworks/ActiveRecordInjection.rb similarity index 100% rename from ql/test/library-tests/frameworks/ActiveRecordInjection.rb rename to ruby/ql/test/library-tests/frameworks/ActiveRecordInjection.rb diff --git a/ql/test/library-tests/frameworks/CommandExecution.rb b/ruby/ql/test/library-tests/frameworks/CommandExecution.rb similarity index 100% rename from ql/test/library-tests/frameworks/CommandExecution.rb rename to ruby/ql/test/library-tests/frameworks/CommandExecution.rb diff --git a/ql/test/library-tests/frameworks/Eval.rb b/ruby/ql/test/library-tests/frameworks/Eval.rb similarity index 100% rename from ql/test/library-tests/frameworks/Eval.rb rename to ruby/ql/test/library-tests/frameworks/Eval.rb diff --git a/ql/test/library-tests/frameworks/Files.expected b/ruby/ql/test/library-tests/frameworks/Files.expected similarity index 100% rename from ql/test/library-tests/frameworks/Files.expected rename to ruby/ql/test/library-tests/frameworks/Files.expected diff --git a/ql/test/library-tests/frameworks/Files.ql b/ruby/ql/test/library-tests/frameworks/Files.ql similarity index 100% rename from ql/test/library-tests/frameworks/Files.ql rename to ruby/ql/test/library-tests/frameworks/Files.ql diff --git a/ql/test/library-tests/frameworks/Files.rb b/ruby/ql/test/library-tests/frameworks/Files.rb similarity index 100% rename from ql/test/library-tests/frameworks/Files.rb rename to ruby/ql/test/library-tests/frameworks/Files.rb diff --git a/ql/test/library-tests/frameworks/StandardLibrary.expected b/ruby/ql/test/library-tests/frameworks/StandardLibrary.expected similarity index 100% rename from ql/test/library-tests/frameworks/StandardLibrary.expected rename to ruby/ql/test/library-tests/frameworks/StandardLibrary.expected diff --git a/ql/test/library-tests/frameworks/StandardLibrary.ql b/ruby/ql/test/library-tests/frameworks/StandardLibrary.ql similarity index 100% rename from ql/test/library-tests/frameworks/StandardLibrary.ql rename to ruby/ql/test/library-tests/frameworks/StandardLibrary.ql diff --git a/ql/test/library-tests/frameworks/app/components/DummyComponent.rb b/ruby/ql/test/library-tests/frameworks/app/components/DummyComponent.rb similarity index 100% rename from ql/test/library-tests/frameworks/app/components/DummyComponent.rb rename to ruby/ql/test/library-tests/frameworks/app/components/DummyComponent.rb diff --git a/ql/test/library-tests/frameworks/app/controllers/foo/bars_controller.rb b/ruby/ql/test/library-tests/frameworks/app/controllers/foo/bars_controller.rb similarity index 100% rename from ql/test/library-tests/frameworks/app/controllers/foo/bars_controller.rb rename to ruby/ql/test/library-tests/frameworks/app/controllers/foo/bars_controller.rb diff --git a/ql/test/library-tests/frameworks/app/views/foo/bars/_widget.html.erb b/ruby/ql/test/library-tests/frameworks/app/views/foo/bars/_widget.html.erb similarity index 100% rename from ql/test/library-tests/frameworks/app/views/foo/bars/_widget.html.erb rename to ruby/ql/test/library-tests/frameworks/app/views/foo/bars/_widget.html.erb diff --git a/ql/test/library-tests/frameworks/app/views/foo/bars/show.html.erb b/ruby/ql/test/library-tests/frameworks/app/views/foo/bars/show.html.erb similarity index 100% rename from ql/test/library-tests/frameworks/app/views/foo/bars/show.html.erb rename to ruby/ql/test/library-tests/frameworks/app/views/foo/bars/show.html.erb diff --git a/ql/test/library-tests/frameworks/http_clients/Excon.expected b/ruby/ql/test/library-tests/frameworks/http_clients/Excon.expected similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/Excon.expected rename to ruby/ql/test/library-tests/frameworks/http_clients/Excon.expected diff --git a/ql/test/library-tests/frameworks/http_clients/Excon.ql b/ruby/ql/test/library-tests/frameworks/http_clients/Excon.ql similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/Excon.ql rename to ruby/ql/test/library-tests/frameworks/http_clients/Excon.ql diff --git a/ql/test/library-tests/frameworks/http_clients/Excon.rb b/ruby/ql/test/library-tests/frameworks/http_clients/Excon.rb similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/Excon.rb rename to ruby/ql/test/library-tests/frameworks/http_clients/Excon.rb diff --git a/ql/test/library-tests/frameworks/http_clients/Faraday.expected b/ruby/ql/test/library-tests/frameworks/http_clients/Faraday.expected similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/Faraday.expected rename to ruby/ql/test/library-tests/frameworks/http_clients/Faraday.expected diff --git a/ql/test/library-tests/frameworks/http_clients/Faraday.ql b/ruby/ql/test/library-tests/frameworks/http_clients/Faraday.ql similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/Faraday.ql rename to ruby/ql/test/library-tests/frameworks/http_clients/Faraday.ql diff --git a/ql/test/library-tests/frameworks/http_clients/Faraday.rb b/ruby/ql/test/library-tests/frameworks/http_clients/Faraday.rb similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/Faraday.rb rename to ruby/ql/test/library-tests/frameworks/http_clients/Faraday.rb diff --git a/ql/test/library-tests/frameworks/http_clients/NetHTTP.expected b/ruby/ql/test/library-tests/frameworks/http_clients/NetHTTP.expected similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/NetHTTP.expected rename to ruby/ql/test/library-tests/frameworks/http_clients/NetHTTP.expected diff --git a/ql/test/library-tests/frameworks/http_clients/NetHTTP.ql b/ruby/ql/test/library-tests/frameworks/http_clients/NetHTTP.ql similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/NetHTTP.ql rename to ruby/ql/test/library-tests/frameworks/http_clients/NetHTTP.ql diff --git a/ql/test/library-tests/frameworks/http_clients/NetHTTP.rb b/ruby/ql/test/library-tests/frameworks/http_clients/NetHTTP.rb similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/NetHTTP.rb rename to ruby/ql/test/library-tests/frameworks/http_clients/NetHTTP.rb diff --git a/ql/test/library-tests/frameworks/http_clients/RestClient.expected b/ruby/ql/test/library-tests/frameworks/http_clients/RestClient.expected similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/RestClient.expected rename to ruby/ql/test/library-tests/frameworks/http_clients/RestClient.expected diff --git a/ql/test/library-tests/frameworks/http_clients/RestClient.ql b/ruby/ql/test/library-tests/frameworks/http_clients/RestClient.ql similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/RestClient.ql rename to ruby/ql/test/library-tests/frameworks/http_clients/RestClient.ql diff --git a/ql/test/library-tests/frameworks/http_clients/RestClient.rb b/ruby/ql/test/library-tests/frameworks/http_clients/RestClient.rb similarity index 100% rename from ql/test/library-tests/frameworks/http_clients/RestClient.rb rename to ruby/ql/test/library-tests/frameworks/http_clients/RestClient.rb diff --git a/ql/test/library-tests/modules/ancestors.expected b/ruby/ql/test/library-tests/modules/ancestors.expected similarity index 100% rename from ql/test/library-tests/modules/ancestors.expected rename to ruby/ql/test/library-tests/modules/ancestors.expected diff --git a/ql/test/library-tests/modules/ancestors.ql b/ruby/ql/test/library-tests/modules/ancestors.ql similarity index 100% rename from ql/test/library-tests/modules/ancestors.ql rename to ruby/ql/test/library-tests/modules/ancestors.ql diff --git a/ql/test/library-tests/modules/callgraph.expected b/ruby/ql/test/library-tests/modules/callgraph.expected similarity index 100% rename from ql/test/library-tests/modules/callgraph.expected rename to ruby/ql/test/library-tests/modules/callgraph.expected diff --git a/ql/test/library-tests/modules/callgraph.ql b/ruby/ql/test/library-tests/modules/callgraph.ql similarity index 100% rename from ql/test/library-tests/modules/callgraph.ql rename to ruby/ql/test/library-tests/modules/callgraph.ql diff --git a/ql/test/library-tests/modules/calls.rb b/ruby/ql/test/library-tests/modules/calls.rb similarity index 100% rename from ql/test/library-tests/modules/calls.rb rename to ruby/ql/test/library-tests/modules/calls.rb diff --git a/ql/test/library-tests/modules/hello.rb b/ruby/ql/test/library-tests/modules/hello.rb similarity index 100% rename from ql/test/library-tests/modules/hello.rb rename to ruby/ql/test/library-tests/modules/hello.rb diff --git a/ql/test/library-tests/modules/methods.expected b/ruby/ql/test/library-tests/modules/methods.expected similarity index 100% rename from ql/test/library-tests/modules/methods.expected rename to ruby/ql/test/library-tests/modules/methods.expected diff --git a/ql/test/library-tests/modules/methods.ql b/ruby/ql/test/library-tests/modules/methods.ql similarity index 100% rename from ql/test/library-tests/modules/methods.ql rename to ruby/ql/test/library-tests/modules/methods.ql diff --git a/ql/test/library-tests/modules/modules.expected b/ruby/ql/test/library-tests/modules/modules.expected similarity index 100% rename from ql/test/library-tests/modules/modules.expected rename to ruby/ql/test/library-tests/modules/modules.expected diff --git a/ql/test/library-tests/modules/modules.ql b/ruby/ql/test/library-tests/modules/modules.ql similarity index 100% rename from ql/test/library-tests/modules/modules.ql rename to ruby/ql/test/library-tests/modules/modules.ql diff --git a/ql/test/library-tests/modules/modules.rb b/ruby/ql/test/library-tests/modules/modules.rb similarity index 100% rename from ql/test/library-tests/modules/modules.rb rename to ruby/ql/test/library-tests/modules/modules.rb diff --git a/ql/test/library-tests/modules/private.rb b/ruby/ql/test/library-tests/modules/private.rb similarity index 100% rename from ql/test/library-tests/modules/private.rb rename to ruby/ql/test/library-tests/modules/private.rb diff --git a/ql/test/library-tests/modules/superclasses.expected b/ruby/ql/test/library-tests/modules/superclasses.expected similarity index 100% rename from ql/test/library-tests/modules/superclasses.expected rename to ruby/ql/test/library-tests/modules/superclasses.expected diff --git a/ql/test/library-tests/modules/superclasses.ql b/ruby/ql/test/library-tests/modules/superclasses.ql similarity index 100% rename from ql/test/library-tests/modules/superclasses.ql rename to ruby/ql/test/library-tests/modules/superclasses.ql diff --git a/ql/test/library-tests/regexp/parse.expected b/ruby/ql/test/library-tests/regexp/parse.expected similarity index 100% rename from ql/test/library-tests/regexp/parse.expected rename to ruby/ql/test/library-tests/regexp/parse.expected diff --git a/ql/test/library-tests/regexp/parse.ql b/ruby/ql/test/library-tests/regexp/parse.ql similarity index 100% rename from ql/test/library-tests/regexp/parse.ql rename to ruby/ql/test/library-tests/regexp/parse.ql diff --git a/ql/test/library-tests/regexp/regexp.rb b/ruby/ql/test/library-tests/regexp/regexp.rb similarity index 100% rename from ql/test/library-tests/regexp/regexp.rb rename to ruby/ql/test/library-tests/regexp/regexp.rb diff --git a/ql/test/library-tests/variables/class_variables.rb b/ruby/ql/test/library-tests/variables/class_variables.rb similarity index 100% rename from ql/test/library-tests/variables/class_variables.rb rename to ruby/ql/test/library-tests/variables/class_variables.rb diff --git a/ql/test/library-tests/variables/instance_variables.rb b/ruby/ql/test/library-tests/variables/instance_variables.rb similarity index 100% rename from ql/test/library-tests/variables/instance_variables.rb rename to ruby/ql/test/library-tests/variables/instance_variables.rb diff --git a/ql/test/library-tests/variables/nested_scopes.rb b/ruby/ql/test/library-tests/variables/nested_scopes.rb similarity index 100% rename from ql/test/library-tests/variables/nested_scopes.rb rename to ruby/ql/test/library-tests/variables/nested_scopes.rb diff --git a/ql/test/library-tests/variables/parameter.expected b/ruby/ql/test/library-tests/variables/parameter.expected similarity index 100% rename from ql/test/library-tests/variables/parameter.expected rename to ruby/ql/test/library-tests/variables/parameter.expected diff --git a/ql/test/library-tests/variables/parameter.ql b/ruby/ql/test/library-tests/variables/parameter.ql similarity index 100% rename from ql/test/library-tests/variables/parameter.ql rename to ruby/ql/test/library-tests/variables/parameter.ql diff --git a/ql/test/library-tests/variables/parameters.rb b/ruby/ql/test/library-tests/variables/parameters.rb similarity index 100% rename from ql/test/library-tests/variables/parameters.rb rename to ruby/ql/test/library-tests/variables/parameters.rb diff --git a/ql/test/library-tests/variables/scopes.rb b/ruby/ql/test/library-tests/variables/scopes.rb similarity index 100% rename from ql/test/library-tests/variables/scopes.rb rename to ruby/ql/test/library-tests/variables/scopes.rb diff --git a/ql/test/library-tests/variables/ssa.expected b/ruby/ql/test/library-tests/variables/ssa.expected similarity index 100% rename from ql/test/library-tests/variables/ssa.expected rename to ruby/ql/test/library-tests/variables/ssa.expected diff --git a/ql/test/library-tests/variables/ssa.ql b/ruby/ql/test/library-tests/variables/ssa.ql similarity index 100% rename from ql/test/library-tests/variables/ssa.ql rename to ruby/ql/test/library-tests/variables/ssa.ql diff --git a/ql/test/library-tests/variables/ssa.rb b/ruby/ql/test/library-tests/variables/ssa.rb similarity index 100% rename from ql/test/library-tests/variables/ssa.rb rename to ruby/ql/test/library-tests/variables/ssa.rb diff --git a/ql/test/library-tests/variables/varaccess.expected b/ruby/ql/test/library-tests/variables/varaccess.expected similarity index 100% rename from ql/test/library-tests/variables/varaccess.expected rename to ruby/ql/test/library-tests/variables/varaccess.expected diff --git a/ql/test/library-tests/variables/varaccess.ql b/ruby/ql/test/library-tests/variables/varaccess.ql similarity index 100% rename from ql/test/library-tests/variables/varaccess.ql rename to ruby/ql/test/library-tests/variables/varaccess.ql diff --git a/ql/test/library-tests/variables/variable.expected b/ruby/ql/test/library-tests/variables/variable.expected similarity index 100% rename from ql/test/library-tests/variables/variable.expected rename to ruby/ql/test/library-tests/variables/variable.expected diff --git a/ql/test/library-tests/variables/variable.ql b/ruby/ql/test/library-tests/variables/variable.ql similarity index 100% rename from ql/test/library-tests/variables/variable.ql rename to ruby/ql/test/library-tests/variables/variable.ql diff --git a/ql/test/library-tests/variables/varscopes.expected b/ruby/ql/test/library-tests/variables/varscopes.expected similarity index 100% rename from ql/test/library-tests/variables/varscopes.expected rename to ruby/ql/test/library-tests/variables/varscopes.expected diff --git a/ql/test/library-tests/variables/varscopes.ql b/ruby/ql/test/library-tests/variables/varscopes.ql similarity index 100% rename from ql/test/library-tests/variables/varscopes.ql rename to ruby/ql/test/library-tests/variables/varscopes.ql diff --git a/ql/test/qlpack.lock.yml b/ruby/ql/test/qlpack.lock.yml similarity index 100% rename from ql/test/qlpack.lock.yml rename to ruby/ql/test/qlpack.lock.yml diff --git a/ql/test/qlpack.yml b/ruby/ql/test/qlpack.yml similarity index 100% rename from ql/test/qlpack.yml rename to ruby/ql/test/qlpack.yml diff --git a/ql/test/query-tests/AlertSuppression/.gitattributes b/ruby/ql/test/query-tests/AlertSuppression/.gitattributes similarity index 100% rename from ql/test/query-tests/AlertSuppression/.gitattributes rename to ruby/ql/test/query-tests/AlertSuppression/.gitattributes diff --git a/ql/test/query-tests/AlertSuppression/AlertSuppression.expected b/ruby/ql/test/query-tests/AlertSuppression/AlertSuppression.expected similarity index 100% rename from ql/test/query-tests/AlertSuppression/AlertSuppression.expected rename to ruby/ql/test/query-tests/AlertSuppression/AlertSuppression.expected diff --git a/ql/test/query-tests/AlertSuppression/AlertSuppression.qlref b/ruby/ql/test/query-tests/AlertSuppression/AlertSuppression.qlref similarity index 100% rename from ql/test/query-tests/AlertSuppression/AlertSuppression.qlref rename to ruby/ql/test/query-tests/AlertSuppression/AlertSuppression.qlref diff --git a/ql/test/query-tests/AlertSuppression/Test.rb b/ruby/ql/test/query-tests/AlertSuppression/Test.rb similarity index 100% rename from ql/test/query-tests/AlertSuppression/Test.rb rename to ruby/ql/test/query-tests/AlertSuppression/Test.rb diff --git a/ql/test/query-tests/AlertSuppression/TestWindows.rb b/ruby/ql/test/query-tests/AlertSuppression/TestWindows.rb similarity index 100% rename from ql/test/query-tests/AlertSuppression/TestWindows.rb rename to ruby/ql/test/query-tests/AlertSuppression/TestWindows.rb diff --git a/ql/test/query-tests/analysis/Definitions.expected b/ruby/ql/test/query-tests/analysis/Definitions.expected similarity index 100% rename from ql/test/query-tests/analysis/Definitions.expected rename to ruby/ql/test/query-tests/analysis/Definitions.expected diff --git a/ql/test/query-tests/analysis/Definitions.qlref b/ruby/ql/test/query-tests/analysis/Definitions.qlref similarity index 100% rename from ql/test/query-tests/analysis/Definitions.qlref rename to ruby/ql/test/query-tests/analysis/Definitions.qlref diff --git a/ql/test/query-tests/analysis/Definitions.rb b/ruby/ql/test/query-tests/analysis/Definitions.rb similarity index 100% rename from ql/test/query-tests/analysis/Definitions.rb rename to ruby/ql/test/query-tests/analysis/Definitions.rb diff --git a/ql/test/query-tests/diagnostics/ExtractionErrors.expected b/ruby/ql/test/query-tests/diagnostics/ExtractionErrors.expected similarity index 100% rename from ql/test/query-tests/diagnostics/ExtractionErrors.expected rename to ruby/ql/test/query-tests/diagnostics/ExtractionErrors.expected diff --git a/ql/test/query-tests/diagnostics/ExtractionErrors.qlref b/ruby/ql/test/query-tests/diagnostics/ExtractionErrors.qlref similarity index 100% rename from ql/test/query-tests/diagnostics/ExtractionErrors.qlref rename to ruby/ql/test/query-tests/diagnostics/ExtractionErrors.qlref diff --git a/ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.expected b/ruby/ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.expected similarity index 100% rename from ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.expected rename to ruby/ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.expected diff --git a/ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.qlref b/ruby/ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.qlref similarity index 100% rename from ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.qlref rename to ruby/ql/test/query-tests/diagnostics/NumberOfFilesExtractedWithErrors.qlref diff --git a/ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.expected b/ruby/ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.expected similarity index 100% rename from ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.expected rename to ruby/ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.expected diff --git a/ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.qlref b/ruby/ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.qlref similarity index 100% rename from ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.qlref rename to ruby/ql/test/query-tests/diagnostics/NumberOfSuccessfullyExtractedFiles.qlref diff --git a/ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.expected b/ruby/ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.expected similarity index 100% rename from ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.expected rename to ruby/ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.expected diff --git a/ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.qlref b/ruby/ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.qlref similarity index 100% rename from ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.qlref rename to ruby/ql/test/query-tests/diagnostics/SuccessfullyExtractedFiles.qlref diff --git a/ql/test/query-tests/diagnostics/src/bar.erb b/ruby/ql/test/query-tests/diagnostics/src/bar.erb similarity index 100% rename from ql/test/query-tests/diagnostics/src/bar.erb rename to ruby/ql/test/query-tests/diagnostics/src/bar.erb diff --git a/ql/test/query-tests/diagnostics/src/foo.rb b/ruby/ql/test/query-tests/diagnostics/src/foo.rb similarity index 100% rename from ql/test/query-tests/diagnostics/src/foo.rb rename to ruby/ql/test/query-tests/diagnostics/src/foo.rb diff --git a/ql/test/query-tests/diagnostics/src/not_ruby.rb b/ruby/ql/test/query-tests/diagnostics/src/not_ruby.rb similarity index 100% rename from ql/test/query-tests/diagnostics/src/not_ruby.rb rename to ruby/ql/test/query-tests/diagnostics/src/not_ruby.rb diff --git a/ql/test/query-tests/diagnostics/src/unsupported_feature.rb b/ruby/ql/test/query-tests/diagnostics/src/unsupported_feature.rb similarity index 100% rename from ql/test/query-tests/diagnostics/src/unsupported_feature.rb rename to ruby/ql/test/query-tests/diagnostics/src/unsupported_feature.rb diff --git a/ql/test/query-tests/diagnostics/src/vendor/cache/lib.rb b/ruby/ql/test/query-tests/diagnostics/src/vendor/cache/lib.rb similarity index 100% rename from ql/test/query-tests/diagnostics/src/vendor/cache/lib.rb rename to ruby/ql/test/query-tests/diagnostics/src/vendor/cache/lib.rb diff --git a/ql/test/query-tests/metrics/FLines/Empty.rb b/ruby/ql/test/query-tests/metrics/FLines/Empty.rb similarity index 100% rename from ql/test/query-tests/metrics/FLines/Empty.rb rename to ruby/ql/test/query-tests/metrics/FLines/Empty.rb diff --git a/ql/test/query-tests/metrics/FLines/FLines.expected b/ruby/ql/test/query-tests/metrics/FLines/FLines.expected similarity index 100% rename from ql/test/query-tests/metrics/FLines/FLines.expected rename to ruby/ql/test/query-tests/metrics/FLines/FLines.expected diff --git a/ql/test/query-tests/metrics/FLines/FLines.qlref b/ruby/ql/test/query-tests/metrics/FLines/FLines.qlref similarity index 100% rename from ql/test/query-tests/metrics/FLines/FLines.qlref rename to ruby/ql/test/query-tests/metrics/FLines/FLines.qlref diff --git a/ql/test/query-tests/metrics/FLines/FLines.rb b/ruby/ql/test/query-tests/metrics/FLines/FLines.rb similarity index 100% rename from ql/test/query-tests/metrics/FLines/FLines.rb rename to ruby/ql/test/query-tests/metrics/FLines/FLines.rb diff --git a/ql/test/query-tests/metrics/FLines/FLinesOfCode.expected b/ruby/ql/test/query-tests/metrics/FLines/FLinesOfCode.expected similarity index 100% rename from ql/test/query-tests/metrics/FLines/FLinesOfCode.expected rename to ruby/ql/test/query-tests/metrics/FLines/FLinesOfCode.expected diff --git a/ql/test/query-tests/metrics/FLines/FLinesOfCode.qlref b/ruby/ql/test/query-tests/metrics/FLines/FLinesOfCode.qlref similarity index 100% rename from ql/test/query-tests/metrics/FLines/FLinesOfCode.qlref rename to ruby/ql/test/query-tests/metrics/FLines/FLinesOfCode.qlref diff --git a/ql/test/query-tests/metrics/FLines/FLinesOfComments.expected b/ruby/ql/test/query-tests/metrics/FLines/FLinesOfComments.expected similarity index 100% rename from ql/test/query-tests/metrics/FLines/FLinesOfComments.expected rename to ruby/ql/test/query-tests/metrics/FLines/FLinesOfComments.expected diff --git a/ql/test/query-tests/metrics/FLines/FLinesOfComments.qlref b/ruby/ql/test/query-tests/metrics/FLines/FLinesOfComments.qlref similarity index 100% rename from ql/test/query-tests/metrics/FLines/FLinesOfComments.qlref rename to ruby/ql/test/query-tests/metrics/FLines/FLinesOfComments.qlref diff --git a/ql/test/query-tests/performance/UseDetect/UseDetect.expected b/ruby/ql/test/query-tests/performance/UseDetect/UseDetect.expected similarity index 100% rename from ql/test/query-tests/performance/UseDetect/UseDetect.expected rename to ruby/ql/test/query-tests/performance/UseDetect/UseDetect.expected diff --git a/ql/test/query-tests/performance/UseDetect/UseDetect.qlref b/ruby/ql/test/query-tests/performance/UseDetect/UseDetect.qlref similarity index 100% rename from ql/test/query-tests/performance/UseDetect/UseDetect.qlref rename to ruby/ql/test/query-tests/performance/UseDetect/UseDetect.qlref diff --git a/ql/test/query-tests/performance/UseDetect/UseDetect.rb b/ruby/ql/test/query-tests/performance/UseDetect/UseDetect.rb similarity index 100% rename from ql/test/query-tests/performance/UseDetect/UseDetect.rb rename to ruby/ql/test/query-tests/performance/UseDetect/UseDetect.rb diff --git a/ql/test/query-tests/security/cwe-078/CommandInjection.expected b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection.expected similarity index 100% rename from ql/test/query-tests/security/cwe-078/CommandInjection.expected rename to ruby/ql/test/query-tests/security/cwe-078/CommandInjection.expected diff --git a/ql/test/query-tests/security/cwe-078/CommandInjection.qlref b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-078/CommandInjection.qlref rename to ruby/ql/test/query-tests/security/cwe-078/CommandInjection.qlref diff --git a/ql/test/query-tests/security/cwe-078/CommandInjection.rb b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection.rb similarity index 100% rename from ql/test/query-tests/security/cwe-078/CommandInjection.rb rename to ruby/ql/test/query-tests/security/cwe-078/CommandInjection.rb diff --git a/ql/test/query-tests/security/cwe-079/ReflectedXSS.expected b/ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.expected similarity index 100% rename from ql/test/query-tests/security/cwe-079/ReflectedXSS.expected rename to ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.expected diff --git a/ql/test/query-tests/security/cwe-079/ReflectedXSS.qlref b/ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-079/ReflectedXSS.qlref rename to ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.qlref diff --git a/ql/test/query-tests/security/cwe-079/app/controllers/foo/bars_controller.rb b/ruby/ql/test/query-tests/security/cwe-079/app/controllers/foo/bars_controller.rb similarity index 100% rename from ql/test/query-tests/security/cwe-079/app/controllers/foo/bars_controller.rb rename to ruby/ql/test/query-tests/security/cwe-079/app/controllers/foo/bars_controller.rb diff --git a/ql/test/query-tests/security/cwe-079/app/views/foo/bars/_widget.html.erb b/ruby/ql/test/query-tests/security/cwe-079/app/views/foo/bars/_widget.html.erb similarity index 100% rename from ql/test/query-tests/security/cwe-079/app/views/foo/bars/_widget.html.erb rename to ruby/ql/test/query-tests/security/cwe-079/app/views/foo/bars/_widget.html.erb diff --git a/ql/test/query-tests/security/cwe-079/app/views/foo/bars/show.html.erb b/ruby/ql/test/query-tests/security/cwe-079/app/views/foo/bars/show.html.erb similarity index 100% rename from ql/test/query-tests/security/cwe-079/app/views/foo/bars/show.html.erb rename to ruby/ql/test/query-tests/security/cwe-079/app/views/foo/bars/show.html.erb diff --git a/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb b/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb similarity index 100% rename from ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb rename to ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb diff --git a/ql/test/query-tests/security/cwe-089/SqlInjection.expected b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected similarity index 100% rename from ql/test/query-tests/security/cwe-089/SqlInjection.expected rename to ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected diff --git a/ql/test/query-tests/security/cwe-089/SqlInjection.qlref b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-089/SqlInjection.qlref rename to ruby/ql/test/query-tests/security/cwe-089/SqlInjection.qlref diff --git a/ql/test/query-tests/security/cwe-094/CodeInjection.expected b/ruby/ql/test/query-tests/security/cwe-094/CodeInjection.expected similarity index 100% rename from ql/test/query-tests/security/cwe-094/CodeInjection.expected rename to ruby/ql/test/query-tests/security/cwe-094/CodeInjection.expected diff --git a/ql/test/query-tests/security/cwe-094/CodeInjection.qlref b/ruby/ql/test/query-tests/security/cwe-094/CodeInjection.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-094/CodeInjection.qlref rename to ruby/ql/test/query-tests/security/cwe-094/CodeInjection.qlref diff --git a/ql/test/query-tests/security/cwe-094/CodeInjection.rb b/ruby/ql/test/query-tests/security/cwe-094/CodeInjection.rb similarity index 100% rename from ql/test/query-tests/security/cwe-094/CodeInjection.rb rename to ruby/ql/test/query-tests/security/cwe-094/CodeInjection.rb diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/ANodeBlog-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/ANodeBlog-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/ANodeBlog-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/ANodeBlog-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/CodeMirror-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/CodeMirror-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/CodeMirror-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/CodeMirror-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/Prism-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/Prism-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/Prism-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/Prism-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/Prototype.js-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/Prototype.js-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/Prototype.js-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/Prototype.js-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.expected b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.expected similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.expected rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.expected diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.qlref b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.qlref rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/ReDoS.qlref diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/brace-expansion-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/brace-expansion-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/brace-expansion-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/brace-expansion-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/jest-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/jest-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/jest-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/jest-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/knockout-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/knockout-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/knockout-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/knockout-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/marked-LICENSE b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/marked-LICENSE similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/marked-LICENSE rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/marked-LICENSE diff --git a/ql/test/query-tests/security/cwe-1333-exponential-redos/tst.rb b/ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/tst.rb similarity index 100% rename from ql/test/query-tests/security/cwe-1333-exponential-redos/tst.rb rename to ruby/ql/test/query-tests/security/cwe-1333-exponential-redos/tst.rb diff --git a/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected b/ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected similarity index 100% rename from ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected rename to ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected diff --git a/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.qlref b/ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.qlref rename to ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.qlref diff --git a/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.rb b/ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.rb similarity index 100% rename from ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.rb rename to ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.rb diff --git a/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.expected b/ruby/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.expected similarity index 100% rename from ql/test/query-tests/security/cwe-502/UnsafeDeserialization.expected rename to ruby/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.expected diff --git a/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.qlref b/ruby/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-502/UnsafeDeserialization.qlref rename to ruby/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.qlref diff --git a/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.rb b/ruby/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.rb similarity index 100% rename from ql/test/query-tests/security/cwe-502/UnsafeDeserialization.rb rename to ruby/ql/test/query-tests/security/cwe-502/UnsafeDeserialization.rb diff --git a/ql/test/query-tests/security/cwe-601/UrlRedirect.expected b/ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.expected similarity index 100% rename from ql/test/query-tests/security/cwe-601/UrlRedirect.expected rename to ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.expected diff --git a/ql/test/query-tests/security/cwe-601/UrlRedirect.qlref b/ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-601/UrlRedirect.qlref rename to ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.qlref diff --git a/ql/test/query-tests/security/cwe-601/UrlRedirect.rb b/ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.rb similarity index 100% rename from ql/test/query-tests/security/cwe-601/UrlRedirect.rb rename to ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.rb diff --git a/ql/test/query-tests/security/cwe-732/FilePermissions.rb b/ruby/ql/test/query-tests/security/cwe-732/FilePermissions.rb similarity index 100% rename from ql/test/query-tests/security/cwe-732/FilePermissions.rb rename to ruby/ql/test/query-tests/security/cwe-732/FilePermissions.rb diff --git a/ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected b/ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected similarity index 100% rename from ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected rename to ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected diff --git a/ql/test/query-tests/security/cwe-732/WeakFilePermissions.qlref b/ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-732/WeakFilePermissions.qlref rename to ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.qlref diff --git a/ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected b/ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected similarity index 100% rename from ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected rename to ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected diff --git a/ql/test/query-tests/security/cwe-798/HardcodedCredentials.qlref b/ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.qlref similarity index 100% rename from ql/test/query-tests/security/cwe-798/HardcodedCredentials.qlref rename to ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.qlref diff --git a/ql/test/query-tests/security/cwe-798/HardcodedCredentials.rb b/ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.rb similarity index 100% rename from ql/test/query-tests/security/cwe-798/HardcodedCredentials.rb rename to ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.rb diff --git a/ql/test/query-tests/summary/LinesOfCode.expected b/ruby/ql/test/query-tests/summary/LinesOfCode.expected similarity index 100% rename from ql/test/query-tests/summary/LinesOfCode.expected rename to ruby/ql/test/query-tests/summary/LinesOfCode.expected diff --git a/ql/test/query-tests/summary/LinesOfCode.qlref b/ruby/ql/test/query-tests/summary/LinesOfCode.qlref similarity index 100% rename from ql/test/query-tests/summary/LinesOfCode.qlref rename to ruby/ql/test/query-tests/summary/LinesOfCode.qlref diff --git a/ql/test/query-tests/summary/LinesOfUserCode.expected b/ruby/ql/test/query-tests/summary/LinesOfUserCode.expected similarity index 100% rename from ql/test/query-tests/summary/LinesOfUserCode.expected rename to ruby/ql/test/query-tests/summary/LinesOfUserCode.expected diff --git a/ql/test/query-tests/summary/LinesOfUserCode.qlref b/ruby/ql/test/query-tests/summary/LinesOfUserCode.qlref similarity index 100% rename from ql/test/query-tests/summary/LinesOfUserCode.qlref rename to ruby/ql/test/query-tests/summary/LinesOfUserCode.qlref diff --git a/ql/test/query-tests/summary/src/foo.rb b/ruby/ql/test/query-tests/summary/src/foo.rb similarity index 100% rename from ql/test/query-tests/summary/src/foo.rb rename to ruby/ql/test/query-tests/summary/src/foo.rb diff --git a/ql/test/query-tests/summary/src/vendor/cache/lib.rb b/ruby/ql/test/query-tests/summary/src/vendor/cache/lib.rb similarity index 100% rename from ql/test/query-tests/summary/src/vendor/cache/lib.rb rename to ruby/ql/test/query-tests/summary/src/vendor/cache/lib.rb diff --git a/scripts/create-extractor-pack.ps1 b/ruby/scripts/create-extractor-pack.ps1 similarity index 100% rename from scripts/create-extractor-pack.ps1 rename to ruby/scripts/create-extractor-pack.ps1 diff --git a/scripts/create-extractor-pack.sh b/ruby/scripts/create-extractor-pack.sh similarity index 100% rename from scripts/create-extractor-pack.sh rename to ruby/scripts/create-extractor-pack.sh diff --git a/scripts/identical-files.json b/ruby/scripts/identical-files.json similarity index 100% rename from scripts/identical-files.json rename to ruby/scripts/identical-files.json diff --git a/scripts/merge_stats.py b/ruby/scripts/merge_stats.py similarity index 100% rename from scripts/merge_stats.py rename to ruby/scripts/merge_stats.py diff --git a/scripts/prepare-db-upgrade.sh b/ruby/scripts/prepare-db-upgrade.sh similarity index 100% rename from scripts/prepare-db-upgrade.sh rename to ruby/scripts/prepare-db-upgrade.sh diff --git a/scripts/sync-identical-files.py b/ruby/scripts/sync-identical-files.py similarity index 100% rename from scripts/sync-identical-files.py rename to ruby/scripts/sync-identical-files.py diff --git a/tools/autobuild.cmd b/ruby/tools/autobuild.cmd similarity index 100% rename from tools/autobuild.cmd rename to ruby/tools/autobuild.cmd diff --git a/tools/autobuild.sh b/ruby/tools/autobuild.sh similarity index 100% rename from tools/autobuild.sh rename to ruby/tools/autobuild.sh diff --git a/tools/index-files.cmd b/ruby/tools/index-files.cmd similarity index 100% rename from tools/index-files.cmd rename to ruby/tools/index-files.cmd diff --git a/tools/index-files.sh b/ruby/tools/index-files.sh similarity index 100% rename from tools/index-files.sh rename to ruby/tools/index-files.sh diff --git a/tools/qltest.cmd b/ruby/tools/qltest.cmd similarity index 100% rename from tools/qltest.cmd rename to ruby/tools/qltest.cmd diff --git a/tools/qltest.sh b/ruby/tools/qltest.sh similarity index 100% rename from tools/qltest.sh rename to ruby/tools/qltest.sh From d2ea7325399377fe8c22f4c5e26db54a16c2cd2a Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 21:24:00 +0200 Subject: [PATCH 02/16] Remove CodeSpaces configuration --- .devcontainer/Dockerfile | 15 ------------- .devcontainer/devcontainer.json | 39 --------------------------------- .devcontainer/post_attach.sh | 37 ------------------------------- .devcontainer/post_create.sh | 4 ---- 4 files changed, 95 deletions(-) delete mode 100644 .devcontainer/Dockerfile delete mode 100644 .devcontainer/devcontainer.json delete mode 100755 .devcontainer/post_attach.sh delete mode 100755 .devcontainer/post_create.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index a5776e198066..000000000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/rust/.devcontainer/base.Dockerfile - -FROM mcr.microsoft.com/vscode/devcontainers/rust:0-1 - -RUN apt-key --keyring /usr/share/keyrings/githubcli-archive-keyring.gpg adv \ - --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0 && \ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages $(lsb_release -cs) main" \ - | tee /etc/apt/sources.list.d/github-cli2.list > /dev/null - - -RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ - && apt-get -y install --no-install-recommends gh - -COPY post_create.sh /bin/post_create.sh -COPY post_attach.sh /bin/post_attach.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index b7824f45cfe6..000000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,39 +0,0 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: -// https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/rust -{ - "name": "Rust", - "build": { - "dockerfile": "Dockerfile" - }, - "runArgs": [ - "--cap-add=SYS_PTRACE", - "--security-opt", - "seccomp=unconfined" - ], - // Set *default* container specific settings.json values on container create. - "settings": { - "terminal.integrated.shell.linux": "/bin/bash", - "lldb.executable": "/usr/bin/lldb", - // VS Code don't watch files under ./target - "files.watcherExclude": { - "**/target/**": true - } - }, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "rust-lang.rust", - "bungcip.better-toml", - "vadimcn.vscode-lldb", - "mutantdino.resourcemonitor", - "ms-azuretools.vscode-docker", - "github.vscode-codeql" - ], - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "rustc --version", - // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode", - "postCreateCommand": [ "/bin/post_create.sh" ], - "postAttachCommand": [ "flock", "-E", "0", "-n", "/var/lock/post_attach.lock", "/bin/post_attach.sh" ] -} \ No newline at end of file diff --git a/.devcontainer/post_attach.sh b/.devcontainer/post_attach.sh deleted file mode 100755 index 8b923e31ad0b..000000000000 --- a/.devcontainer/post_attach.sh +++ /dev/null @@ -1,37 +0,0 @@ -#! /bin/bash -set -xe - -echo "Check installed CodeQL version" -CURRENT_CODEQL_BIN=$(readlink -e /usr/local/bin/codeql || echo "") -LATEST=$(gh release list --repo https://github.com/github/codeql-cli-binaries | cut -f 1 | grep -v beta | sort --version-sort | tail -1) - -BASE_DIR=/home/vscode/codeql-binaries -mkdir -p "${BASE_DIR}" -LATEST_CODEQL_DIR="${BASE_DIR}/codeql-${LATEST}" -LATEST_CODEQL_BIN="${LATEST_CODEQL_DIR}/codeql/codeql" - -if [ "${CURRENT_CODEQL_BIN}" != "${LATEST_CODEQL_BIN}" ]; then - echo "Installing CodeQL ${LATEST}" - TMPDIR=$(mktemp -d -p "$(dirname ${LATEST_CODEQL_DIR})") - gh release download --repo https://github.com/github/codeql-cli-binaries --pattern codeql-linux64.zip -D "${TMPDIR}" "$LATEST" - unzip -oq "${TMPDIR}/codeql-linux64.zip" -d "${TMPDIR}" - rm -f "${TMPDIR}/codeql-linux64.zip" - mv "${TMPDIR}" "${LATEST_CODEQL_DIR}" - test -x "${LATEST_CODEQL_BIN}" && sudo ln -sf "${LATEST_CODEQL_BIN}" /usr/local/bin/codeql - if [[ "${CURRENT_CODEQL_BIN}" =~ .*/codeql/codeql ]]; then - rm -rf "$(dirname $(dirname ${CURRENT_CODEQL_BIN}))" - fi -fi - -echo "Build the Ruby extractor" - -# clone the git dependencies using "git clone" because cargo's builtin git support is rather slow -REPO_DIR="${CARGO_HOME:-/home/vscode/.cargo}/git/db" -REPO_DIR_ERB="${REPO_DIR}/tree-sitter-embedded-template-4c796e3340c233b6" -REPO_DIR_RUBY="${REPO_DIR}/tree-sitter-ruby-666a40ce046f8e7a" - -mkdir -p "${REPO_DIR}" -test -e "${REPO_DIR_ERB}" || git clone -q --bare https://github.com/tree-sitter/tree-sitter-embedded-template "${REPO_DIR_ERB}" -test -e "${REPO_DIR_RUBY}" || git clone -q --bare https://github.com/tree-sitter/tree-sitter-ruby.git "${REPO_DIR_RUBY}" - -scripts/create-extractor-pack.sh diff --git a/.devcontainer/post_create.sh b/.devcontainer/post_create.sh deleted file mode 100755 index a1af653024b4..000000000000 --- a/.devcontainer/post_create.sh +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/bash - -mkdir -p /home/vscode/.config/codeql -echo '--search-path /workspaces/codeql-ruby' >> /home/vscode/.config/codeql/config From 068beeff56d60bfd801a481e0c02ca006f47e10c Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 13:17:32 +0200 Subject: [PATCH 03/16] Move create-extractor-pack Action --- .github/actions/fetch-codeql/action.yml | 1 + .github/workflows/dataset_measure.yml | 2 +- .github/workflows/qltest.yml | 2 +- {.github => ruby}/actions/create-extractor-pack/action.yml | 7 ++++--- 4 files changed, 7 insertions(+), 5 deletions(-) rename {.github => ruby}/actions/create-extractor-pack/action.yml (58%) diff --git a/.github/actions/fetch-codeql/action.yml b/.github/actions/fetch-codeql/action.yml index d6cca8402412..de6d50dc12fe 100644 --- a/.github/actions/fetch-codeql/action.yml +++ b/.github/actions/fetch-codeql/action.yml @@ -9,5 +9,6 @@ runs: LATEST=$(gh release list --repo https://github.com/github/codeql-cli-binaries | cut -f 1 | grep -v beta | sort --version-sort | tail -1) gh release download --repo https://github.com/github/codeql-cli-binaries --pattern codeql-linux64.zip "$LATEST" unzip -q codeql-linux64.zip + echo "${{ github.workspace }}/codeql" >> $GITHUB_PATH env: GITHUB_TOKEN: ${{ github.token }} diff --git a/.github/workflows/dataset_measure.yml b/.github/workflows/dataset_measure.yml index 6e2f9f4b7afc..7997d7f92409 100644 --- a/.github/workflows/dataset_measure.yml +++ b/.github/workflows/dataset_measure.yml @@ -25,7 +25,7 @@ jobs: - uses: ./.github/actions/fetch-codeql - - uses: ./.github/actions/create-extractor-pack + - uses: ./ruby/actions/create-extractor-pack - name: Checkout ${{ matrix.repo }} uses: actions/checkout@v2 diff --git a/.github/workflows/qltest.yml b/.github/workflows/qltest.yml index b9ab622ae0d2..1a055574b0b9 100644 --- a/.github/workflows/qltest.yml +++ b/.github/workflows/qltest.yml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/checkout@v2 - uses: ./.github/actions/fetch-codeql - - uses: ./.github/actions/create-extractor-pack + - uses: ./ruby/actions/create-extractor-pack - name: Run QL tests run: | codeql/codeql pack install ql/test diff --git a/.github/actions/create-extractor-pack/action.yml b/ruby/actions/create-extractor-pack/action.yml similarity index 58% rename from .github/actions/create-extractor-pack/action.yml rename to ruby/actions/create-extractor-pack/action.yml index b15565cffa51..75faf327c131 100644 --- a/.github/actions/create-extractor-pack/action.yml +++ b/ruby/actions/create-extractor-pack/action.yml @@ -8,8 +8,9 @@ runs: path: | ~/.cargo/registry ~/.cargo/git - target - key: ${{ runner.os }}-qltest-cargo-${{ hashFiles('**/Cargo.lock') }} + ruby/target + key: ${{ runner.os }}-qltest-cargo-${{ hashFiles('ruby/**/Cargo.lock') }} - name: Build Extractor shell: bash - run: env "PATH=$PATH:${{ github.workspace }}/codeql" scripts/create-extractor-pack.sh + run: scripts/create-extractor-pack.sh + working-directory: ruby From 2de757335f01df709d8ca3a7b05a80870d184dd8 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 13:32:50 +0200 Subject: [PATCH 04/16] Update Ruby workflows --- .../{qhelp.yml => qhelp-pr-preview.yml} | 4 +- .github/workflows/qltest.yml | 38 ------------ .../workflows/{build.yml => ruby-build.yml} | 61 +++++++++++-------- ...t_measure.yml => ruby-dataset-measure.yml} | 16 ++--- .github/workflows/ruby-qltest.yml | 50 +++++++++++++++ .../{sync_files.yml => sync-files.yml} | 2 +- 6 files changed, 95 insertions(+), 76 deletions(-) rename .github/workflows/{qhelp.yml => qhelp-pr-preview.yml} (92%) delete mode 100644 .github/workflows/qltest.yml rename .github/workflows/{build.yml => ruby-build.yml} (88%) rename .github/workflows/{dataset_measure.yml => ruby-dataset-measure.yml} (73%) create mode 100644 .github/workflows/ruby-qltest.yml rename .github/workflows/{sync_files.yml => sync-files.yml} (84%) diff --git a/.github/workflows/qhelp.yml b/.github/workflows/qhelp-pr-preview.yml similarity index 92% rename from .github/workflows/qhelp.yml rename to .github/workflows/qhelp-pr-preview.yml index f4f2d2877cb7..99ff16a232af 100644 --- a/.github/workflows/qhelp.yml +++ b/.github/workflows/qhelp-pr-preview.yml @@ -4,7 +4,7 @@ on: pull_request: branches: [main] paths: - - "**/*.qhelp" + - "ruby/**/*.qhelp" jobs: qhelp: @@ -30,7 +30,7 @@ jobs: for path in ${{ steps.changes.outputs.qhelp_files }} ; do echo "
${path}" echo - codeql/codeql generate query-help --format=markdown ${path} + codeql generate query-help --format=markdown ${path} echo "
" done) | gh pr comment "${{ github.event.pull_request.number }}" -F - env: diff --git a/.github/workflows/qltest.yml b/.github/workflows/qltest.yml deleted file mode 100644 index 1a055574b0b9..000000000000 --- a/.github/workflows/qltest.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Run QL Tests - -on: - push: - branches: [main] - pull_request: - branches: [main] - -env: - CARGO_TERM_COLOR: always - -jobs: - qltest: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: ./.github/actions/fetch-codeql - - uses: ./ruby/actions/create-extractor-pack - - name: Run QL tests - run: | - codeql/codeql pack install ql/test - codeql/codeql test run --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path "${{ github.workspace }}" --additional-packs "${HOME}/.codeql/packages/codeql/suite-helpers/0.0.1" --consistency-queries ql/consistency-queries ql/test - env: - GITHUB_TOKEN: ${{ github.token }} - - name: Check QL formatting - run: find ql "(" -name "*.ql" -or -name "*.qll" ")" -print0 | xargs -0 codeql/codeql query format --check-only - - name: Check QL compilation - run: | - codeql/codeql pack install ql/src - codeql/codeql query compile --check-only --threads=4 --warnings=error --search-path "${{ github.workspace }}" "ql/src" "ql/examples" - env: - GITHUB_TOKEN: ${{ github.token }} - - name: Check DB upgrade scripts - run: | - echo >empty.trap - codeql/codeql dataset import -S ql/lib/upgrades/initial/ruby.dbscheme testdb empty.trap - codeql/codeql dataset upgrade testdb --additional-packs ql/lib/upgrades - diff -q testdb/ruby.dbscheme ql/lib/ruby.dbscheme diff --git a/.github/workflows/build.yml b/.github/workflows/ruby-build.yml similarity index 88% rename from .github/workflows/build.yml rename to .github/workflows/ruby-build.yml index e9fc6349e870..4361ce5a1cc6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/ruby-build.yml @@ -1,10 +1,18 @@ -name: Build / Release +name: "Ruby: Build" on: push: - branches: [main] + paths: + - 'ruby/**' + branches: + - main + - 'rc/*' pull_request: - branches: [main] + paths: + - 'ruby/**' + branches: + - main + - 'rc/*' workflow_dispatch: inputs: tag: @@ -14,6 +22,10 @@ on: env: CARGO_TERM_COLOR: always +defaults: + run: + working-directory: ruby + jobs: build: strategy: @@ -35,7 +47,7 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - target + ruby/target key: ${{ runner.os }}-rust-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Check formatting run: cargo fmt --all -- --check @@ -52,20 +64,20 @@ jobs: if: ${{ matrix.os == 'ubuntu-latest' }} with: name: ruby.dbscheme - path: ql/lib/ruby.dbscheme + path: ruby/ql/lib/ruby.dbscheme - uses: actions/upload-artifact@v2 if: ${{ matrix.os == 'ubuntu-latest' }} with: name: TreeSitter.qll - path: ql/lib/codeql/ruby/ast/internal/TreeSitter.qll + path: ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll - uses: actions/upload-artifact@v2 with: name: extractor-${{ matrix.os }} path: | - target/release/ruby-autobuilder - target/release/ruby-autobuilder.exe - target/release/ruby-extractor - target/release/ruby-extractor.exe + ruby/target/release/ruby-autobuilder + ruby/target/release/ruby-autobuilder.exe + ruby/target/release/ruby-extractor + ruby/target/release/ruby-extractor.exe retention-days: 1 compile-queries: runs-on: ubuntu-latest @@ -102,7 +114,7 @@ jobs: with: name: codeql-ruby-queries path: | - target/packs/* + ruby/target/packs/* retention-days: 1 package: @@ -113,19 +125,19 @@ jobs: - uses: actions/download-artifact@v2 with: name: ruby.dbscheme - path: ruby + path: ruby/ruby - uses: actions/download-artifact@v2 with: name: extractor-ubuntu-latest - path: linux64 + path: ruby/linux64 - uses: actions/download-artifact@v2 with: name: extractor-windows-latest - path: win64 + path: ruby/win64 - uses: actions/download-artifact@v2 with: name: extractor-macos-latest - path: osx64 + path: ruby/osx64 - run: | mkdir -p ruby cp -r codeql-extractor.yml tools ql/lib/ruby.dbscheme.stats ruby/ @@ -141,12 +153,12 @@ jobs: - uses: actions/upload-artifact@v2 with: name: codeql-ruby-pack - path: codeql-ruby.zip + path: ruby/codeql-ruby.zip retention-days: 1 - uses: actions/download-artifact@v2 with: name: codeql-ruby-queries - path: qlpacks + path: ruby/qlpacks - run: | echo '{ "provide": [ @@ -158,18 +170,13 @@ jobs: - uses: actions/upload-artifact@v2 with: name: codeql-ruby-bundle - path: codeql-ruby-bundle.zip + path: ruby/codeql-ruby-bundle.zip retention-days: 1 - - if: ${{ github.event.inputs.tag }} - run: | - gh release create --prerelease \ - --title "CodeQL Ruby (${{ github.event.inputs.tag }})" \ - --target "${{ github.sha }}" \ - "${{ github.event.inputs.tag }}" \ - codeql-ruby-bundle.zip - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + test: + defaults: + run: + working-directory: ${{ github.workspace }} strategy: fail-fast: false matrix: diff --git a/.github/workflows/dataset_measure.yml b/.github/workflows/ruby-dataset-measure.yml similarity index 73% rename from .github/workflows/dataset_measure.yml rename to .github/workflows/ruby-dataset-measure.yml index 7997d7f92409..71eca47d54c8 100644 --- a/.github/workflows/dataset_measure.yml +++ b/.github/workflows/ruby-dataset-measure.yml @@ -1,14 +1,14 @@ -name: Collect database stats +name: "Ruby: Collect database stats" on: push: branches: [main] paths: - - ql/lib/ruby.dbscheme + - ruby/ql/lib/ruby.dbscheme pull_request: branches: [main] paths: - - ql/lib/ruby.dbscheme + - ruby/ql/lib/ruby.dbscheme workflow_dispatch: jobs: @@ -34,15 +34,15 @@ jobs: path: ${{ github.workspace }}/repo - name: Create database run: | - codeql/codeql database create \ - --search-path "${{ github.workspace }}" \ + codeql database create \ + --search-path "${{ github.workspace }}/ruby" \ --threads 4 \ --language ruby --source-root "${{ github.workspace }}/repo" \ "${{ runner.temp }}/database" - name: Measure database run: | mkdir -p "stats/${{ matrix.repo }}" - codeql/codeql dataset measure --threads 4 --output "stats/${{ matrix.repo }}/stats.xml" "${{ runner.temp }}/database/db-ruby" + codeql dataset measure --threads 4 --output "stats/${{ matrix.repo }}/stats.xml" "${{ runner.temp }}/database/db-ruby" - uses: actions/upload-artifact@v2 with: name: measurements @@ -60,8 +60,8 @@ jobs: path: stats - run: | python -m pip install --user lxml - find stats -name 'stats.xml' | sort | xargs python scripts/merge_stats.py --output ql/lib/ruby.dbscheme.stats --normalise ruby_tokeninfo + find stats -name 'stats.xml' | sort | xargs python ruby/scripts/merge_stats.py --output ruby/ql/lib/ruby.dbscheme.stats --normalise ruby_tokeninfo - uses: actions/upload-artifact@v2 with: name: ruby.dbscheme.stats - path: ql/lib/ruby.dbscheme.stats + path: ruby/ql/lib/ruby.dbscheme.stats diff --git a/.github/workflows/ruby-qltest.yml b/.github/workflows/ruby-qltest.yml new file mode 100644 index 000000000000..ece2286ad347 --- /dev/null +++ b/.github/workflows/ruby-qltest.yml @@ -0,0 +1,50 @@ +name: "Ruby: Run QL Tests" + +on: + push: + paths: + - 'ruby/**' + branches: + - main + - 'rc/*' + pull_request: + paths: + - 'ruby/**' + branches: + - main + - 'rc/*' + +env: + CARGO_TERM_COLOR: always + +defaults: + run: + working-directory: ruby + +jobs: + qltest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - uses: ./.github/actions/fetch-codeql + - uses: ./ruby/actions/create-extractor-pack + - name: Run QL tests + run: | + codeql test run --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path "${{ github.workspace }}/ruby" --additional-packs "${{ github.workspace }}/ruby/codeql" --consistency-queries ql/consistency-queries ql/test + env: + GITHUB_TOKEN: ${{ github.token }} + - name: Check QL formatting + run: find ql "(" -name "*.ql" -or -name "*.qll" ")" -print0 | xargs -0 codeql query format --check-only + - name: Check QL compilation + run: | + codeql query compile --check-only --threads=4 --warnings=error --search-path "${{ github.workspace }}/ruby" --additional-packs "${{ github.workspace }}/ruby/codeql" "ql/src" "ql/examples" + env: + GITHUB_TOKEN: ${{ github.token }} + - name: Check DB upgrade scripts + run: | + echo >empty.trap + codeql dataset import -S ql/lib/upgrades/initial/ruby.dbscheme testdb empty.trap + codeql dataset upgrade testdb --additional-packs ql/lib/upgrades + diff -q testdb/ruby.dbscheme ql/lib/ruby.dbscheme diff --git a/.github/workflows/sync_files.yml b/.github/workflows/sync-files.yml similarity index 84% rename from .github/workflows/sync_files.yml rename to .github/workflows/sync-files.yml index a102f822330f..07160b67de37 100644 --- a/.github/workflows/sync_files.yml +++ b/.github/workflows/sync-files.yml @@ -14,4 +14,4 @@ jobs: with: submodules: true - name: Check synchronized files - run: scripts/sync-identical-files.py + run: ruby/scripts/sync-identical-files.py From 3554e8d105026a3cce4ab7f116dcf07567dac09a Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 20:27:44 +0200 Subject: [PATCH 05/16] Drop LICENSE and CODE_OF_CONDUCT.md --- ruby/CODE_OF_CONDUCT.md | 76 ----------------------------------------- ruby/LICENSE | 21 ------------ 2 files changed, 97 deletions(-) delete mode 100644 ruby/CODE_OF_CONDUCT.md delete mode 100644 ruby/LICENSE diff --git a/ruby/CODE_OF_CONDUCT.md b/ruby/CODE_OF_CONDUCT.md deleted file mode 100644 index 3a64696bc259..000000000000 --- a/ruby/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to make participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies within all project spaces, and it also applies when -an individual is representing the project or its community in public spaces. -Examples of representing a project or community include using an official -project e-mail address, posting via an official social media account, or acting -as an appointed representative at an online or offline event. Representation of -a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at opensource@github.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/ruby/LICENSE b/ruby/LICENSE deleted file mode 100644 index eeaa72633583..000000000000 --- a/ruby/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-2021 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. From 8ce7b287d1efa320a8a5da367e3d756ab260159e Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 13:18:27 +0200 Subject: [PATCH 06/16] Update dependabot config --- .github/dependabot.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7d08545a991f..613f92871464 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,18 +1,18 @@ version: 2 updates: - package-ecosystem: "cargo" - directory: "/node-types" + directory: "ruby/node-types" schedule: interval: "daily" - package-ecosystem: "cargo" - directory: "/generator" + directory: "ruby/generator" schedule: interval: "daily" - package-ecosystem: "cargo" - directory: "/extractor" + directory: "ruby/extractor" schedule: interval: "daily" - package-ecosystem: "cargo" - directory: "/autobuilder" + directory: "ruby/autobuilder" schedule: interval: "daily" From aeb9ace6945e52450bdc59ab95566e18d31c480d Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 20:26:48 +0200 Subject: [PATCH 07/16] Add ruby to CODEOWNERS --- CODEOWNERS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 89529f95924a..d5f3362a7ca6 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -3,6 +3,7 @@ /java/ @github/codeql-java /javascript/ @github/codeql-javascript /python/ @github/codeql-python +/ruby/ @github/codeql-ruby # Make @xcorail (GitHub Security Lab) a code owner for experimental queries so he gets pinged when we promote a query out of experimental /cpp/**/experimental/**/* @github/codeql-c-analysis @xcorail @@ -10,6 +11,7 @@ /java/**/experimental/**/* @github/codeql-java @xcorail /javascript/**/experimental/**/* @github/codeql-javascript @xcorail /python/**/experimental/**/* @github/codeql-python @xcorail +/ruby/**/experimental/**/* @github/codeql-ruby @xcorail # Notify members of codeql-go about PRs to the shared data-flow library files /java/ql/src/semmle/code/java/dataflow/internal/DataFlowImpl.qll @github/codeql-java @github/codeql-go @@ -22,4 +24,4 @@ /docs/codeql-cli/ @github/codeql-cli-reviewers /docs/codeql-for-visual-studio-code/ @github/codeql-vscode-reviewers /docs/ql-language-reference/ @github/codeql-frontend-reviewers -/docs/query-*-style-guide.md @github/codeql-analysis-reviewers \ No newline at end of file +/docs/query-*-style-guide.md @github/codeql-analysis-reviewers From ddbba403f8c05b777973388ec71d0f249de1b3fb Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 21:26:08 +0200 Subject: [PATCH 08/16] Update CodeSpaces configuration --- .devcontainer/devcontainer.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8f9ffdde4de4..ff73bcb4e7b0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,9 +1,14 @@ { "extensions": [ + "rust-lang.rust", + "bungcip.better-toml", "github.vscode-codeql", "slevesque.vscode-zipexplorer" ], "settings": { + "files.watcherExclude": { + "**/target/**": true + }, "codeQL.runningQueries.memory": 2048 } } From 1bf4542c895dbdcb8806f17b16419fbe1f82634f Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Fri, 15 Oct 2021 12:46:50 +0200 Subject: [PATCH 09/16] Remove github/codeql submodule --- .github/workflows/ruby-qltest.yml | 6 ++---- .github/workflows/sync-files.yml | 2 -- .gitmodules | 3 --- ruby/codeql | 1 - 4 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 .gitmodules delete mode 160000 ruby/codeql diff --git a/.github/workflows/ruby-qltest.yml b/.github/workflows/ruby-qltest.yml index ece2286ad347..fad38bf689e9 100644 --- a/.github/workflows/ruby-qltest.yml +++ b/.github/workflows/ruby-qltest.yml @@ -26,20 +26,18 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - with: - submodules: true - uses: ./.github/actions/fetch-codeql - uses: ./ruby/actions/create-extractor-pack - name: Run QL tests run: | - codeql test run --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path "${{ github.workspace }}/ruby" --additional-packs "${{ github.workspace }}/ruby/codeql" --consistency-queries ql/consistency-queries ql/test + codeql test run --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path "${{ github.workspace }}/ruby" --additional-packs "${{ github.workspace }}" --consistency-queries ql/consistency-queries ql/test env: GITHUB_TOKEN: ${{ github.token }} - name: Check QL formatting run: find ql "(" -name "*.ql" -or -name "*.qll" ")" -print0 | xargs -0 codeql query format --check-only - name: Check QL compilation run: | - codeql query compile --check-only --threads=4 --warnings=error --search-path "${{ github.workspace }}/ruby" --additional-packs "${{ github.workspace }}/ruby/codeql" "ql/src" "ql/examples" + codeql query compile --check-only --threads=4 --warnings=error --search-path "${{ github.workspace }}/ruby" --additional-packs "${{ github.workspace }}" "ql/src" "ql/examples" env: GITHUB_TOKEN: ${{ github.token }} - name: Check DB upgrade scripts diff --git a/.github/workflows/sync-files.yml b/.github/workflows/sync-files.yml index 07160b67de37..e7894ae4eada 100644 --- a/.github/workflows/sync-files.yml +++ b/.github/workflows/sync-files.yml @@ -11,7 +11,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - with: - submodules: true - name: Check synchronized files run: ruby/scripts/sync-identical-files.py diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 1372e928c4e4..000000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "codeql"] - path = ruby/codeql - url = https://github.com/github/codeql.git diff --git a/ruby/codeql b/ruby/codeql deleted file mode 160000 index 65f4ec403f35..000000000000 --- a/ruby/codeql +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 65f4ec403f3528671131ca83067cf23cb48c9738 From de38570424666c9bfd6c23808c52028447c35a95 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 14 Oct 2021 12:51:06 +0200 Subject: [PATCH 10/16] Merge identical-files.json --- .github/workflows/sync-files.yml | 3 +- config/identical-files.json | 34 ++++++++++---- .../ruby/dataflow/internal/DataFlowImpl.qll | 9 ++-- ruby/scripts/identical-files.json | 43 ----------------- ruby/scripts/sync-identical-files.py | 46 ------------------- 5 files changed, 32 insertions(+), 103 deletions(-) delete mode 100644 ruby/scripts/identical-files.json delete mode 100755 ruby/scripts/sync-identical-files.py diff --git a/.github/workflows/sync-files.yml b/.github/workflows/sync-files.yml index e7894ae4eada..1ba6c9c23407 100644 --- a/.github/workflows/sync-files.yml +++ b/.github/workflows/sync-files.yml @@ -12,4 +12,5 @@ jobs: steps: - uses: actions/checkout@v2 - name: Check synchronized files - run: ruby/scripts/sync-identical-files.py + run: python config/sync-files.py + diff --git a/config/identical-files.json b/config/identical-files.json index 74ef7b82323b..f3907eb154bc 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -24,14 +24,16 @@ "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll", - "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll" + "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll", + "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll" ], "DataFlow Java/C++/C#/Python Common": [ "java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll", "cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll", "cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll", - "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplCommon.qll" + "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplCommon.qll", + "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll" ], "TaintTracking::Configuration Java/C++/C#/Python": [ "cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll", @@ -49,18 +51,21 @@ "python/ql/lib/semmle/python/dataflow/new/internal/tainttracking1/TaintTrackingImpl.qll", "python/ql/lib/semmle/python/dataflow/new/internal/tainttracking2/TaintTrackingImpl.qll", "python/ql/lib/semmle/python/dataflow/new/internal/tainttracking3/TaintTrackingImpl.qll", - "python/ql/lib/semmle/python/dataflow/new/internal/tainttracking4/TaintTrackingImpl.qll" + "python/ql/lib/semmle/python/dataflow/new/internal/tainttracking4/TaintTrackingImpl.qll", + "ruby/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll" ], "DataFlow Java/C++/C#/Python Consistency checks": [ "java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll", "cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll", "cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplConsistency.qll", - "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplConsistency.qll" + "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplConsistency.qll", + "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll" ], "DataFlow Java/C# Flow Summaries": [ "java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll", - "csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll" + "csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll", + "ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll" ], "SsaReadPosition Java/C#": [ "java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll", @@ -368,7 +373,8 @@ "Inline Test Expectations": [ "cpp/ql/test/TestUtilities/InlineExpectationsTest.qll", "java/ql/test/TestUtilities/InlineExpectationsTest.qll", - "python/ql/test/TestUtilities/InlineExpectationsTest.qll" + "python/ql/test/TestUtilities/InlineExpectationsTest.qll", + "ruby/ql/test/TestUtilities/InlineExpectationsTest.qll" ], "C++ ExternalAPIs": [ "cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll", @@ -440,7 +446,8 @@ "csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImplCommon.qll", "csharp/ql/lib/semmle/code/csharp/controlflow/internal/pressa/SsaImplCommon.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/basessa/SsaImplCommon.qll", - "csharp/ql/lib/semmle/code/cil/internal/SsaImplCommon.qll" + "csharp/ql/lib/semmle/code/cil/internal/SsaImplCommon.qll", + "ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll" ], "CryptoAlgorithms Python/JS": [ "javascript/ql/lib/semmle/javascript/security/CryptoAlgorithms.qll", @@ -460,6 +467,15 @@ ], "ReDoS Polynomial Python/JS": [ "javascript/ql/lib/semmle/javascript/security/performance/SuperlinearBackTracking.qll", - "python/ql/lib/semmle/python/security/performance/SuperlinearBackTracking.qll" + "python/ql/lib/semmle/python/security/performance/SuperlinearBackTracking.qll", + "ruby/ql/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll" + ], + "CFG": [ + "csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll", + "ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll" + ], + "TypeTracker": [ + "python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll", + "ruby/ql/lib/codeql/ruby/typetracking/TypeTracker.qll" ] -} \ No newline at end of file +} diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll index 758b70ec316c..0c99a25ccc4b 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll @@ -3643,9 +3643,10 @@ private module Subpaths { PathNode arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, NodeEx out, AccessPath apout ) { - pathThroughCallable(arg, out, _, apout) and + pathThroughCallable(arg, out, _, pragma[only_bind_into](apout)) and pathIntoCallable(arg, par, _, innercc, sc, _) and - paramFlowsThrough(kind, innercc, sc, apout, _, unbindConf(arg.getConfiguration())) + paramFlowsThrough(kind, innercc, sc, pragma[only_bind_into](apout), _, + unbindConf(arg.getConfiguration())) } /** @@ -3690,8 +3691,8 @@ private module Subpaths { */ predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeMid ret, PathNodeMid out) { exists(ParamNodeEx p, NodeEx o, AccessPath apout | - arg.getASuccessor() = par and - arg.getASuccessor() = out and + pragma[only_bind_into](arg).getASuccessor() = par and + pragma[only_bind_into](arg).getASuccessor() = out and subpaths03(arg, p, ret, o, apout) and par.getNodeEx() = p and out.getNodeEx() = o and diff --git a/ruby/scripts/identical-files.json b/ruby/scripts/identical-files.json deleted file mode 100644 index b2d554589140..000000000000 --- a/ruby/scripts/identical-files.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "SSA": [ - "codeql/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImplCommon.qll", - "ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll" - ], - "DataFlow Common": [ - "codeql/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll", - "ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll" - ], - "DataFlow": [ - "codeql/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll", - "ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll" - ], - "DataFlow Consistency": [ - "codeql/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplConsistency.qll", - "ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll" - ], - "DataFlow Summaries": [ - "codeql/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll", - "ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll" - ], - "TaintTracking": [ - "codeql/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll", - "ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll" - ], - "TypeTracker": [ - "codeql/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll", - "ql/lib/codeql/ruby/typetracking/TypeTracker.qll" - ], - "Inline Test Expectations": [ - "codeql/python/ql/test/TestUtilities/InlineExpectationsTest.qll", - "ql/test/TestUtilities/InlineExpectationsTest.qll" - ], - "CFG": [ - "codeql/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll", - "ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll" - ], - "ReDoS Polynomial Ruby/Python/JS": [ - "codeql/javascript/ql/lib/semmle/javascript/security/performance/SuperlinearBackTracking.qll", - "codeql/python/ql/lib/semmle/python/security/performance/SuperlinearBackTracking.qll", - "ql/lib/codeql/ruby/regexp/SuperlinearBackTracking.qll" - ] -} diff --git a/ruby/scripts/sync-identical-files.py b/ruby/scripts/sync-identical-files.py deleted file mode 100755 index 17fe22808e9e..000000000000 --- a/ruby/scripts/sync-identical-files.py +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python3 - -# Due to various technical limitations, we sometimes have files that need to be -# kept identical in the repository. This script loads a database of such -# files and can perform two functions: check whether they are still identical, -# and overwrite the others with a master copy if needed. -# The script that does the actual work is `sync-files.py`, which lives in the `codeql` submodule. -import sys -import os - -sys.path.append(os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), '../codeql/config'))) - -import importlib -syncfiles = importlib.import_module('sync-files') - -def chdir_repo_root(): - root_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..') - os.chdir(root_path) - -def sync_identical_files(): - if len(sys.argv) == 1: - master_file_picker = lambda files: None - elif len(sys.argv) == 2: - if sys.argv[1] == "--latest": - master_file_picker = syncfiles.choose_latest_file - elif os.path.isfile(sys.argv[1]): - master_file_picker = lambda files: syncfiles.choose_master_file(sys.argv[1], files) - else: - raise Exception("File not found") - else: - raise Exception("Bad command line or file not found") - chdir_repo_root() - syncfiles.load_if_exists('.', 'scripts/identical-files.json') - for group_name, files in syncfiles.file_groups.items(): - syncfiles.check_group(group_name, files, master_file_picker, syncfiles.emit_local_error) - -def main(): - sync_identical_files() - - if syncfiles.local_error_count > 0: - exit(1) - else: - print(__file__ +": All checks OK.") - -if __name__ == "__main__": - main() From b23b3c33f64199cd8794a7946534f4a592d47f56 Mon Sep 17 00:00:00 2001 From: shati-patel <42641846+shati-patel@users.noreply.github.com> Date: Fri, 15 Oct 2021 15:33:33 +0100 Subject: [PATCH 11/16] Add a queries.xml file (for CWE coverage) docs --- ruby/ql/lib/queries.xml | 1 + 1 file changed, 1 insertion(+) create mode 100644 ruby/ql/lib/queries.xml diff --git a/ruby/ql/lib/queries.xml b/ruby/ql/lib/queries.xml new file mode 100644 index 000000000000..a7ce9735ef42 --- /dev/null +++ b/ruby/ql/lib/queries.xml @@ -0,0 +1 @@ + From 8cd86ae8f515a5d8a7ec674ffc0d731be0d01eef Mon Sep 17 00:00:00 2001 From: shati-patel <42641846+shati-patel@users.noreply.github.com> Date: Mon, 18 Oct 2021 11:00:56 +0100 Subject: [PATCH 12/16] Move queries.xml to `src` --- ruby/ql/{lib => src}/queries.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ruby/ql/{lib => src}/queries.xml (100%) diff --git a/ruby/ql/lib/queries.xml b/ruby/ql/src/queries.xml similarity index 100% rename from ruby/ql/lib/queries.xml rename to ruby/ql/src/queries.xml From b79f8f18901e5ba5b67db1e28ad53300e2d05e9c Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Mon, 25 Oct 2021 16:25:44 +0200 Subject: [PATCH 13/16] Fix CI jobs --- .codeqlmanifest.json | 3 ++- .github/workflows/qhelp-pr-preview.yml | 4 +++- .github/workflows/ruby-dataset-measure.yml | 8 ++++++-- .github/workflows/sync-files.yml | 8 ++++++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.codeqlmanifest.json b/.codeqlmanifest.json index 4efe12f6d2b3..97e6df87f14e 100644 --- a/.codeqlmanifest.json +++ b/.codeqlmanifest.json @@ -1,4 +1,5 @@ -{ "provide": [ "*/ql/src/qlpack.yml", +{ "provide": [ "ruby/.codeqlmanifest.json", + "*/ql/src/qlpack.yml", "*/ql/lib/qlpack.yml", "*/ql/test/qlpack.yml", "cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/qlpack.yml", diff --git a/.github/workflows/qhelp-pr-preview.yml b/.github/workflows/qhelp-pr-preview.yml index 99ff16a232af..7e2ea6a10f8f 100644 --- a/.github/workflows/qhelp-pr-preview.yml +++ b/.github/workflows/qhelp-pr-preview.yml @@ -2,7 +2,9 @@ name: Query help preview on: pull_request: - branches: [main] + branches: + - main + - 'rc/*' paths: - "ruby/**/*.qhelp" diff --git a/.github/workflows/ruby-dataset-measure.yml b/.github/workflows/ruby-dataset-measure.yml index 71eca47d54c8..39e5a8486d60 100644 --- a/.github/workflows/ruby-dataset-measure.yml +++ b/.github/workflows/ruby-dataset-measure.yml @@ -2,11 +2,15 @@ name: "Ruby: Collect database stats" on: push: - branches: [main] + branches: + - main + - 'rc/*' paths: - ruby/ql/lib/ruby.dbscheme pull_request: - branches: [main] + branches: + - main + - 'rc/*' paths: - ruby/ql/lib/ruby.dbscheme workflow_dispatch: diff --git a/.github/workflows/sync-files.yml b/.github/workflows/sync-files.yml index 1ba6c9c23407..e41f4b75dc6c 100644 --- a/.github/workflows/sync-files.yml +++ b/.github/workflows/sync-files.yml @@ -2,9 +2,13 @@ name: Check synchronized files on: push: - branches: [main] + branches: + - main + - 'rc/*' pull_request: - branches: [main] + branches: + - main + - 'rc/*' jobs: sync: From 32765e9bc1fb9508dc60c5525f199f6091934870 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Wed, 3 Nov 2021 11:52:29 +0100 Subject: [PATCH 14/16] Ruby: trigger jobs on workflow change --- .github/workflows/ruby-build.yml | 10 ++++++---- .github/workflows/ruby-dataset-measure.yml | 6 ++++-- .github/workflows/ruby-qltest.yml | 10 ++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ruby-build.yml b/.github/workflows/ruby-build.yml index 4361ce5a1cc6..5449d44d2813 100644 --- a/.github/workflows/ruby-build.yml +++ b/.github/workflows/ruby-build.yml @@ -3,16 +3,18 @@ name: "Ruby: Build" on: push: paths: - - 'ruby/**' + - "ruby/**" + - .github/workflows/ruby-build.yml branches: - main - - 'rc/*' + - "rc/*" pull_request: paths: - - 'ruby/**' + - "ruby/**" + - .github/workflows/ruby-build.yml branches: - main - - 'rc/*' + - "rc/*" workflow_dispatch: inputs: tag: diff --git a/.github/workflows/ruby-dataset-measure.yml b/.github/workflows/ruby-dataset-measure.yml index 39e5a8486d60..4ae06acc855e 100644 --- a/.github/workflows/ruby-dataset-measure.yml +++ b/.github/workflows/ruby-dataset-measure.yml @@ -4,15 +4,17 @@ on: push: branches: - main - - 'rc/*' + - "rc/*" paths: - ruby/ql/lib/ruby.dbscheme + - .github/workflows/ruby-dataset-measure.yml pull_request: branches: - main - - 'rc/*' + - "rc/*" paths: - ruby/ql/lib/ruby.dbscheme + - .github/workflows/ruby-dataset-measure.yml workflow_dispatch: jobs: diff --git a/.github/workflows/ruby-qltest.yml b/.github/workflows/ruby-qltest.yml index fad38bf689e9..8a65a16b6948 100644 --- a/.github/workflows/ruby-qltest.yml +++ b/.github/workflows/ruby-qltest.yml @@ -3,16 +3,18 @@ name: "Ruby: Run QL Tests" on: push: paths: - - 'ruby/**' + - "ruby/**" + - .github/workflows/ruby-qltest.yml branches: - main - - 'rc/*' + - "rc/*" pull_request: paths: - - 'ruby/**' + - "ruby/**" + - .github/workflows/ruby-qltest.yml branches: - main - - 'rc/*' + - "rc/*" env: CARGO_TERM_COLOR: always From 2c5d5ecdd8a39eec56d05272495b755b66f095f9 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Wed, 3 Nov 2021 11:47:12 +0100 Subject: [PATCH 15/16] Ruby: QLTest: fix pack search path for upgrades --- .github/workflows/ruby-qltest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby-qltest.yml b/.github/workflows/ruby-qltest.yml index 8a65a16b6948..ff2dabbc60df 100644 --- a/.github/workflows/ruby-qltest.yml +++ b/.github/workflows/ruby-qltest.yml @@ -46,5 +46,5 @@ jobs: run: | echo >empty.trap codeql dataset import -S ql/lib/upgrades/initial/ruby.dbscheme testdb empty.trap - codeql dataset upgrade testdb --additional-packs ql/lib/upgrades + codeql dataset upgrade testdb --additional-packs ql/lib diff -q testdb/ruby.dbscheme ql/lib/ruby.dbscheme From aab8c649733c9bc61bf96a864736f68ed10b479a Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Wed, 3 Nov 2021 12:32:45 +0100 Subject: [PATCH 16/16] Ruby: fix compilation error --- ruby/node-types/src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ruby/node-types/src/lib.rs b/ruby/node-types/src/lib.rs index 0f1de0156923..2fccfe087aad 100644 --- a/ruby/node-types/src/lib.rs +++ b/ruby/node-types/src/lib.rs @@ -100,8 +100,7 @@ fn convert_type(node_type: &NodeType) -> TypeName { } fn convert_types(node_types: &Vec) -> Set { - let iter = node_types.iter().map(convert_type).collect(); - std::collections::BTreeSet::from(iter) + node_types.iter().map(convert_type).collect() } pub fn convert_nodes(prefix: &str, nodes: &Vec) -> NodeTypeMap {