no-unused-vars rule not detecting unused variables in modifiers
# Solhint Bug Report: no-unused-vars rule not detecting unused variables in modifiers
## Bug Description
The `no-unused-vars` rule is not detecting unused variables in Solidity modifiers, even when configured as an error in `.solhint.json`.
## Expected Behavior
When the `no-unused-vars` rule is enabled, it should detect and report unused variables in all contexts including:
- Function parameters
- Local variables
- Modifier parameters
- Modifier local variables
## Actual Behavior
The rule only detects unused variables in regular functions but ignores them in modifiers.
## Steps to Reproduce
### 1. Create a test contract with unused variables in modifiers
```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
contract UnusedVariableTest {
uint256 public value;
address public owner;
modifier onlyOwner(uint256 _unusedParam) {
// This parameter is declared but never used
require(msg.sender == owner, "Not owner");
_;
}
modifier withUnusedVariable(uint256 amount) {
uint256 unusedLocalVar = 42; // This local variable is never used
require(amount > 0, "Amount must be positive");
_;
}
constructor() {
owner = msg.sender;
}
function setValue(uint256 newValue) external onlyOwner(123) {
value = newValue;
}
function incrementValue(uint256 increment) external withUnusedVariable(increment) {
value += increment;
}
}
```
## Environment
- Solhint version: 6.0.0
- Solidity version: 0.8.27
关闭于 2025-08-22 2 条评论