From edc6e7eba84d19a04c6c2b91f411cba714c935c4 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 27 Jan 2021 10:47:42 +0100 Subject: [PATCH] Add `UnusedParameter.ql` query --- ql/src/queries/variables/UnusedParameter.ql | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 ql/src/queries/variables/UnusedParameter.ql diff --git a/ql/src/queries/variables/UnusedParameter.ql b/ql/src/queries/variables/UnusedParameter.ql new file mode 100644 index 00000000000..afad3df545b --- /dev/null +++ b/ql/src/queries/variables/UnusedParameter.ql @@ -0,0 +1,27 @@ +/** + * @name Unused parameter. + * @description A parameter that is not used later on, or whose value is always overwritten, + * can be removed. + * @kind problem + * @problem.severity warning + * @id rb/unused-parameter + * @tags maintainability + * external/cwe/cwe-563 + * @precision low + */ + +import ruby +import codeql_ruby.dataflow.SSA + +class RelevantParameterVariable extends LocalVariable { + RelevantParameterVariable() { + exists(Parameter p | + this = p.getAVariable() and + not this.getName().charAt(0) = "_" + ) + } +} + +from RelevantParameterVariable v +where not exists(Ssa::WriteDefinition def | def.getWriteAccess() = v.getDefiningAccess()) +select v, "Unused parameter."