Skip to content

Commit

Permalink
Porting lint-assertions.sh to lint-assertions.py
Browse files Browse the repository at this point in the history
  • Loading branch information
hiago committed Apr 22, 2022
1 parent e14f0fa commit 172c233
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 34 deletions.
52 changes: 52 additions & 0 deletions test/lint/lint-assertions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/usr/bin/env python3
#
# Copyright (c) 2018-2022 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
#
# Check for assertions with obvious side effects.

import sys
import subprocess


def git_grep(params: [], error_msg: ""):
try:
output = subprocess.check_output(["git", "grep", *params], universal_newlines=True, encoding="utf8")
print(error_msg)
print(output)
return 1
except subprocess.CalledProcessError as ex1:
if ex1.returncode > 1:
raise ex1
return 0


def main():
# PRE31-C (SEI CERT C Coding Standard):
# "Assertions should not contain assignments, increment, or decrement operators."
exit_code = git_grep([
"-E",
r"[^_]assert\(.*(\+\+|\-\-|[^=!<>]=[^=!<>]).*\);",
"--",
"*.cpp",
"*.h"
], "Assertions should not have side effects:")

# Macro CHECK_NONFATAL(condition) should be used instead of assert for RPC code, where it
# is undesirable to crash the whole program. See: src/util/check.h
# src/rpc/server.cpp is excluded from this check since it's mostly meta-code.
exit_code |= git_grep([
"-nE",
r"\<(A|a)ssert *\(.*\);",
"--",
"src/rpc/",
"src/wallet/rpc*",
":(exclude)src/rpc/server.cpp"
], "CHECK_NONFATAL(condition) should be used instead of assert for RPC code.")

sys.exit(exit_code)


if __name__ == "__main__":
main()
34 changes: 0 additions & 34 deletions test/lint/lint-assertions.sh

This file was deleted.

0 comments on commit 172c233

Please sign in to comment.