diff options
author | Kitzunu <24550914+Kitzunu@users.noreply.github.com> | 2024-12-19 21:14:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-19 21:14:58 +0100 |
commit | ceefd89a06a0a04b48ad752d20a5543871c884c8 (patch) | |
tree | 3cd27be46f1ea207dbe923a3cd3c2dfc8f850406 /apps/codestyle | |
parent | 288d70e58eb1c190de6202265d5edb25889792ff (diff) |
feat(CI/Codestyle): check for curly brackets before/after if/else statements (#20977)
* feat(CI/Codestyle): check for braces after if/else statements
* right need to edit a cpp file to trigger cpp check
* Revert "right need to edit a cpp file to trigger cpp check"
This reverts commit 2e34d8c52f35216549107a3476e79e79ea2ae077.
* fix codestyle in cpp
* Update oculus.cpp
* Update codestyle.py
* Update codestyle.py
* Update codestyle.py
* Update codestyle.py
Diffstat (limited to 'apps/codestyle')
-rw-r--r-- | apps/codestyle/codestyle.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/apps/codestyle/codestyle.py b/apps/codestyle/codestyle.py index ea580f56b9..5cbf1691ab 100644 --- a/apps/codestyle/codestyle.py +++ b/apps/codestyle/codestyle.py @@ -21,6 +21,11 @@ results = { # Main function to parse all the files of the project def parsing_file(directory: str) -> None: + print("Starting AzerothCore CPP Codestyle check...") + print(" ") + print("Please read the C++ Code Standards for AzerothCore:") + print("https://www.azerothcore.org/wiki/cpp-code-standards") + print(" ") for root, _, files in os.walk(directory): for file in files: if not file.endswith('.ico'): # Skip .ico files that cannot be read @@ -138,23 +143,23 @@ def npcflags_helpers_check(file: io, file_path: str) -> None: for line_number, line in enumerate(file, start = 1): if 'GetUInt32Value(UNIT_NPC_FLAGS)' in line: print( - f"Please use GetNpcFlags() instead GetUInt32Value(UNIT_NPC_FLAGS): {file_path} at line {line_number}") + f"Please use GetNpcFlags() instead of GetUInt32Value(UNIT_NPC_FLAGS): {file_path} at line {line_number}") check_failed = True if 'HasFlag(UNIT_NPC_FLAGS,' in line: print( - f"Please use HasNpcFlag() instead HasFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") + f"Please use HasNpcFlag() instead of HasFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") check_failed = True if 'SetUInt32Value(UNIT_NPC_FLAGS,' in line: print( - f"Please use ReplaceAllNpcFlags() instead SetUInt32Value(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") + f"Please use ReplaceAllNpcFlags() instead of SetUInt32Value(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") check_failed = True if 'SetFlag(UNIT_NPC_FLAGS,' in line: print( - f"Please use SetNpcFlag() instead SetFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") + f"Please use SetNpcFlag() instead of SetFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") check_failed = True if 'RemoveFlag(UNIT_NPC_FLAGS,' in line: print( - f"Please use RemoveNpcFlag() instead RemoveFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") + f"Please use RemoveNpcFlag() instead of RemoveFlag(UNIT_NPC_FLAGS, ...): {file_path} at line {line_number}") check_failed = True # Handle the script error and update the result output if check_failed: @@ -214,19 +219,26 @@ def misc_codestyle_check(file: io, file_path: str) -> None: global error_handler, results file.seek(0) # Reset file pointer to the beginning check_failed = False + + # used to check for "if/else (...) {" "} else" ignores "if/else (...) {...}" "#define ... if/else (...) {" + ifelse_curlyregex = r"^[^#define].*\s+(if|else)(\s*\(.*\))?\s*{[^}]*$|}\s*else(\s*{[^}]*$)" # Parse all the file for line_number, line in enumerate(file, start = 1): if 'const auto&' in line: print( - f"Please use 'auto const&' syntax instead of 'const auto&': {file_path} at line {line_number}") + f"Please use the 'auto const&' syntax instead of 'const auto&': {file_path} at line {line_number}") check_failed = True if re.search(r'\bconst\s+\w+\s*\*\b', line): print( - f"Please use the syntax 'Class/ObjectType const*' instead of 'const Class/ObjectType*': {file_path} at line {line_number}") + f"Please use the 'Class/ObjectType const*' syntax instead of 'const Class/ObjectType*': {file_path} at line {line_number}") check_failed = True if [match for match in [' if(', ' if ( '] if match in line]: print( - f"AC have as standard: if (XXXX). Please check spaces in your condition': {file_path} at line {line_number}") + f"Please use the 'if (XXXX)' syntax instead of 'if(XXXX)': {file_path} at line {line_number}") + check_failed = True + if re.match(ifelse_curlyregex, line): + print( + f"Curly brackets are not allowed to be leading or trailing if/else statements. Place it on a new line: {file_path} at line {line_number}") check_failed = True # Handle the script error and update the result output if check_failed: |