Commit 0c561798 authored by Delweng's avatar Delweng Committed by GitHub

feat(semgrep): add sol-style-force-require-msg (#12806)

* feat(semgrep): add sol-force-require-msg rule
Signed-off-by: default avatarjsvisa <delweng@gmail.com>

* feat(semgrep): exclude packages temporary
Signed-off-by: default avatarjsvisa <delweng@gmail.com>

* feat(semgrep): add testcase
Signed-off-by: default avatarjsvisa <delweng@gmail.com>

* test script example
Signed-off-by: default avatarjsvisa <delweng@gmail.com>

* require msg more clear
Signed-off-by: default avatarjsvisa <delweng@gmail.com>

---------
Signed-off-by: default avatarjsvisa <delweng@gmail.com>
parent 99d637a3
......@@ -124,12 +124,12 @@ contract ScriptExample {
console.log("contract deployment");
vm.broadcast(address(uint160(0x123456)));
FooBar x = new FooBar(1234);
require(x.foo() == 1234);
require(x.foo() == 1234, "FooBar: foo in create is not 1234");
console.log("create 2");
vm.broadcast(address(uint160(0xcafe)));
FooBar y = new FooBar{salt: bytes32(uint256(42))}(1234);
require(y.foo() == 1234);
require(y.foo() == 1234, "FooBar: foo in create2 is not 1234");
console.log("done!");
// Deploy a script without a pranked sender and check the nonce.
......
......@@ -483,9 +483,6 @@ contract SemgrepTest__sol_style_malformed_require {
// ok: sol-style-malformed-require
require(cond, "CHECK-L2OO-140");
// ok: sol-style-malformed-require
require(cond);
// ok: sol-style-malformed-require
require(bytes(env_).length > 0, "Config: must set DEPLOY_CONFIG_PATH to filesystem path of deploy config");
......@@ -551,3 +548,13 @@ contract SemgrepTest__sol_style_malformed_revert {
revert("test");
}
}
contract SemgrepTest__sol_style_enforce_require_msg {
function test() {
// ok: sol-style-enforce-require-msg
require(cond, "MyContract: test message good");
// ruleid: sol-style-enforce-require-msg
require(cond);
}
}
......@@ -175,3 +175,14 @@ rules:
- packages/contracts-bedrock/src/L1/OPContractsManager.sol
- packages/contracts-bedrock/src/L1/OPContractsManagerInterop.sol
- packages/contracts-bedrock/src/legacy/L1ChugSplashProxy.sol
- id: sol-style-enforce-require-msg
languages: [solidity]
severity: ERROR
message: Require statement must have an error message
patterns:
- pattern: require($ERR);
- pattern-not: require($ERR, $MSG);
paths:
exclude:
- packages/contracts-bedrock/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment