ssube/cautious-journey

View on GitHub

Showing 22 of 32 total issues

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

  describe('list labels endpoint', () => {
    it('should list labels when dryrun=*', async () => {
      const { container, module } = await createRemoteContainer();

      const client = new Gitlab({});
Severity: Major
Found in test/remote/TestGitlabRemote.ts and 1 other location - About 4 hrs to fix
test/remote/TestGitlabRemote.ts on lines 196..224

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

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

  describe('list issues endpoint', () => {
    it('should list issues when dryrun=*', async () => {
      const { container, module } = await createRemoteContainer();

      const client = new Gitlab({});
Severity: Major
Found in test/remote/TestGitlabRemote.ts and 1 other location - About 4 hrs to fix
test/remote/TestGitlabRemote.ts on lines 226..254

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

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 parseArgs has 57 lines of code (exceeds 40 allowed). Consider refactoring.
Open

export async function parseArgs(args: Array<string>): Promise<ParsedArgs> {
  let mode = Commands.UNKNOWN;

  const parser = yargs(args)
    .usage(`Usage: ${VERSION_INFO.package.name} <mode> [options]`)
Severity: Major
Found in src/config/args.ts - About 1 hr to fix

    Function syncProjectLabels has a Cognitive Complexity of 16 (exceeds 8 allowed). Consider refactoring.
    Open

    export async function syncProjectLabels(options: SyncOptions): Promise<unknown> {
      const { logger, project, remote } = options;
    
      logger.debug({ project }, 'syncing project labels');
    
    
    Severity: Minor
    Found in src/sync.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 syncProjectLabels has 43 lines of code (exceeds 40 allowed). Consider refactoring.
    Open

    export async function syncProjectLabels(options: SyncOptions): Promise<unknown> {
      const { logger, project, remote } = options;
    
      logger.debug({ project }, 'syncing project labels');
    
    
    Severity: Minor
    Found in src/sync.ts - About 1 hr to fix

      Function resolveBaseLabel has a Cognitive Complexity of 13 (exceeds 8 allowed). Consider refactoring.
      Open

      function resolveBaseLabel(label: BaseLabel, anticipatedResult: ResolveResult, activeLabels: Set<string>) {
        if (activeLabels.has(label.name) === false) {
          return true;
        }
      
      
      Severity: Minor
      Found in src/resolve.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 resolveState has a Cognitive Complexity of 12 (exceeds 8 allowed). Consider refactoring.
      Open

      function resolveState(state: StateLabel, anticipatedResult: ResolveResult, activeLabels: Set<string>) {
        let activeValue;
      
        const sortedValues = prioritySort(state.values);
        for (const value of sortedValues) {
      Severity: Minor
      Found in src/resolve.ts - About 55 mins to fix

      Cognitive Complexity

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

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

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

      Further reading

      Function syncIssueLabels has a Cognitive Complexity of 12 (exceeds 8 allowed). Consider refactoring.
      Open

      export async function syncIssueLabels(options: SyncOptions): Promise<unknown> {
        const { logger, project, remote } = options;
      
        logger.debug({ project }, 'syncing issue labels for project');
      
      
      Severity: Minor
      Found in src/sync.ts - About 55 mins to fix

      Cognitive Complexity

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

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

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

      Further reading

      Function mainProject has 5 arguments (exceeds 4 allowed). Consider refactoring.
      Open

      export async function mainProject(args: ParsedArgs, container: Container, logger: Logger, mode: Commands, project: ProjectConfig): Promise<number> {
      Severity: Minor
      Found in src/main.ts - About 35 mins to fix

        TODO found
        Open

              // TODO: prompt user if they want to update this particular issue
        Severity: Minor
        Found in src/sync.ts by fixme

        TODO found
        Open

         * TODO
        Severity: Minor
        Found in src/sync.ts by fixme

        TODO found
        Open

         * TODO: add some sort options: high-first or low-first, case-sensitivity
        Severity: Minor
        Found in src/labels.ts by fixme

        TODO found
        Open

            // TODO: the compiler has trouble with the types of data items and shows them as empty
        Severity: Minor
        Found in src/remote/gitlab.ts by fixme

        TODO found
        Open

          // TODO: check if label is in use, prompt user if they want to remove it
        Severity: Minor
        Found in src/sync.ts by fixme

        TODO found
        Open

            // TODO: check if the label is in use
        Severity: Minor
        Found in src/remote/github.ts by fixme

        TODO found
        Open

        TODO: describe a workflow with `blocked` as a flag that removes any `status`
        Severity: Minor
        Found in docs/getting-started.md by fixme

        TODO found
        Open

        TODO
        Severity: Minor
        Found in docs/workflow.md by fixme

        TODO found
        Open

          // TODO: do something for bundled version, where import.meta.url is empty
        Severity: Minor
        Found in src/config/index.ts by fixme

        TODO found
        Open

            // TODO: check if the label already exists
        Severity: Minor
        Found in src/remote/github.ts by fixme

        TODO found
        Open

         * TODO
        Severity: Minor
        Found in src/resolve.ts by fixme
        Severity
        Category
        Status
        Source
        Language