diff --git a/ffdc/collect_ffdc.py b/ffdc/collect_ffdc.py
index ae0bb70..06c3e17 100644
--- a/ffdc/collect_ffdc.py
+++ b/ffdc/collect_ffdc.py
@@ -9,7 +9,7 @@
 
 import click
 
-# ---------Set sys.path for cli command execution---------------------------------------
+# ---------Set sys.path for cli command execution-----------------------------
 # Absolute path to openbmc-test-automation/ffdc
 abs_path = os.path.abspath(os.path.dirname(sys.argv[0]))
 full_path = abs_path.split("ffdc")[0]
diff --git a/ffdc/ffdc_collector.py b/ffdc/ffdc_collector.py
index c6ea801..6044e5e 100644
--- a/ffdc/ffdc_collector.py
+++ b/ffdc/ffdc_collector.py
@@ -92,7 +92,8 @@
 global_plugin_dict = {}
 global_plugin_list = []
 
-# Hold the plugin return named declared if function returned values are list,dict.
+# Hold the plugin return named declared if function returned values are
+# list,dict.
 # Refer this name list to look up the plugin dict for eval() args function
 # Example ['version']
 global_plugin_type_list = []
@@ -133,15 +134,17 @@
         r"""
         Description of argument(s):
 
-        hostname            name/ip of the targeted (remote) system
-        username            user on the targeted system with access to FFDC files
-        password            password for user on targeted system
+        hostname            Name/ip of the targeted (remote) system
+        username            User on the targeted system with access to
+                            FFDC files
+        password            Password for user on targeted system
         port_ssh            SSH port value. By default 22
         port_https          HTTPS port value. By default 443
         port_ipmi           IPMI port value. By default 623
-        ffdc_config         configuration file listing commands and files for FFDC
-        location            where to store collected FFDC
-        remote_type         os type of the remote host
+        ffdc_config         Configuration file listing commands and files
+                            for FFDC
+        location            Where to store collected FFDC
+        remote_type         OS type of the remote host
         remote_protocol     Protocol to use to collect data
         env_vars            User define CLI env vars '{"key : "value"}'
         econfig             User define env vars YAML file
@@ -169,8 +172,8 @@
         self.logger = None
 
         # Set prefix values for scp files and directory.
-        # Since the time stamp is at second granularity, these values are set here
-        # to be sure that all files for this run will have same timestamps
+        # Since the time stamp is at second granularity, these values are set
+        # here to be sure that all files for this run will have same timestamps
         # and they will be saved in the same directory.
         # self.location == local system for now
         self.set_ffdc_default_store_path()
@@ -406,7 +409,8 @@
         Determine actions based on remote host type
 
         Description of argument(s):
-        working_protocol_list    list of confirmed working protocols to connect to remote host.
+        working_protocol_list    List of confirmed working protocols to
+                                 connect to remote host.
         """
 
         self.logger.info(
@@ -620,8 +624,10 @@
         Send commands in ffdc_config file to targeted system.
 
         Description of argument(s):
-        ffdc_actions_for_target_type     commands and files for the selected remote host type.
-        form_filename                    if true, pre-pend self.target_type to filename
+        ffdc_actions_for_target_type     Commands and files for the selected
+                                         remote host type.
+        form_filename                    If true, pre-pend self.target_type to
+                                         filename
         """
 
         # Executing commands, if any
@@ -655,7 +661,8 @@
         Fetch list of commands from configuration file
 
         Description of argument(s):
-        ffdc_actions_for_target_type    commands and files for the selected remote host type.
+        ffdc_actions_for_target_type    Commands and files for the selected
+                                        remote host type.
         """
         try:
             list_of_commands = ffdc_actions_for_target_type["COMMANDS"]
@@ -668,7 +675,8 @@
         Fetch list of commands from configuration file
 
         Description of argument(s):
-        ffdc_actions_for_target_type    commands and files for the selected remote host type.
+        ffdc_actions_for_target_type    Commands and files for the selected
+                                        remote host type.
         """
         try:
             list_of_files = ffdc_actions_for_target_type["FILES"]
@@ -700,8 +708,10 @@
         Send commands in ffdc_config file to targeted system.
 
         Description of argument(s):
-        ffdc_actions_for_target_type    commands and files for the selected remote host type.
-        form_filename                    if true, pre-pend self.target_type to filename
+        ffdc_actions_for_target_type    Commands and files for the selected
+                                        remote host type.
+        form_filename                   If true, pre-pend self.target_type to
+                                        filename
         """
         self.logger.info(
             "\n\t[Run] Executing commands on %s using %s"
@@ -745,7 +755,8 @@
         scp group of files (wild card) from remote host.
 
         Description of argument(s):
-        fdc_actions_for_target_type    commands and files for the selected remote host type.
+        fdc_actions_for_target_type    Commands and files for the selected
+                                       remote host type.
         """
 
         if self.ssh_remoteclient.scpclient:
@@ -805,13 +816,16 @@
         quiet=None,
     ):
         r"""
-        SCP all files in file_dict to the indicated directory on the local system.
+        SCP all files in file_dict to the indicated directory on the local
+        system.
 
         Description of argument(s):
-        targ_dir_path                   The path of the directory to receive the files.
+        targ_dir_path                   The path of the directory to receive
+                                        the files.
         targ_file_prefix                Prefix which will be prepended to each
                                         target file's name.
-        file_dict                       A dictionary of files to scp from targeted system to this system
+        file_dict                       A dictionary of files to scp from
+                                        targeted system to this system
 
         """
 
@@ -858,11 +872,13 @@
     def set_ffdc_default_store_path(self):
         r"""
         Set a default value for self.ffdc_dir_path and self.ffdc_prefix.
-        Collected ffdc file will be stored in dir /self.location/hostname_timestr/.
+        Collected ffdc file will be stored in dir
+        /self.location/hostname_timestr/.
         Individual ffdc file will have timestr_filename.
 
         Description of class variables:
-        self.ffdc_dir_path  The dir path where collected ffdc data files should be put.
+        self.ffdc_dir_path  The dir path where collected ffdc data files
+                            should be put.
 
         self.ffdc_prefix    The prefix to be given to each ffdc file name.
 
@@ -1053,7 +1069,8 @@
         Perform protocol working check.
 
         """
-        # This is for the env vars a user can use in YAML to load it at runtime.
+        # This is for the env vars a user can use in YAML to load
+        # it at runtime.
         # Example YAML:
         # -COMMANDS:
         #    - my_command ${hostname}  ${username}   ${password}
@@ -1366,7 +1383,8 @@
         """
         # Parse the string for env vars ${env_vars}.
         try:
-            # Example, list of matching env vars ['username', 'password', 'hostname']
+            # Example, list of matching
+            # env vars ['username', 'password', 'hostname']
             # Extra escape \ for special symbols. '\$\{([^\}]+)\}' works good.
             var_name_regex = "\\$\\{([^\\}]+)\\}"
             env_var_names_list = re.findall(var_name_regex, yaml_arg_str)
@@ -1391,8 +1409,8 @@
                 # user added a plugin var which is not going to be populated.
                 if yaml_arg_str in global_plugin_dict:
                     if isinstance(global_plugin_dict[var], (list, dict)):
-                        # List data type or dict can't be replaced, use directly
-                        # in eval function call.
+                        # List data type or dict can't be replaced, use
+                        # directly in eval function call.
                         global_plugin_type_list.append(var)
                     else:
                         yaml_arg_str = yaml_arg_str.replace(
diff --git a/ffdc/lib/ssh_utility.py b/ffdc/lib/ssh_utility.py
index 17e1dea..77ad8bb 100644
--- a/ffdc/lib/ssh_utility.py
+++ b/ffdc/lib/ssh_utility.py
@@ -128,7 +128,8 @@
             paramiko.ChannelException,
             SocketTimeout,
         ) as e:
-            # Log command with error. Return to caller for next command, if any.
+            # Log command with error.
+            # Return to caller for next command, if any.
             logging.error(
                 "\n\tERROR: Fail remote command %s %s" % (e.__class__, e)
             )
@@ -188,9 +189,10 @@
                 "\n\tERROR: Fail scp %s from remotehost %s %s\n\n"
                 % (remote_file, e.__class__, e)
             )
-            # Pause for 2 seconds allowing Paramiko to finish error processing before next fetch.
-            # Without the delay after SCPException,
-            #    next fetch will get 'paramiko.ssh_exception.SSHException'> Channel closed Error.
+            # Pause for 2 seconds allowing Paramiko to finish error processing
+            # before next fetch. Without the delay after SCPException, next
+            # fetch will get 'paramiko.ssh_exception.SSHException'> Channel
+            # closed Error.
             time.sleep(2)
             return False
         # Return True for file accounting
diff --git a/ffdc/plugins/scp_execution.py b/ffdc/plugins/scp_execution.py
index f44735a..302936f 100644
--- a/ffdc/plugins/scp_execution.py
+++ b/ffdc/plugins/scp_execution.py
@@ -4,7 +4,7 @@
 import os
 import sys
 
-# ---------Set sys.path for pluqin execution---------------------------------------
+# ---------Set sys.path for pluqin execution----------------------------------
 # Absolute path to this plugin
 abs_path = os.path.abspath(os.path.dirname(sys.argv[0]))
 # full_path to plugins parent directory
diff --git a/ffdc/plugins/ssh_execution.py b/ffdc/plugins/ssh_execution.py
index f6aad88..3daa1be 100644
--- a/ffdc/plugins/ssh_execution.py
+++ b/ffdc/plugins/ssh_execution.py
@@ -4,7 +4,7 @@
 import os
 import sys
 
-# ---------Set sys.path for pluqin execution---------------------------------------
+# ---------Set sys.path for pluqin execution----------------------------------
 # Absolute path to this plugin
 abs_path = os.path.abspath(os.path.dirname(sys.argv[0]))
 # full_path to plugins parent directory
diff --git a/ffdc/plugins/telnet_execution.py b/ffdc/plugins/telnet_execution.py
index 08aaf02..8318337 100644
--- a/ffdc/plugins/telnet_execution.py
+++ b/ffdc/plugins/telnet_execution.py
@@ -4,7 +4,7 @@
 import os
 import sys
 
-# ---------Set sys.path for pluqin execution---------------------------------------
+# ---------Set sys.path for pluqin execution----------------------------------
 # Absolute path to this plugin
 abs_path = os.path.abspath(os.path.dirname(sys.argv[0]))
 # full_path to plugins parent directory
