code: def check_syntax(self, app_path=None):
          
          app_path = app_path or '.'
  
          for filename in sorted(os.listdir(app_path)):
              error = None
              status = True
              if filename.endswith('.py'):
                  try:
                      with open(filename, 'rb') as f:
                          ast.parse(f.read(), filename=filename)
                  except SyntaxError:
                      status = False
                      # cleanup output
                      e = []
                      for line in traceback.format_exc().split('\n')[-5:-2]:
                          e.append(line.strip())
                      error = ' '.join(e)
  
              elif filename.endswith('.json'):
                  try:
                      with open(filename, 'r') as fh:
                          json.load(fh)
                  except ValueError as e:
                      status = False
                      error = e
              else:
                  # skip unsupported file types
                  continue
  
              if error:
                  # update validation data errors
                  self.validation_data['errors'].append(
                      'Syntax validation failed for {} ({}).'.format(filename, error)
                  )
  
              # store status for this file
              self.validation_data['fileSyntax'].append({'filename': filename, 'status': status})
docs: Run syntax on each ".py" and ".json" file.
  
          Args:
              app_path (str, optional): Defaults to None. The path of Python files.