trufflesuite/truffle

View on GitHub

Showing 1,401 of 1,401 total issues

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

          deployedBytecode: CompileSolidity.Shims.zeroLinkReferences({
            bytes: compilerOutputContract.evm.deployedBytecode.object,
            linkReferences: CompileSolidity.Shims.formatLinkReferences(
              compilerOutputContract.evm.deployedBytecode.linkReferences
            )
Severity: Major
Found in packages/from-hardhat/src/compilation.ts and 1 other location - About 1 hr to fix
packages/from-hardhat/src/compilation.ts on lines 75..80

Duplicated Code

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

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

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

Tuning

This issue has a mass of 64.

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

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

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

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

Refactorings

Further Reading

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

          bytecode: CompileSolidity.Shims.zeroLinkReferences({
            bytes: compilerOutputContract.evm.bytecode.object,
            linkReferences: CompileSolidity.Shims.formatLinkReferences(
              compilerOutputContract.evm.bytecode.linkReferences
            )
Severity: Major
Found in packages/from-hardhat/src/compilation.ts and 1 other location - About 1 hr to fix
packages/from-hardhat/src/compilation.ts on lines 81..86

Duplicated Code

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

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

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

Tuning

This issue has a mass of 64.

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

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

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

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

Refactorings

Further Reading

Function parseImports has 36 lines of code (exceeds 25 allowed). Consider refactoring.
Open

function parseImports(body) {
  // WARNING: We're going to do this crudely with regexes!!
  //
  // Vyper has a rigid enough syntax that I think this is workable.
  //
Severity: Minor
Found in packages/compile-vyper/parser.js - About 1 hr to fix

    Function run has 36 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

    const run = async <
      C extends Collections,
      Args extends unknown[],
      Return,
      R extends RequestType<C> | undefined
    Severity: Minor
    Found in packages/db/src/meta/process/run.ts - About 1 hr to fix

      Function extract has 36 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

        extract({ input, inputs, breadcrumb }) {
          debug("inputs %o", inputs);
          debug("breadcrumb %o", breadcrumb);
          const { compilationIndex } = breadcrumb;
      
      
      Severity: Minor
      Found in packages/db/src/project/loadCompile/contracts.ts - About 1 hr to fix

        Function getSolcFromCacheOrUrl has 36 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

          async getSolcFromCacheOrUrl(versionConstraint: string, index: number = 0) {
            // go through all sources (compilerRoots) trying to locate a
            // suitable version of the Solidity compiler
            const { compilerRoots, events } = this.config;
            if (!compilerRoots || compilerRoots.length === 0) {

          Function streamAllDockerTags has 36 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

            streamAllDockerTags() {
              // build http client to account for rate limit problems
              // use axiosRetry to instate exponential backoff when requests come back
              // with expected 429
              const client = axios.create();

            Function solidityFamily has 36 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

            export function solidityFamily(compiler: CompilerVersion): SolidityFamily {
              if (!compiler || compiler.name !== "solc") {
                return "unknown";
              }
              if (
            Severity: Minor
            Found in packages/codec/lib/compiler/utils.ts - About 1 hr to fix

              Function sections has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

                      (definitions, refs, scopes) => {
                        let sections = {
                          builtin: [],
                          global: [],
                          contract: [],
              Severity: Minor
              Found in packages/debugger/lib/data/selectors/index.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function returnAllocation has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

                    (
                      { data: calldata },
                      { context, isConstructor, fallbackAbi },
                      { constructorAllocations, functionAllocations },
                      contractHasFallbackOutput //just using truthiness here
              Severity: Minor
              Found in packages/debugger/lib/data/selectors/index.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function processTrace has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

              export function* processTrace(steps) {
                yield put(actions.saveSteps(steps));
              
                let callAddresses = new Set();
                let selfDestructAddresses = new Set();
              Severity: Minor
              Found in packages/debugger/lib/trace/sagas/index.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function exports has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

              module.exports = async function (selectedCommand, subCommand, options) {
                const commands = require("../index");
                const globalCommandOptions = require("../../global-command-options");
                const TruffleError = require("@truffle/error");
              
              
              Severity: Minor
              Found in packages/core/lib/commands/help/displayCommandHelp.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function exports has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

              module.exports = async function (options) {
                const TruffleError = require("@truffle/error");
                const WorkflowCompile = require("@truffle/workflow-compile").default;
                const Config = require("@truffle/config");
                const config = Config.detect(options);
              Severity: Minor
              Found in packages/core/lib/commands/compile/run.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function exports has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

              module.exports = async function (options) {
                const Config = require("@truffle/config");
                const ConfigurationError = require("../../errors/configurationerror");
                const create = require("./helpers");
              
              
              Severity: Minor
              Found in packages/core/lib/commands/create/run.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function printEvents has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

                printEvents() {
                  const instances = this.session.view(session.info.affectedInstances); //used to look
                  const formatAddress = address => {
                    const name = instances[address]?.contractName;
                    const colorizedAddress = colors.yellow(address); //dull yellow
              Severity: Minor
              Found in packages/core/lib/debug/printer.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function recognizeInteger has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

                private recognizeInteger(input: unknown): Codec.IntegerWrapResponse {
                  if (Utils.isBigNumber(input)) {
                    if (input.isInteger()) {
                      return {
                        kind: "integer" as const,
              Severity: Minor
              Found in packages/encoder/lib/encoders.ts - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function printRevertMessage has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

                async printRevertMessage() {
                  this.config.logger.log(
                    DebugUtils.truffleColors.red("Transaction halted with a RUNTIME ERROR.")
                  );
                  this.config.logger.log("");
              Severity: Minor
              Found in packages/core/lib/debug/printer.js - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function findResourcesHistories has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

              async function* findResourcesHistories<
                N extends NamedCollectionName,
                ResourceHistoryStep extends {
                  [K in "skip" | N]: "skip" extends K
                    ? (...indexes: number[]) => void
              Severity: Minor
              Found in packages/db/src/resources/projects/resolveContractInstances.ts - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function compileWithPragmaAnalysis has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

              export const compileWithPragmaAnalysis = async ({
                paths,
                options
              }: {
                paths: string[];
              Severity: Minor
              Found in packages/compile-solidity/src/compileWithPragmaAnalysis.ts - About 1 hr to fix

              Cognitive Complexity

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

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

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

              Further reading

              Function tryFetchAndCompileAddress has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
              Open

              async function tryFetchAndCompileAddress(
                address: string,
                fetchers: Fetcher[],
                recognizer: Recognizer,
                fetchAndCompileOptions: FetchAndCompileOptions
              Severity: Minor
              Found in packages/fetch-and-compile/lib/fetch.ts - 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

              Severity
              Category
              Status
              Source
              Language