TiagoMSSantos/MobileRT

View on GitHub
app/src/main/java/puscas/mobilertapp/MainActivity.java

Summary

Maintainability
F
3 days
Test Coverage

File MainActivity.java has 630 lines of code (exceeds 250 allowed). Consider refactoring.
Open

package puscas.mobilertapp;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.ActivityNotFoundException;
Severity: Major
Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 1 day to fix

    MainActivity has 37 methods (exceeds 20 allowed). Consider refactoring.
    Open

    public final class MainActivity extends Activity {
    
        /**
         * Logger for this class.
         */
    Severity: Minor
    Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 4 hrs to fix

      Method onActivityResult has a Cognitive Complexity of 30 (exceeds 5 allowed). Consider refactoring.
      Open

          @Override
          protected void onActivityResult(final int requestCode,
                                          final int resultCode,
                                          @Nullable final Intent data) {
              super.onActivityResult(requestCode, resultCode, data);
      Severity: Minor
      Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 4 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

      Method onActivityResult has 44 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          @Override
          protected void onActivityResult(final int requestCode,
                                          final int resultCode,
                                          @Nullable final Intent data) {
              super.onActivityResult(requestCode, resultCode, data);
      Severity: Minor
      Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 1 hr to fix

        Method getPathFromFile has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
        Open

            @NonNull
            private String getPathFromFile(@NonNull final Uri uri) {
                logger.info("Parsing path:" + Arrays.toString(uri.getPathSegments().toArray()));
                validatePathIsAccessible(uri);
        
        
        Severity: Minor
        Found in app/src/main/java/puscas/mobilertapp/MainActivity.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 initializePickerResolutions has 29 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            private void initializePickerResolutions(final int pickerSizes) {
                logger.info("initializePickerResolutions start");
                final int maxSizes = 9;
                this.pickerResolutions.setMinValue(1);
                this.pickerResolutions.setMaxValue(maxSizes - 1);
        Severity: Minor
        Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 1 hr to fix

          Method setupRenderer has 29 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              private void setupRenderer(final TextView textView, final Button renderButton) {
                  logger.info("setupRenderer start");
          
                  this.drawView.setVisibility(View.INVISIBLE);
                  this.drawView.setEGLContextClientVersion(MyEglContextFactory.EGL_CONTEXT_CLIENT_VERSION);
          Severity: Minor
          Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 1 hr to fix

            Method getPathFromFile has 28 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                @NonNull
                private String getPathFromFile(@NonNull final Uri uri) {
                    logger.info("Parsing path:" + Arrays.toString(uri.getPathSegments().toArray()));
                    validatePathIsAccessible(uri);
            
            
            Severity: Minor
            Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 1 hr to fix

              Method createConfigFromUI has 27 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  @NonNull
                  private Config createConfigFromUI(@NonNull final String scenePath) {
                      final Pair<Integer, Integer> resolution =
                          Utils.getResolutionFromPicker(this.pickerResolutions);
              
              
              Severity: Minor
              Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 1 hr to fix

                Method readFile has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    private void readFile(@NonNull final Uri uri) {
                        logger.info("readFile");
                        final List<String> allowedPaths = List.of(UtilsContext.getSdCardPath(this), UtilsContext.getInternalStoragePath(this));
                        final boolean isAllowedPath;
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                Severity: Minor
                Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 1 hr to fix

                  Consider simplifying this complex logical expression.
                  Open

                          if (externalStorage1 || externalStorage2 || externalStorage3 || externalStorage4 || externalStorage5 || internalStorage1) {
                              return;
                          }
                  Severity: Major
                  Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - About 40 mins to fix

                    Method onRequestPermissionsResult has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                    Open

                        @Override
                        public void onRequestPermissionsResult(final int requestCode,
                                                               @NonNull final String[] permissions,
                                                               @NonNull final int[] grantResults) {
                            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                    Severity: Minor
                    Found in app/src/main/java/puscas/mobilertapp/MainActivity.java - 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

                    Refactor this method to reduce its Cognitive Complexity from 29 to the 15 allowed.
                    Open

                        protected void onActivityResult(final int requestCode,

                    Cognitive Complexity is a measure of how hard the control flow of a method is to understand. Methods with high Cognitive Complexity will be difficult to maintain.

                    See

                    Refactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.
                    Open

                        private String getPathFromFile(@NonNull final Uri uri) {

                    Cognitive Complexity is a measure of how hard the control flow of a method is to understand. Methods with high Cognitive Complexity will be difficult to maintain.

                    See

                    Use the built-in formatting to construct this argument.
                    Open

                                        logger.info("Will read every selected file: " + numFiles);

                    Passing message arguments that require further evaluation into a Guava com.google.common.base.Preconditions check can result in a performance penalty. That's because whether or not they're needed, each argument must be resolved before the method is actually called.

                    Similarly, passing concatenated strings into a logging method can also incur a needless performance hit because the concatenation will be performed every time the method is called, whether or not the log level is low enough to show the message.

                    Instead, you should structure your code to pass static or pre-computed values into Preconditions conditions check and logging calls.

                    Specifically, the built-in string formatting should be used instead of string concatenation, and if the message is the result of a method call, then Preconditions should be skipped altogether, and the relevant exception should be conditionally thrown instead.

                    Noncompliant Code Example

                    logger.log(Level.DEBUG, "Something went wrong: " + message);  // Noncompliant; string concatenation performed even when log level too high to show DEBUG messages
                    
                    logger.fine("An exception occurred with message: " + message); // Noncompliant
                    
                    LOG.error("Unable to open file " + csvPath, e);  // Noncompliant
                    
                    Preconditions.checkState(a > 0, "Arg must be positive, but got " + a);  // Noncompliant. String concatenation performed even when a > 0
                    
                    Preconditions.checkState(condition, formatMessage());  // Noncompliant. formatMessage() invoked regardless of condition
                    
                    Preconditions.checkState(condition, "message: %s", formatMessage());  // Noncompliant
                    

                    Compliant Solution

                    logger.log(Level.SEVERE, "Something went wrong: {0} ", message);  // String formatting only applied if needed
                    
                    logger.fine("An exception occurred with message: {}", message);  // SLF4J, Log4j
                    
                    logger.log(Level.SEVERE, () -> "Something went wrong: " + message); // since Java 8, we can use Supplier , which will be evaluated lazily
                    
                    LOG.error("Unable to open file {0}", csvPath, e);
                    
                    if (LOG.isDebugEnabled() {
                      LOG.debug("Unable to open file " + csvPath, e);  // this is compliant, because it will not evaluate if log level is above debug.
                    }
                    
                    Preconditions.checkState(arg > 0, "Arg must be positive, but got %d", a);  // String formatting only applied if needed
                    
                    if (!condition) {
                      throw new IllegalStateException(formatMessage());  // formatMessage() only invoked conditionally
                    }
                    
                    if (!condition) {
                      throw new IllegalStateException("message: " + formatMessage());
                    }
                    

                    Exceptions

                    catch blocks are ignored, because the performance penalty is unimportant on exceptional paths (catch block should not be a part of standard program flow). Getters are ignored as well as methods called on annotations which can be considered as getters. This rule accounts for explicit test-level testing with SLF4J methods isXXXEnabled and ignores the bodies of such if statements.

                    Invoke method(s) only conditionally. Use the built-in formatting to construct this argument.
                    Open

                                logger.info("Requested permissions: " + Arrays.toString(permissions));

                    Passing message arguments that require further evaluation into a Guava com.google.common.base.Preconditions check can result in a performance penalty. That's because whether or not they're needed, each argument must be resolved before the method is actually called.

                    Similarly, passing concatenated strings into a logging method can also incur a needless performance hit because the concatenation will be performed every time the method is called, whether or not the log level is low enough to show the message.

                    Instead, you should structure your code to pass static or pre-computed values into Preconditions conditions check and logging calls.

                    Specifically, the built-in string formatting should be used instead of string concatenation, and if the message is the result of a method call, then Preconditions should be skipped altogether, and the relevant exception should be conditionally thrown instead.

                    Noncompliant Code Example

                    logger.log(Level.DEBUG, "Something went wrong: " + message);  // Noncompliant; string concatenation performed even when log level too high to show DEBUG messages
                    
                    logger.fine("An exception occurred with message: " + message); // Noncompliant
                    
                    LOG.error("Unable to open file " + csvPath, e);  // Noncompliant
                    
                    Preconditions.checkState(a > 0, "Arg must be positive, but got " + a);  // Noncompliant. String concatenation performed even when a > 0
                    
                    Preconditions.checkState(condition, formatMessage());  // Noncompliant. formatMessage() invoked regardless of condition
                    
                    Preconditions.checkState(condition, "message: %s", formatMessage());  // Noncompliant
                    

                    Compliant Solution

                    logger.log(Level.SEVERE, "Something went wrong: {0} ", message);  // String formatting only applied if needed
                    
                    logger.fine("An exception occurred with message: {}", message);  // SLF4J, Log4j
                    
                    logger.log(Level.SEVERE, () -> "Something went wrong: " + message); // since Java 8, we can use Supplier , which will be evaluated lazily
                    
                    LOG.error("Unable to open file {0}", csvPath, e);
                    
                    if (LOG.isDebugEnabled() {
                      LOG.debug("Unable to open file " + csvPath, e);  // this is compliant, because it will not evaluate if log level is above debug.
                    }
                    
                    Preconditions.checkState(arg > 0, "Arg must be positive, but got %d", a);  // String formatting only applied if needed
                    
                    if (!condition) {
                      throw new IllegalStateException(formatMessage());  // formatMessage() only invoked conditionally
                    }
                    
                    if (!condition) {
                      throw new IllegalStateException("message: " + formatMessage());
                    }
                    

                    Exceptions

                    catch blocks are ignored, because the performance penalty is unimportant on exceptional paths (catch block should not be a part of standard program flow). Getters are ignored as well as methods called on annotations which can be considered as getters. This rule accounts for explicit test-level testing with SLF4J methods isXXXEnabled and ignores the bodies of such if statements.

                    Use the built-in formatting to construct this argument.
                    Open

                            logger.info("Path '" + filePath +"' already read.");

                    Passing message arguments that require further evaluation into a Guava com.google.common.base.Preconditions check can result in a performance penalty. That's because whether or not they're needed, each argument must be resolved before the method is actually called.

                    Similarly, passing concatenated strings into a logging method can also incur a needless performance hit because the concatenation will be performed every time the method is called, whether or not the log level is low enough to show the message.

                    Instead, you should structure your code to pass static or pre-computed values into Preconditions conditions check and logging calls.

                    Specifically, the built-in string formatting should be used instead of string concatenation, and if the message is the result of a method call, then Preconditions should be skipped altogether, and the relevant exception should be conditionally thrown instead.

                    Noncompliant Code Example

                    logger.log(Level.DEBUG, "Something went wrong: " + message);  // Noncompliant; string concatenation performed even when log level too high to show DEBUG messages
                    
                    logger.fine("An exception occurred with message: " + message); // Noncompliant
                    
                    LOG.error("Unable to open file " + csvPath, e);  // Noncompliant
                    
                    Preconditions.checkState(a > 0, "Arg must be positive, but got " + a);  // Noncompliant. String concatenation performed even when a > 0
                    
                    Preconditions.checkState(condition, formatMessage());  // Noncompliant. formatMessage() invoked regardless of condition
                    
                    Preconditions.checkState(condition, "message: %s", formatMessage());  // Noncompliant
                    

                    Compliant Solution

                    logger.log(Level.SEVERE, "Something went wrong: {0} ", message);  // String formatting only applied if needed
                    
                    logger.fine("An exception occurred with message: {}", message);  // SLF4J, Log4j
                    
                    logger.log(Level.SEVERE, () -> "Something went wrong: " + message); // since Java 8, we can use Supplier , which will be evaluated lazily
                    
                    LOG.error("Unable to open file {0}", csvPath, e);
                    
                    if (LOG.isDebugEnabled() {
                      LOG.debug("Unable to open file " + csvPath, e);  // this is compliant, because it will not evaluate if log level is above debug.
                    }
                    
                    Preconditions.checkState(arg > 0, "Arg must be positive, but got %d", a);  // String formatting only applied if needed
                    
                    if (!condition) {
                      throw new IllegalStateException(formatMessage());  // formatMessage() only invoked conditionally
                    }
                    
                    if (!condition) {
                      throw new IllegalStateException("message: " + formatMessage());
                    }
                    

                    Exceptions

                    catch blocks are ignored, because the performance penalty is unimportant on exceptional paths (catch block should not be a part of standard program flow). Getters are ignored as well as methods called on annotations which can be considered as getters. This rule accounts for explicit test-level testing with SLF4J methods isXXXEnabled and ignores the bodies of such if statements.

                    Use the built-in formatting to construct this argument.
                    Open

                            logger.info("Will read the following file: '" + filePath + "'");

                    Passing message arguments that require further evaluation into a Guava com.google.common.base.Preconditions check can result in a performance penalty. That's because whether or not they're needed, each argument must be resolved before the method is actually called.

                    Similarly, passing concatenated strings into a logging method can also incur a needless performance hit because the concatenation will be performed every time the method is called, whether or not the log level is low enough to show the message.

                    Instead, you should structure your code to pass static or pre-computed values into Preconditions conditions check and logging calls.

                    Specifically, the built-in string formatting should be used instead of string concatenation, and if the message is the result of a method call, then Preconditions should be skipped altogether, and the relevant exception should be conditionally thrown instead.

                    Noncompliant Code Example

                    logger.log(Level.DEBUG, "Something went wrong: " + message);  // Noncompliant; string concatenation performed even when log level too high to show DEBUG messages
                    
                    logger.fine("An exception occurred with message: " + message); // Noncompliant
                    
                    LOG.error("Unable to open file " + csvPath, e);  // Noncompliant
                    
                    Preconditions.checkState(a > 0, "Arg must be positive, but got " + a);  // Noncompliant. String concatenation performed even when a > 0
                    
                    Preconditions.checkState(condition, formatMessage());  // Noncompliant. formatMessage() invoked regardless of condition
                    
                    Preconditions.checkState(condition, "message: %s", formatMessage());  // Noncompliant
                    

                    Compliant Solution

                    logger.log(Level.SEVERE, "Something went wrong: {0} ", message);  // String formatting only applied if needed
                    
                    logger.fine("An exception occurred with message: {}", message);  // SLF4J, Log4j
                    
                    logger.log(Level.SEVERE, () -> "Something went wrong: " + message); // since Java 8, we can use Supplier , which will be evaluated lazily
                    
                    LOG.error("Unable to open file {0}", csvPath, e);
                    
                    if (LOG.isDebugEnabled() {
                      LOG.debug("Unable to open file " + csvPath, e);  // this is compliant, because it will not evaluate if log level is above debug.
                    }
                    
                    Preconditions.checkState(arg > 0, "Arg must be positive, but got %d", a);  // String formatting only applied if needed
                    
                    if (!condition) {
                      throw new IllegalStateException(formatMessage());  // formatMessage() only invoked conditionally
                    }
                    
                    if (!condition) {
                      throw new IllegalStateException("message: " + formatMessage());
                    }
                    

                    Exceptions

                    catch blocks are ignored, because the performance penalty is unimportant on exceptional paths (catch block should not be a part of standard program flow). Getters are ignored as well as methods called on annotations which can be considered as getters. This rule accounts for explicit test-level testing with SLF4J methods isXXXEnabled and ignores the bodies of such if statements.

                    Use the built-in formatting to construct this argument.
                    Open

                                logger.info("Will read the following file: '" + filePath + "', [fd: " + fileDescriptor + ", size: " + fileSize +  "]");

                    Passing message arguments that require further evaluation into a Guava com.google.common.base.Preconditions check can result in a performance penalty. That's because whether or not they're needed, each argument must be resolved before the method is actually called.

                    Similarly, passing concatenated strings into a logging method can also incur a needless performance hit because the concatenation will be performed every time the method is called, whether or not the log level is low enough to show the message.

                    Instead, you should structure your code to pass static or pre-computed values into Preconditions conditions check and logging calls.

                    Specifically, the built-in string formatting should be used instead of string concatenation, and if the message is the result of a method call, then Preconditions should be skipped altogether, and the relevant exception should be conditionally thrown instead.

                    Noncompliant Code Example

                    logger.log(Level.DEBUG, "Something went wrong: " + message);  // Noncompliant; string concatenation performed even when log level too high to show DEBUG messages
                    
                    logger.fine("An exception occurred with message: " + message); // Noncompliant
                    
                    LOG.error("Unable to open file " + csvPath, e);  // Noncompliant
                    
                    Preconditions.checkState(a > 0, "Arg must be positive, but got " + a);  // Noncompliant. String concatenation performed even when a > 0
                    
                    Preconditions.checkState(condition, formatMessage());  // Noncompliant. formatMessage() invoked regardless of condition
                    
                    Preconditions.checkState(condition, "message: %s", formatMessage());  // Noncompliant
                    

                    Compliant Solution

                    logger.log(Level.SEVERE, "Something went wrong: {0} ", message);  // String formatting only applied if needed
                    
                    logger.fine("An exception occurred with message: {}", message);  // SLF4J, Log4j
                    
                    logger.log(Level.SEVERE, () -> "Something went wrong: " + message); // since Java 8, we can use Supplier , which will be evaluated lazily
                    
                    LOG.error("Unable to open file {0}", csvPath, e);
                    
                    if (LOG.isDebugEnabled() {
                      LOG.debug("Unable to open file " + csvPath, e);  // this is compliant, because it will not evaluate if log level is above debug.
                    }
                    
                    Preconditions.checkState(arg > 0, "Arg must be positive, but got %d", a);  // String formatting only applied if needed
                    
                    if (!condition) {
                      throw new IllegalStateException(formatMessage());  // formatMessage() only invoked conditionally
                    }
                    
                    if (!condition) {
                      throw new IllegalStateException("message: " + formatMessage());
                    }
                    

                    Exceptions

                    catch blocks are ignored, because the performance penalty is unimportant on exceptional paths (catch block should not be a part of standard program flow). Getters are ignored as well as methods called on annotations which can be considered as getters. This rule accounts for explicit test-level testing with SLF4J methods isXXXEnabled and ignores the bodies of such if statements.

                    Use the built-in formatting to construct this argument.
                    Open

                            logger.info("onActivityResult requestCode: " + requestCode + ", resultCode: " + resultCode);

                    Passing message arguments that require further evaluation into a Guava com.google.common.base.Preconditions check can result in a performance penalty. That's because whether or not they're needed, each argument must be resolved before the method is actually called.

                    Similarly, passing concatenated strings into a logging method can also incur a needless performance hit because the concatenation will be performed every time the method is called, whether or not the log level is low enough to show the message.

                    Instead, you should structure your code to pass static or pre-computed values into Preconditions conditions check and logging calls.

                    Specifically, the built-in string formatting should be used instead of string concatenation, and if the message is the result of a method call, then Preconditions should be skipped altogether, and the relevant exception should be conditionally thrown instead.

                    Noncompliant Code Example

                    logger.log(Level.DEBUG, "Something went wrong: " + message);  // Noncompliant; string concatenation performed even when log level too high to show DEBUG messages
                    
                    logger.fine("An exception occurred with message: " + message); // Noncompliant
                    
                    LOG.error("Unable to open file " + csvPath, e);  // Noncompliant
                    
                    Preconditions.checkState(a > 0, "Arg must be positive, but got " + a);  // Noncompliant. String concatenation performed even when a > 0
                    
                    Preconditions.checkState(condition, formatMessage());  // Noncompliant. formatMessage() invoked regardless of condition
                    
                    Preconditions.checkState(condition, "message: %s", formatMessage());  // Noncompliant
                    

                    Compliant Solution

                    logger.log(Level.SEVERE, "Something went wrong: {0} ", message);  // String formatting only applied if needed
                    
                    logger.fine("An exception occurred with message: {}", message);  // SLF4J, Log4j
                    
                    logger.log(Level.SEVERE, () -> "Something went wrong: " + message); // since Java 8, we can use Supplier , which will be evaluated lazily
                    
                    LOG.error("Unable to open file {0}", csvPath, e);
                    
                    if (LOG.isDebugEnabled() {
                      LOG.debug("Unable to open file " + csvPath, e);  // this is compliant, because it will not evaluate if log level is above debug.
                    }
                    
                    Preconditions.checkState(arg > 0, "Arg must be positive, but got %d", a);  // String formatting only applied if needed
                    
                    if (!condition) {
                      throw new IllegalStateException(formatMessage());  // formatMessage() only invoked conditionally
                    }
                    
                    if (!condition) {
                      throw new IllegalStateException("message: " + formatMessage());
                    }
                    

                    Exceptions

                    catch blocks are ignored, because the performance penalty is unimportant on exceptional paths (catch block should not be a part of standard program flow). Getters are ignored as well as methods called on annotations which can be considered as getters. This rule accounts for explicit test-level testing with SLF4J methods isXXXEnabled and ignores the bodies of such if statements.

                    Define a constant instead of duplicating this literal "storage" 4 times.
                    Open

                                return ConstantsUI.FILE_SEPARATOR + "storage" + cleanedFilePath;

                    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.

                    Define a constant instead of duplicating this literal "sdcard" 4 times.
                    Open

                                    uri.getPathSegments().get(0).matches("sdcard")

                    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.

                    Make the enclosing method "static" or remove this set.
                    Open

                            currentInstance = this;

                    Correctly updating a static field from a non-static method is tricky to get right and could easily lead to bugs if there are multiple class instances and/or multiple threads in play. Ideally, static fields are only updated from synchronized static methods.

                    This rule raises an issue each time a static field is updated from a non-static method.

                    Noncompliant Code Example

                    public class MyClass {
                    
                      private static int count = 0;
                    
                      public void doSomething() {
                        //...
                        count++;  // Noncompliant
                      }
                    }
                    

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

                            boolean externalStorage3 = path.matches("^" + escapedFileSeparator + "storage" + escapedFileSeparator + "emulated" + escapedFileSeparator + "0" + escapedFileSeparator +".+$");
                    Severity: Minor
                    Found in app/src/main/java/puscas/mobilertapp/MainActivity.java and 1 other location - About 35 mins to fix
                    app/src/main/java/puscas/mobilertapp/MainActivity.java on lines 685..685

                    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 44.

                    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

                            boolean internalStorage1 = path.matches("^" + escapedFileSeparator + "data" + escapedFileSeparator + "local" + escapedFileSeparator + "tmp" + escapedFileSeparator + ".+$");
                    Severity: Minor
                    Found in app/src/main/java/puscas/mobilertapp/MainActivity.java and 1 other location - About 35 mins to fix
                    app/src/main/java/puscas/mobilertapp/MainActivity.java on lines 682..682

                    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 44.

                    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

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

                            final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

                    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 166).
                    Open

                            cleanedFilePath = cleanedFilePath.replaceFirst("^" + escapedFileSeparator + "([A-Za-z0-9]){4}-([A-Za-z0-9]){4}" + escapedFileSeparator, escapedFileSeparator);

                    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 142).
                    Open

                                throw new FailureException("It couldn't list the files in the selected path. Are you sure the necessary permissions were given?");

                    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.

                    Wrong lexicographical order for 'java8.util.Optional' import. Should be before 'javax.annotation.Nonnull'.
                    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 102).
                    Open

                                .reduce("", (accumulator, segment) -> accumulator + ConstantsUI.FILE_SEPARATOR + segment);

                    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 139).
                    Open

                            cleanedFilePath = cleanedFilePath.replaceFirst("^" + escapedFileSeparator + "sdcard" + escapedFileSeparator, escapedFileSeparator);

                    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 183).
                    Open

                            boolean externalStorage3 = path.matches("^" + escapedFileSeparator + "storage" + escapedFileSeparator + "emulated" + escapedFileSeparator + "0" + escapedFileSeparator +".+$");

                    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 127).
                    Open

                            final List<String> allowedPaths = List.of(UtilsContext.getSdCardPath(this), UtilsContext.getInternalStoragePath(this));

                    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 'javax.annotation.Nonnull'
                    Open

                    import javax.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.

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

                                    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && data.getClipData() != null) {

                    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 169).
                    Open

                            cleanedFilePath = cleanedFilePath.replaceFirst("^" + escapedFileSeparator + "local" + escapedFileSeparator + "tmp" + escapedFileSeparator, escapedFileSeparator);

                    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 '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.

                    <p> tag should be preceded with an empty line.</p>
                    Open

                         * <p>

                    Checks the Javadoc paragraph.

                    Checks that:

                    • There is one blank line between each of two paragraphs.
                    • Each paragraph but the first has <p> immediately before the first word, withno space after.

                    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 131).
                    Open

                                || (uri.getPathSegments().size() > 1 && uri.getPathSegments().get(1).matches("^([A-Za-z0-9]){4}-([A-Za-z0-9]){4}:.+$"))

                    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

                                || (uri.getPathSegments().size() > 2 && uri.getPathSegments().get(2).matches("^([A-Za-z0-9]){4}-([A-Za-z0-9]){4}$"))

                    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.

                    <p> tag should be placed immediately before the first word, with no space after.</p>
                    Open

                         * <p>

                    Checks the Javadoc paragraph.

                    Checks that:

                    • There is one blank line between each of two paragraphs.
                    • Each paragraph but the first has <p> immediately before the first word, withno space after.

                    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 149).
                    Open

                            boolean externalStorage2 = path.matches("^" + escapedFileSeparator + "mnt" + escapedFileSeparator + "sdcard" + escapedFileSeparator + ".+$");

                    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 118).
                    Open

                                final String normalizedPathStr = UtilsContext.cleanStoragePath(normalizedPath.toFile().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.

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

                                final String normalizedPath = Files.simplifyPath(new File(Objects.requireNonNull(uri.getPath())).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.

                    <p> tag should be placed immediately before the first word, with no space after.</p>
                    Open

                         * <p>

                    Checks the Javadoc paragraph.

                    Checks that:

                    • There is one blank line between each of two paragraphs.
                    • Each paragraph but the first has <p> immediately before the first word, withno space after.

                    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 118).
                    Open

                                || (uri.getPathSegments().get(0).matches("^storage$") && uri.getPathSegments().get(1).matches("^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 167).
                    Open

                                || (uri.getPathSegments().get(0).matches("^storage$") && uri.getPathSegments().get(1).matches("^emulated$") && uri.getPathSegments().get(2).matches("^0$"))

                    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 111).
                    Open

                            String cleanedFilePath = startFilePath.replace(ConstantsUI.PATH_SEPARATOR, 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.

                    Line continuation have incorrect indentation level, expected level should be 4.
                    Open

                         * have the application {@link Context} and so the method can be static and used anywhere in the

                    Checks the indentation of the continuation lines in block tags.That is whether thecontinued description of at clauses should be indented or not. If the text is not properlyindented it throws a violation. A continuation line is when the description starts/spanspast the line with the tag. Default indentation required is at least 4, but this can bechanged with the help of properties below.

                    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 154).
                    Open

                            boolean externalStorage1 = path.matches("^" + escapedFileSeparator + "document" + escapedFileSeparator + "([A-Za-z0-9]){4}-([A-Za-z0-9]){4}:.+$");

                    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 111).
                    Open

                            throw new SecurityException("User shouldn't try to read files from the path: '" + uri.getPath() + "'");

                    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 '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.

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

                                logger.info("Will read the following file: '" + filePath + "', [fd: " + fileDescriptor + ", size: " + fileSize +  "]");

                    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 continuation have incorrect indentation level, expected level should be 4.
                    Open

                         * codebase.

                    Checks the indentation of the continuation lines in block tags.That is whether thecontinued description of at clauses should be indented or not. If the text is not properlyindented it throws a violation. A continuation line is when the description starts/spanspast the line with the tag. Default indentation required is at least 4, but this can bechanged with the help of properties below.

                    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 180).
                    Open

                            boolean externalStorage4 = path.matches("^" + escapedFileSeparator + "storage" + escapedFileSeparator + "([A-Za-z0-9]){4}-([A-Za-z0-9]){4}" + escapedFileSeparator + ".+$");

                    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 'com.google.common.base.Preconditions'
                    Open

                    import com.google.common.base.Preconditions;

                    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 157).
                    Open

                                ? "Requesting Intent to load a file for: '" + packageName + "' (has shared/external file access: " + Environment.isExternalStorageManager() + ")"

                    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.

                    Abbreviation in name 'externalSDCardPath' must contain no more than '2' consecutive capital letters.
                    Open

                            final boolean externalSDCardPath =

                    Validates abbreviations (consecutive capital letters) length in identifier name,it also allows to enforce camel case naming. Please read more atGoogle Style Guideto get to know how to avoid long abbreviations in names.

                    allowedAbbreviationLength specifies how many consecutive capital letters areallowed in the identifier.A value of 3 indicates that up to 4 consecutive capital letters are allowed,one after the other, before a violation is printed. The identifier 'MyTEST' would beallowed, but 'MyTESTS' would not be.A value of 0 indicates that only 1 consecutive capital letter is allowed. Thisis what should be used to enforce strict camel casing. The identifier 'MyTest' wouldbe allowed, but 'MyTEst' would not be.

                    ignoreFinal, ignoreStatic, and ignoreStaticFinalcontrol whether variables with the respective modifiers are to be ignored.Note that a variable that is both static and final will always be considered underignoreStaticFinal only, regardless of the values of ignoreFinaland ignoreStatic. So for example if ignoreStatic is true butignoreStaticFinal is false, then static final variables will not be ignored.

                    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

                                || (uri.getPathSegments().size() > 1 && uri.getPathSegments().get(1).matches("^([A-Za-z0-9]){4}-([A-Za-z0-9]){4}$"))

                    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.

                    <p> tag should be preceded with an empty line.</p>
                    Open

                         * <p>

                    Checks the Javadoc paragraph.

                    Checks that:

                    • There is one blank line between each of two paragraphs.
                    • Each paragraph but the first has <p> immediately before the first word, withno space after.

                    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 114).
                    Open

                                || (uri.getPathSegments().get(0).matches("^mnt$") && uri.getPathSegments().get(1).matches("^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 153).
                    Open

                            boolean externalStorage5 = path.matches("^" + escapedFileSeparator + "storage" + escapedFileSeparator + "sdcard" + escapedFileSeparator + ".+$");

                    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 131).
                    Open

                            if (externalStorage1 || externalStorage2 || externalStorage3 || externalStorage4 || externalStorage5 || internalStorage1) {

                    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 133).
                    Open

                            try (ParcelFileDescriptor parcelFileDescriptor = Objects.requireNonNull(getContentResolver().openFileDescriptor(uri, "r"))) {

                    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

                                throw new SecurityException("The provided file path is not from a safe internal storage or external 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.

                    '&&' should be on a new line.
                    Open

                                if (grantResults.length > 0 &&

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

                                final String messageFinished = ConstantsMethods.START_RENDER + ConstantsMethods.FINISHED;

                    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.

                    All overloaded methods should be placed next to each other. Placing non-overloaded methods in between overloaded methods with the same type is a violation. Previous overloaded method located at line '596'.
                    Open

                        private void readFile(@NonNull final Uri uri) {

                    Checks that overloaded methods are grouped together. Overloaded methods have the samename but different signatures where the signature can differ by the number of inputparameters or type of input parameters or both.

                    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

                            final ConfigResolution.Builder builderConfigRes = ConfigResolution.Builder.Companion.create();

                    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.

                    Wrong lexicographical order for 'java8.util.stream.IntStreams' import. Should be before 'javax.annotation.Nonnull'.
                    Open

                    import java8.util.stream.IntStreams;

                    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.

                    Wrong lexicographical order for 'java8.util.stream.StreamSupport' import. Should be before 'javax.annotation.Nonnull'.
                    Open

                    import java8.util.stream.StreamSupport;

                    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 146).
                    Open

                            if (cleanedFilePath.startsWith(ConstantsUI.FILE_SEPARATOR + "emulated" + ConstantsUI.FILE_SEPARATOR + "0" + 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.

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

                            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

                    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 180).
                    Open

                            boolean internalStorage1 = path.matches("^" + escapedFileSeparator + "data" + escapedFileSeparator + "local" + escapedFileSeparator + "tmp" + escapedFileSeparator + ".+$");

                    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 106).
                    Open

                                    // double.class::cast method throws `ClassCastException: Integer cannot be cast to double`

                    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