TiagoMSSantos/MobileRT

View on GitHub
app/src/main/java/puscas/mobilertapp/utils/UtilsContext.java

Summary

Maintainability
B
5 hrs
Test Coverage

Method isPathReadable has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
Open

    private static boolean isPathReadable(final File file) {
        final boolean readable = file.setReadable(true);
        if (!file.canRead() && !readable) {
            final File parentFile = file.getParentFile();
            if (parentFile == null) {
Severity: Minor
Found in app/src/main/java/puscas/mobilertapp/utils/UtilsContext.java - 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

Method cleanStoragePath has 33 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    @NonNull
    public static String cleanStoragePath(@NonNull final String storagePath) {
        String storagePathCleaned = storagePath;

        // Remove Android path
Severity: Minor
Found in app/src/main/java/puscas/mobilertapp/utils/UtilsContext.java - About 1 hr to fix

    Method getSdCardPath has 26 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        @NonNull
        public static String getSdCardPath(@NonNull final Context context) {
            logger.info("Getting SD card path.");
    
            // The new method to get the SD card path.
    Severity: Minor
    Found in app/src/main/java/puscas/mobilertapp/utils/UtilsContext.java - About 1 hr to fix

      Method isPathReadable has 26 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          private static boolean isPathReadable(final File file) {
              final boolean readable = file.setReadable(true);
              if (!file.canRead() && !readable) {
                  final File parentFile = file.getParentFile();
                  if (parentFile == null) {
      Severity: Minor
      Found in app/src/main/java/puscas/mobilertapp/utils/UtilsContext.java - About 1 hr to fix

        Method cleanStoragePath has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
        Open

            @NonNull
            public static String cleanStoragePath(@NonNull final String storagePath) {
                String storagePathCleaned = storagePath;
        
                // Remove Android path
        Severity: Minor
        Found in app/src/main/java/puscas/mobilertapp/utils/UtilsContext.java - About 45 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

        Define a constant instead of duplicating this literal "Trying to load file from '" 4 times.
        Open

                        logger.warning("Trying to load file from '" + file.getAbsolutePath() + "' path, but it's not readable.\n");

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Line is longer than 100 characters (found 103).
        Open

                throw new FailureException("The SD card path '" + file.getAbsolutePath() + "' can't be read.");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 102).
        Open

                // Because the shell scripts are already trying to copy some OBJ files to '/data/local/tmp' by

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 160).
        Open

                    return ConstantsUI.FILE_SEPARATOR + "data" + ConstantsUI.FILE_SEPARATOR + "local" + ConstantsUI.FILE_SEPARATOR + "tmp" + ConstantsUI.FILE_SEPARATOR;

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Extra separation in import group before 'com.google.common.collect.ImmutableMap'
        Open

        import com.google.common.collect.ImmutableMap;

        Checks that the groups of import declarations appear in the order specifiedby the user. If there is an import but its group is not specified in theconfiguration such an import should be placed at the end of the import list.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Extra separation in import group before 'java.io.File'
        Open

        import java.io.File;

        Checks that the groups of import declarations appear in the order specifiedby the user. If there is an import but its group is not specified in theconfiguration such an import should be placed at the end of the import list.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        '+' should be on a new line.
        Open

                    logger.info("Since the internal storage path starts with '/data', then it's assuming " +

        Line is longer than 100 characters (found 113).
        Open

                            logger.info("Using fallback path since using a SDK API 19+, and hoping this path is right.");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 102).
        Open

                            return ConstantsUI.FILE_SEPARATOR + "mnt" + ConstantsUI.FILE_SEPARATOR + "sdcard";

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 128).
        Open

                                return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Extra separation in import group before 'androidx.annotation.NonNull'
        Open

        import androidx.annotation.NonNull;

        Checks that the groups of import declarations appear in the order specifiedby the user. If there is an import but its group is not specified in theconfiguration such an import should be placed at the end of the import list.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Extra separation in import group before 'java8.util.Optional'
        Open

        import java8.util.Optional;

        Checks that the groups of import declarations appear in the order specifiedby the user. If there is an import but its group is not specified in theconfiguration such an import should be placed at the end of the import list.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 101).
        Open

                            logger.info("Using the old (deprecated) approach to retrieve the SD Card path.");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 107).
        Open

                // If the internal storage path starts with '/data', then it's assumed that it's '/data/local/tmp'.

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 123).
        Open

                        logger.warning("Trying to load file from '" + file.getAbsolutePath() + "' path, but it's not readable.\n");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 108).
        Open

                        // Do not return false, since Android API 24 emulator doesn't provide writeable file system.

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 130).
        Open

                        logger.warning("Trying to load file from '" + parentFile.getAbsolutePath() + "' path, but it's not writeable.\n");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 124).
        Open

                        logger.warning("Trying to load file from '" + file.getAbsolutePath() + "' path, but it's not writeable.\n");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 112).
        Open

                throw new FailureException("The internal storage path '" + file.getAbsolutePath() + "' can't be read.");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        Line is longer than 100 characters (found 129).
        Open

                        logger.warning("Trying to load file from '" + parentFile.getAbsolutePath() + "' path, but it's not readable.\n");

        Checks for long lines.

        Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

        This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

        There are no issues that match your filters.

        Category
        Status