From df8fd4f4be640391ba860bb9c1bdeeaa9d064568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 08:16:29 +0100 Subject: [PATCH 1/8] Add check_fix_white_space.py Make it possible to check for whitespace-damage: - a file uses TAB instead of space - a file has trailing whitespace e.g. "text on this line \n" instead of "text on this line\n" Both make reviews unnecessary hard and may lead to merge conflicts, which could be easily avoided. In the next commit this script will be added to the continous integration. --- check_fix_white_space.py | 96 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 check_fix_white_space.py diff --git a/check_fix_white_space.py b/check_fix_white_space.py new file mode 100755 index 0000000..cf6fe3c --- /dev/null +++ b/check_fix_white_space.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 + +# +# Script to fix whithespace errors in files +# All trailing white space are removed +# TAB are replace by spaces +# +import glob +import sys + +file_patterns_tab_width = {"**/*.Tc*": 4, + "**/*.py": 4, + "**/*.sh": 8} +def fix_white_space(debug, fix_files): + """ + Checks the Twincat source code for white space: + TAB should not be used + Trailing SPACE shoulf not be there. + :return: A dictionary of white-space-damaged files + """ + incorrect_files = dict() + for file_path, tab_width in file_patterns_tab_width.items(): + found_files = glob.glob(file_path, recursive=True) + #if not found_files: + # raise IOError("ERROR: No files of type {} found".format(file_path)) + + for pathname in found_files: + dirty = False + new_lines = [] + if debug >= 1: + print("tab_with=%d pathname=%s" % (tab_width, pathname)) + file = open(pathname, 'r', newline='', encoding="iso-8859-1") + lines = file.readlines() + file.close() + for old_line in lines: + had_crlf = 0 + this_line_dirty = False + if old_line.endswith('\r\n'): + had_crlf = 2 # Both CR and LF + elif old_line.endswith('\n'): + had_crlf = 1 # LF + # Convert all TAB into SPACE + new_line = old_line.expandtabs(tabsize=tab_width) + # Strip of all trailing white space, including the CRLF + new_line = new_line.rstrip("\r\n ") + if had_crlf == 2: + new_line = new_line + '\r\n' + elif had_crlf == 1: + new_line = new_line + '\n' + + if len(new_line) != len(old_line): + dirty = True + this_line_dirty = True + new_lines.append(new_line) + if this_line_dirty: + if debug >= 2: + print("had_crlf=%d" % had_crlf) + print("old_line=%s" % old_line) + print("new_line=%s" % new_line) + # end of loop of all line in one file + if debug >= 1: + print("pathname=%s dirty=%d" % (pathname, dirty)) + if dirty: + incorrect_files[pathname] = True + if fix_files: + file = open(pathname, 'w', newline='', encoding="iso-8859-1") + file.writelines(new_lines) + file.close() + + return incorrect_files + + +if __name__ == "__main__": + try: + argc = len(sys.argv) + arg_idx = 1 + debug = 0 + fix_files = False + while arg_idx < argc: + if sys.argv[arg_idx] == "--fix": + fix_files = True + elif sys.argv[arg_idx] == "--debug": + debug = debug + 1 + else: + print("%s : [--fix|--debug]" % sys.argv[0]) + exit(2) + arg_idx = arg_idx + 1 + incorrect_files = fix_white_space(debug, fix_files) + if not fix_files: + for file in incorrect_files: + print("ERROR: '{}' has white space damage".format(file)) + if incorrect_files: + exit(1) + except IOError as e: + print(e) # Likely no files found + exit(2) From 2004342dd345de0f6b4183059a1d62a2eb542f0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 08:23:40 +0100 Subject: [PATCH 2/8] bitbucket-pipelines.yml: Activate check_fix_white_space.py --- bitbucket-pipelines.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index f3e3890..093b1f2 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -7,4 +7,5 @@ pipelines: - step: script: - git submodule update --init - - python twincat_version_manager.py \ No newline at end of file + - python twincat_version_manager.py + - python check_fix_white_space.py From 7ce75ac945cd4338f6f9f3b1f7382511b820755d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 09:28:54 +0100 Subject: [PATCH 3/8] bitbucket-pipelines.yml: Change pipline from pull-request to default Allways run the pipeline, for each push, not only pull-requests. This should detect problems early, --- bitbucket-pipelines.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 093b1f2..873f48c 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -2,9 +2,8 @@ image: python:3.7.3 options: max-time: 1 pipelines: - pull-requests: - '**': - - step: + default: + - step: script: - git submodule update --init - python twincat_version_manager.py From 9facfb89c1661dce09f7017fae080a865906c0ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 09:43:45 +0100 Subject: [PATCH 4/8] Update tc_epicscommodule to a white+space clean version --- solution/tc_epicscommodule | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/tc_epicscommodule b/solution/tc_epicscommodule index 3794bb7..ee4d3b9 160000 --- a/solution/tc_epicscommodule +++ b/solution/tc_epicscommodule @@ -1 +1 @@ -Subproject commit 3794bb7a9801d08901fe8efcf3e103582b5d7e2c +Subproject commit ee4d3b9b86675f4b0ab652681ea9c87aa5fd41b7 From bef8078e9903560186d68c8520046f67ab8194d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 09:45:53 +0100 Subject: [PATCH 5/8] Fix whitespace damage Fix the whitespaces using check_fix_white_space.py modified: solution/tc_project_app/GVLs/GVL_APP.TcGVL modified: solution/tc_project_app/POUs/MAIN.TcPOU --- solution/tc_project_app/GVLs/GVL_APP.TcGVL | 6 +- solution/tc_project_app/POUs/MAIN.TcPOU | 116 ++++++++++----------- 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/solution/tc_project_app/GVLs/GVL_APP.TcGVL b/solution/tc_project_app/GVLs/GVL_APP.TcGVL index 2d96afa..a846a85 100644 --- a/solution/tc_project_app/GVLs/GVL_APP.TcGVL +++ b/solution/tc_project_app/GVLs/GVL_APP.TcGVL @@ -3,12 +3,12 @@ \ No newline at end of file diff --git a/solution/tc_project_app/POUs/MAIN.TcPOU b/solution/tc_project_app/POUs/MAIN.TcPOU index 50890c8..d74f2d1 100644 --- a/solution/tc_project_app/POUs/MAIN.TcPOU +++ b/solution/tc_project_app/POUs/MAIN.TcPOU @@ -3,43 +3,43 @@ @@ -52,7 +52,7 @@ ERROR();]]> , - nSelectedError=> , - pErrorSystem=> ); + En:= TRUE, + bReset:= , + nErrorNum:= , + bACK:= , + bValidSelection:= , + nTableRowIndex:= , + EnO=> , + nSelectedError=> , + pErrorSystem=> ); FOR GVL.iAxis:=1 TO gvl_app.axisNum DO - aFbAxesError[gvl.iAxis](EN:=TRUE, - nNC_ErrorID:= gvl.axes[gvl.iAxis].status.nErrorID, - nNC_AxisID:=gvl.axes[gvl.iAxis].Axis.NcToPlc.AxisId, - ErrorSystem:= fbErrorSystem.pErrorSystem); + aFbAxesError[gvl.iAxis](EN:=TRUE, + nNC_ErrorID:= gvl.axes[gvl.iAxis].status.nErrorID, + nNC_AxisID:=gvl.axes[gvl.iAxis].Axis.NcToPlc.AxisId, + ErrorSystem:= fbErrorSystem.pErrorSystem); END_FOR - - + + (*call all the necessary instance (input assistance F2 or right click) according to the terminals that you have in your hardware and - add "TRUE" in the input En, the corresponding number of termianl to the iTerminal_ID and -the variable "fbErrorSystem.pErrorSystem" to the input ErrorSystem in each FB E. g. : + add "TRUE" in the input En, the corresponding number of termianl to the iTerminal_ID and +the variable "fbErrorSystem.pErrorSystem" to the input ErrorSystem in each FB E. g. : fbEL1808( - En:= TRUE, - iTerminal_ID:= 01, - ErrorSystem:= fbErorSystem.pErrorSystem, - EnO=> , - bError=> ); + En:= TRUE, + iTerminal_ID:= 01, + ErrorSystem:= fbErorSystem.pErrorSystem, + EnO=> , + bError=> ); *) ]]> From 69f8fc469605c131b366e4b870f0ef7dc5c956ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 10:56:07 +0100 Subject: [PATCH 6/8] solution/tc_epicscommodule updated to 3.1.4024.0 --- solution/tc_epicscommodule | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/tc_epicscommodule b/solution/tc_epicscommodule index ee4d3b9..e746bc4 160000 --- a/solution/tc_epicscommodule +++ b/solution/tc_epicscommodule @@ -1 +1 @@ -Subproject commit ee4d3b9b86675f4b0ab652681ea9c87aa5fd41b7 +Subproject commit e746bc4b801554a2af3cc5432f9374ffc9fbd82b From 403b1c92969846e6e5b59bc74d8153222e4f2251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 11:44:53 +0100 Subject: [PATCH 7/8] bitbucket-pipelines.yml: Print status of `git submodule` --- bitbucket-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 873f48c..d47cd1d 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -6,5 +6,6 @@ pipelines: - step: script: - git submodule update --init + - git submodule - python twincat_version_manager.py - python check_fix_white_space.py From 4b2302d0d45ed8774130c05661f4ff5c673296a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20B=C3=B6gershausen?= Date: Fri, 29 Nov 2019 11:51:27 +0100 Subject: [PATCH 8/8] Fix whitespace damage in solution/tc_project_app/tc_mca_std_lib --- solution/tc_project_app/tc_mca_std_lib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/tc_project_app/tc_mca_std_lib b/solution/tc_project_app/tc_mca_std_lib index afc8c96..ce9f69f 160000 --- a/solution/tc_project_app/tc_mca_std_lib +++ b/solution/tc_project_app/tc_mca_std_lib @@ -1 +1 @@ -Subproject commit afc8c964ba035d22f55f2ead68c3ab38f62eb7ba +Subproject commit ce9f69ffdc2ac817ced936189f4550b65235025d