cloudmatrix/esky

View on GitHub
esky/patch.py

Summary

Maintainability
F
2 wks
Test Coverage

File patch.py has 1157 lines of code (exceeds 250 allowed). Consider refactoring.
Open

#  Copyright (c) 2009-2010, Cloud Matrix Pty. Ltd.
#  All rights reserved; available under the terms of the BSD License.
"""

  esky.patch:  directory diffing and patching support for esky.
Severity: Major
Found in esky/patch.py - About 2 days to fix

    Function main has a Cognitive Complexity of 58 (exceeds 5 allowed). Consider refactoring.
    Open

    def main(args):
        """Command-line diffing and patching for esky."""
        parser = optparse.OptionParser()
        parser.add_option("-z","--zipped",action="store_true",dest="zipped",
                          help="work with zipped source/target dirs")
    Severity: Minor
    Found in esky/patch.py - About 1 day to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function _diff_dir has a Cognitive Complexity of 43 (exceeds 5 allowed). Consider refactoring.
    Open

        def _diff_dir(self,source,target):
            """Generate patch commands for when the target is a directory."""
            #  If it's not already a directoy, make it one.
            if not os.path.isdir(source):
                self._write_command(MAKEDIR)
    Severity: Minor
    Found in esky/patch.py - About 6 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Patcher has 32 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class Patcher(object):
        """Class interpreting our patch protocol.
    
        Instances of this class can be used to apply a sequence of patch commands
        to a target file or directory.  You can think of it as a little automaton
    Severity: Minor
    Found in esky/patch.py - About 4 hrs to fix

      Function paths_differ has a Cognitive Complexity of 27 (exceeds 5 allowed). Consider refactoring.
      Open

      def paths_differ(path1,path2):
          """Check whether two paths differ."""
          if os.path.isdir(path1):
              if not os.path.isdir(path2):
                  return True
      Severity: Minor
      Found in esky/patch.py - About 3 hrs to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _diff_binary_file has a Cognitive Complexity of 23 (exceeds 5 allowed). Consider refactoring.
      Open

          def _diff_binary_file(self,source,target):
              """Diff a generic binary file.
      
              This is the per-file diffing method used when we don't know enough
              about the file to do anything fancier.  It's basically a windowed
      Severity: Minor
      Found in esky/patch.py - About 3 hrs to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _cleanup_patch has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
      Open

          def _cleanup_patch(self):
              '''Go throught the appdata folder of the new version and remove any files not 
              in the filelist. If there is no filelist we do nothing
              This prevents us from leaving old .pyc or .pyo files behind if we for instance 
              change a module into a folder instead of a single file.
      Severity: Minor
      Found in esky/patch.py - About 2 hrs to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _find_similar_sibling has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
      Open

          def _find_similar_sibling(self,source,target,nm):
              """Find a sibling of an entry against which we can calculate a diff.
      
              Given two directories 'source' and 'target' and an entry from the target
              directory 'nm', this function finds an entry from the source directory
      Severity: Minor
      Found in esky/patch.py - About 2 hrs to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function patch has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
      Open

          def patch(source,patch):
              #  Read the length headers
              l_bcontrol = _decode_offt(patch[8:16])
              l_bdiff = _decode_offt(patch[16:24])
              l_target = _decode_offt(patch[24:32])
      Severity: Minor
      Found in esky/patch.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _write_command has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
      Open

          def _write_command(self,cmd):
              """Write the given command to the stream.
      
              This does some simple optimisations to collapse sequences of commands
              into a single command - current only around path manipulation.
      Severity: Minor
      Found in esky/patch.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _do_COPY_FROM has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
      Open

          def _do_COPY_FROM(self):
              """Execute the COPY_FROM command.
      
              This reads a path from the command stream, and copies whatever is
              at that path to the current target path.  The source path is
      Severity: Minor
      Found in esky/patch.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _do_MOVE_FROM has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
      Open

          def _do_MOVE_FROM(self):
              """Execute the MOVE_FROM command.
      
              This reads a path from the command stream, and moves whatever is
              at that path to the current target path.  The source path is
      Severity: Minor
      Found in esky/patch.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _check_begin_patch has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
      Open

          def _check_begin_patch(self):
              """Begin patching the current file, if not already.
      
              This method is called by all file-patching commands; if there is
              no file open for patching then the current target is opened.
      Severity: Minor
      Found in esky/patch.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _diff_file has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
      Open

          def _diff_file(self,source,target):
              """Generate patch commands for when the target is a file."""
              if paths_differ(source,target):
                  if not os.path.isfile(source):
                      self._diff_binary_file(source,target)
      Severity: Minor
      Found in esky/patch.py - About 55 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function _do_PF_REC_ZIP has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
      Open

          def _do_PF_REC_ZIP(self):
              """Execute the PF_REC_ZIP command.
      
              This patches the current target by treating it as a zipfile and
              recursing into it.  It extracts the source file to a temp directory,
      Severity: Minor
      Found in esky/patch.py - About 55 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Avoid deeply nested control flow statements.
      Open

                                  if skipbytes > 0:
                                      self._write_command(PF_SKIP)
                                      self._write_int(skipbytes)
                                      spos += skipbytes
                                  self._write_command(PF_COPY)
      Severity: Major
      Found in esky/patch.py - About 45 mins to fix

        Avoid deeply nested control flow statements.
        Open

                            if data1 != data2:
                                return True
                            data1 = f1.read(1024*16)
        Severity: Major
        Found in esky/patch.py - About 45 mins to fix

          Avoid deeply nested control flow statements.
          Open

                                  if os.path.splitext(relpath)[-1] in remove:
                                      os.unlink(filepath)
          
          
          Severity: Major
          Found in esky/patch.py - About 45 mins to fix

            Function calculate_digest has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
            Open

            def calculate_digest(target,hash=hashlib.md5):
                """Calculate the digest of the given path.
            
                If the target is a file, its digest is calculated as normal.  If it is
                a directory, it is calculated from the names and digests of its contents.
            Severity: Minor
            Found in esky/patch.py - About 35 mins to fix

            Cognitive Complexity

            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

            A method's cognitive complexity is based on a few simple rules:

            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
            • Code is considered more complex for each "break in the linear flow of the code"
            • Code is considered more complex when "flow breaking structures are nested"

            Further reading

            Avoid too many return statements within this function.
            Open

                                    return True
            Severity: Major
            Found in esky/patch.py - About 30 mins to fix

              Avoid too many return statements within this function.
              Open

                  return False
              Severity: Major
              Found in esky/patch.py - About 30 mins to fix

                Avoid too many return statements within this function.
                Open

                            return zf
                Severity: Major
                Found in esky/patch.py - About 30 mins to fix

                  Avoid too many return statements within this function.
                  Open

                              return True
                  Severity: Major
                  Found in esky/patch.py - About 30 mins to fix

                    Avoid too many return statements within this function.
                    Open

                                        return True
                    Severity: Major
                    Found in esky/patch.py - About 30 mins to fix

                      Avoid too many return statements within this function.
                      Open

                              return True
                      Severity: Major
                      Found in esky/patch.py - About 30 mins to fix

                        Function load_filelist has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                        Open

                        def load_filelist(root):
                            '''locates the esky file list, reads it and returns it as a sorted list'''
                            for path, dirs, files in os.walk(root):
                                for f in files:
                                    if f == ESKY_FILELIST:
                        Severity: Minor
                        Found in esky/patch.py - About 25 mins to fix

                        Cognitive Complexity

                        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                        A method's cognitive complexity is based on a few simple rules:

                        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                        • Code is considered more complex for each "break in the linear flow of the code"
                        • Code is considered more complex when "flow breaking structures are nested"

                        Further reading

                        Function patch has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                        Open

                            def patch(self):
                                """Interpret and apply patch commands to the target.
                        
                                This is a simple command loop that dispatches to the _do_<CMD>
                                methods defined below.  It keeps processing until one of them
                        Severity: Minor
                        Found in esky/patch.py - About 25 mins to fix

                        Cognitive Complexity

                        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                        A method's cognitive complexity is based on a few simple rules:

                        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                        • Code is considered more complex for each "break in the linear flow of the code"
                        • Code is considered more complex when "flow breaking structures are nested"

                        Further reading

                        Function _check_end_patch has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                        Open

                            def _check_end_patch(self):
                                """Finish patching the current file, if there is one.
                        
                                This method is called by all non-file-patching commands; if there is
                                a file open for patching then it is closed and committed.
                        Severity: Minor
                        Found in esky/patch.py - About 25 mins to fix

                        Cognitive Complexity

                        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                        A method's cognitive complexity is based on a few simple rules:

                        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                        • Code is considered more complex for each "break in the linear flow of the code"
                        • Code is considered more complex when "flow breaking structures are nested"

                        Further reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                for i in xrange(0,len(bcontrol),24):
                                    tcontrol.append((
                                        _decode_offt(bcontrol[i:i+8]),
                                        _decode_offt(bcontrol[i+8:i+16]),
                                        _decode_offt(bcontrol[i+16:i+24]),
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 5 hrs to fix
                        esky/patch.py on lines 148..152

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 95.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    for i in xrange(0,len(bcontrol),24):
                                        tcontrol.append((
                                            _decode_offt(bcontrol[i:i+8]),
                                            _decode_offt(bcontrol[i+8:i+16]),
                                            _decode_offt(bcontrol[i+16:i+24]),
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 5 hrs to fix
                        esky/patch.py on lines 191..195

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 95.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                if os.path.isfile(source):
                                    s_mod = os.stat(source).st_mode
                                    if s_mod != t_mod:
                                        self._write_command(CHMOD)
                                        self._write_int(t_mod)
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 3 hrs to fix
                        esky/patch.py on lines 1074..1081

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 72.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                if os.path.isdir(source):
                                    s_mod = os.stat(source).st_mode
                                    if s_mod != t_mod:
                                        self._write_command(CHMOD)
                                        self._write_int(t_mod)
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 3 hrs to fix
                        esky/patch.py on lines 1094..1101

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 72.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                        if not os.path.exists(t_nm+"c"):
                                            self._write_command(JOIN_PATH)
                                            self._write_path(nm+"c")
                                            self._write_command(REMOVE)
                                            self._write_command(POP_PATH)
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 3 hrs to fix
                        esky/patch.py on lines 1058..1062

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 64.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                        if not os.path.exists(t_nm+"o"):
                                            self._write_command(JOIN_PATH)
                                            self._write_path(nm+"o")
                                            self._write_command(REMOVE)
                                            self._write_command(POP_PATH)
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 3 hrs to fix
                        esky/patch.py on lines 1053..1057

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 64.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 3 locations. Consider refactoring.
                        Open

                                        if os.path.isfile(source):
                                            source_zip = source
                                            source = os.path.join(workdir,"source")
                                            if opts.deep_zipped:
                                                deep_extract_zipfile(source_zip,source)
                        Severity: Major
                        Found in esky/patch.py and 2 other locations - About 2 hrs to fix
                        esky/patch.py on lines 1382..1388
                        esky/patch.py on lines 1401..1408

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 54.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 3 locations. Consider refactoring.
                        Open

                                        if os.path.isfile(target):
                                            target_zip = target
                                            target = os.path.join(workdir,"target")
                                            if opts.deep_zipped:
                                                deep_extract_zipfile(target_zip,target)
                        Severity: Major
                        Found in esky/patch.py and 2 other locations - About 2 hrs to fix
                        esky/patch.py on lines 1375..1381
                        esky/patch.py on lines 1401..1408

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 54.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 3 locations. Consider refactoring.
                        Open

                                    if opts.zipped:
                                        if os.path.isfile(target):
                                            target_zip = target
                                            target = os.path.join(workdir,"target")
                                            if opts.deep_zipped:
                        Severity: Major
                        Found in esky/patch.py and 2 other locations - About 2 hrs to fix
                        esky/patch.py on lines 1375..1381
                        esky/patch.py on lines 1382..1388

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 54.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                if not self.dry_run:
                                    if os.path.isdir(self.target):
                                        really_rmtree(self.target)
                                    elif os.path.exists(self.target):
                                        os.unlink(self.target)
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 1 hr to fix
                        esky/patch.py on lines 721..724

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 49.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    if os.path.isdir(self.target):
                                        really_rmtree(self.target)
                                    elif os.path.exists(self.target):
                                        os.unlink(self.target)
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 1 hr to fix
                        esky/patch.py on lines 733..737

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 49.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                            def _do_PF_INS_RAW(self):
                                """Execute the PF_INS_RAW command.
                        
                                This generates new data for the file currently being patched.  It
                                reads a bytestring from the command stream and writes it directly
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 1 hr to fix
                        esky/patch.py on lines 796..805

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 46.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                            def _do_PF_SKIP(self):
                                """Execute the PF_SKIP command.
                        
                                This reads an integer from the command stream, then moves the source
                                file pointer by that amount without changing the target file.
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 1 hr to fix
                        esky/patch.py on lines 807..817

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 46.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    if len(args) > 3:
                                        stream = open(args[3],"wb")
                                    else:
                                        stream = sys.stdout
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 1 hr to fix
                        esky/patch.py on lines 1396..1399

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 38.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    if len(args) > 2:
                                        stream = open(args[2],"rb")
                                    else:
                                        stream = sys.stdin
                        Severity: Major
                        Found in esky/patch.py and 1 other location - About 1 hr to fix
                        esky/patch.py on lines 1370..1373

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 38.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                        if os.path.isdir(self.target):
                                            really_rmtree(self.target)
                                        else:
                                            os.unlink(self.target)
                        Severity: Minor
                        Found in esky/patch.py and 1 other location - About 45 mins to fix
                        esky/patch.py on lines 752..756

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 35.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                    if os.path.exists(self.target):
                                        if os.path.isdir(self.target):
                                            really_rmtree(self.target)
                                        else:
                                            os.unlink(self.target)
                        Severity: Minor
                        Found in esky/patch.py and 1 other location - About 45 mins to fix
                        esky/patch.py on lines 776..779

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 35.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        There are no issues that match your filters.

                        Category
                        Status