BookStackApp/BookStack

View on GitHub

Showing 201 of 288 total issues

modeMap has 74 functions (exceeds 20 allowed). Consider refactoring.
Open

const modeMap = {
    bash: () => legacyLoad('shell'),
    c: () => legacyLoad('c'),
    css: async () => css(),
    'c++': () => legacyLoad('cpp'),
Severity: Major
Found in resources/js/code/languages.js - About 1 day to fix

    File SearchRunner.php has 339 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    <?php
    
    namespace BookStack\Search;
    
    use BookStack\Entities\EntityProvider;
    Severity: Minor
    Found in app/Search/SearchRunner.php - About 4 hrs to fix

      Entity has 29 functions (exceeds 20 allowed). Consider refactoring.
      Open

      abstract class Entity extends Model implements Sluggable, Favouritable, Viewable, Deletable, Loggable
      {
          use SoftDeletes;
          use HasCreatorAndUpdater;
          use HasOwner;
      Severity: Minor
      Found in app/Entities/Models/Entity.php - About 3 hrs to fix

        Function register has 84 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

        function register(editor) {
            editor.ui.registry.addIcon('codeblock', '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm1 2v14h14V5Z"/><path d="M11.103 15.423c.277.277.277.738 0 .922a.692.692 0 0 1-1.106 0l-4.057-3.78a.738.738 0 0 1 0-1.107l4.057-3.872c.276-.277.83-.277 1.106 0a.724.724 0 0 1 0 1.014L7.6 12.012ZM12.897 8.577c-.245-.312-.2-.675.08-.955.28-.281.727-.27 1.027.033l4.057 3.78a.738.738 0 0 1 0 1.107l-4.057 3.872c-.277.277-.83.277-1.107 0a.724.724 0 0 1 0-1.014l3.504-3.412z"/></svg>');
        
            editor.ui.registry.addButton('codeeditor', {
                tooltip: 'Insert code block',
        Severity: Major
        Found in resources/js/wysiwyg/plugin-codeeditor.js - About 3 hrs to fix

          Function defineCodeBlockCustomElement has 84 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

          function defineCodeBlockCustomElement(editor) {
              const doc = editor.getDoc();
              const win = doc.defaultView;
          
              class CodeBlockElement extends win.HTMLElement {
          Severity: Major
          Found in resources/js/wysiwyg/plugin-codeeditor.js - About 3 hrs to fix

            SearchRunner has 28 functions (exceeds 20 allowed). Consider refactoring.
            Open

            class SearchRunner
            {
                /**
                 * Acceptable operators to be used in a query.
                 *
            Severity: Minor
            Found in app/Search/SearchRunner.php - About 3 hrs to fix

              File book-sort.js has 301 lines of code (exceeds 250 allowed). Consider refactoring.
              Open

              import Sortable, {MultiDrag} from 'sortablejs';
              import {Component} from './component';
              import {htmlToDom} from '../services/dom';
              
              // Auto sort control
              Severity: Minor
              Found in resources/js/components/book-sort.js - About 3 hrs to fix

                User has 27 functions (exceeds 20 allowed). Consider refactoring.
                Open

                class User extends Model implements AuthenticatableContract, CanResetPasswordContract, Loggable, Sluggable
                {
                    use HasFactory;
                    use Authenticatable;
                    use CanResetPassword;
                Severity: Minor
                Found in app/Users/Models/User.php - About 3 hrs to fix

                  File PageController.php has 293 lines of code (exceeds 250 allowed). Consider refactoring.
                  Open

                  <?php
                  
                  namespace BookStack\Entities\Controllers;
                  
                  use BookStack\Activity\Models\View;
                  Severity: Minor
                  Found in app/Entities/Controllers/PageController.php - About 3 hrs to fix

                    File config.js has 291 lines of code (exceeds 250 allowed). Consider refactoring.
                    Open

                    import {register as registerShortcuts} from './shortcuts';
                    import {listen as listenForCommonEvents} from './common-events';
                    import {scrollToQueryString} from './scrolling';
                    import {listenForDragAndPaste} from './drop-paste-handling';
                    import {getPrimaryToolbar, registerAdditionalToolbars} from './toolbars';
                    Severity: Minor
                    Found in resources/js/wysiwyg/config.js - About 3 hrs to fix

                      Function register has 73 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                      function register(editor) {
                          // Tasklist UI buttons
                          editor.ui.registry.addIcon('tasklist', '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M22,8c0-0.55-0.45-1-1-1h-7c-0.55,0-1,0.45-1,1s0.45,1,1,1h7C21.55,9,22,8.55,22,8z M13,16c0,0.55,0.45,1,1,1h7 c0.55,0,1-0.45,1-1c0-0.55-0.45-1-1-1h-7C13.45,15,13,15.45,13,16z M10.47,4.63c0.39,0.39,0.39,1.02,0,1.41l-4.23,4.25 c-0.39,0.39-1.02,0.39-1.42,0L2.7,8.16c-0.39-0.39-0.39-1.02,0-1.41c0.39-0.39,1.02-0.39,1.41,0l1.42,1.42l3.54-3.54 C9.45,4.25,10.09,4.25,10.47,4.63z M10.48,12.64c0.39,0.39,0.39,1.02,0,1.41l-4.23,4.25c-0.39,0.39-1.02,0.39-1.42,0L2.7,16.16 c-0.39-0.39-0.39-1.02,0-1.41s1.02-0.39,1.41,0l1.42,1.42l3.54-3.54C9.45,12.25,10.09,12.25,10.48,12.64L10.48,12.64z"/></svg>');
                          editor.ui.registry.addToggleButton('tasklist', {
                              tooltip: 'Task list',
                      Severity: Major
                      Found in resources/js/wysiwyg/plugins-tasklist.js - About 2 hrs to fix

                        Function register has 70 lines of code (exceeds 25 allowed). Consider refactoring.
                        Open

                        function register(editor) {
                            editor.ui.registry.addIcon('details', '<svg width="24" height="24"><path d="M8.2 9a.5.5 0 0 0-.4.8l4 5.6a.5.5 0 0 0 .8 0l4-5.6a.5.5 0 0 0-.4-.8ZM20.122 18.151h-16c-.964 0-.934 2.7 0 2.7h16c1.139 0 1.173-2.7 0-2.7zM20.122 3.042h-16c-.964 0-.934 2.7 0 2.7h16c1.139 0 1.173-2.7 0-2.7z"/></svg>');
                            editor.ui.registry.addIcon('togglefold', '<svg height="24"  width="24"><path d="M8.12 19.3c.39.39 1.02.39 1.41 0L12 16.83l2.47 2.47c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41l-3.17-3.17c-.39-.39-1.02-.39-1.41 0l-3.17 3.17c-.4.38-.4 1.02-.01 1.41zm7.76-14.6c-.39-.39-1.02-.39-1.41 0L12 7.17 9.53 4.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.03 0 1.42l3.17 3.17c.39.39 1.02.39 1.41 0l3.17-3.17c.4-.39.4-1.03.01-1.42z"/></svg>');
                            editor.ui.registry.addIcon('togglelabel', '<svg height="18" width="18" viewBox="0 0 24 24"><path d="M21.41,11.41l-8.83-8.83C12.21,2.21,11.7,2,11.17,2H4C2.9,2,2,2.9,2,4v7.17c0,0.53,0.21,1.04,0.59,1.41l8.83,8.83 c0.78,0.78,2.05,0.78,2.83,0l7.17-7.17C22.2,13.46,22.2,12.2,21.41,11.41z M6.5,8C5.67,8,5,7.33,5,6.5S5.67,5,6.5,5S8,5.67,8,6.5 S7.33,8,6.5,8z"/></svg>');
                        
                        
                        Severity: Major
                        Found in resources/js/wysiwyg/plugins-details.js - About 2 hrs to fix

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

                          function defineCodeBlockCustomElement(editor) {
                              const doc = editor.getDoc();
                              const win = doc.defaultView;
                          
                              class CodeBlockElement extends win.HTMLElement {
                          Severity: Minor
                          Found in resources/js/wysiwyg/plugin-codeeditor.js - About 2 hrs to fix

                          Cognitive Complexity

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

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

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

                          Further reading

                          Function register has 68 lines of code (exceeds 25 allowed). Consider refactoring.
                          Open

                          function register(editor) {
                              editor.ui.registry.addIcon('tableclearformatting', '<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 24 24"><path d="M15.53088 4.64727v-.82364c0-.453-.37063-.82363-.82363-.82363H4.82363C4.37063 3 4 3.37064 4 3.82363v3.29454c0 .453.37064.82364.82363.82364h9.88362c.453 0 .82363-.37064.82363-.82364v-.82363h.82364v3.29454H8.11817v7.4127c0 .453.37064.82364.82364.82364h1.64727c.453 0 .82363-.37064.82363-.82364v-5.76544h6.58907V4.64727Z"/><path d="m18.42672 19.51563-1.54687-1.54688-1.54688 1.54688c-.26751.2675-.70124.2675-.96875 0-.26751-.26752-.26751-.70124 0-.96876L15.9111 17l-1.54688-1.54688c-.26751-.2675-.26751-.70123 0-.96875.26751-.2675.70124-.2675.96875 0l1.54688 1.54688 1.54687-1.54688c.26751-.2675.70124-.2675.96875 0 .26751.26752.26751.70124 0 .96875L17.8486 17l1.54687 1.54688c.26751.2675.26751.70123 0 .96874-.26751.26752-.70124.26752-.96875 0z"/></svg>');
                          
                              const tableFirstRowContextSpec = {
                                  items: ' | tablerowheader',
                          Severity: Major
                          Found in resources/js/wysiwyg/plugins-table-additions.js - About 2 hrs to fix

                            Method index has 67 lines of code (exceeds 25 allowed). Consider refactoring.
                            Open

                                public function index(
                                    Request $request,
                                    ActivityQueries $activities,
                                    QueryRecentlyViewed $recentlyViewed,
                                    QueryTopFavourites $topFavourites,
                            Severity: Major
                            Found in app/App/HomeController.php - About 2 hrs to fix

                              Function buildForEditor has 64 lines of code (exceeds 25 allowed). Consider refactoring.
                              Open

                              export function buildForEditor(options) {
                                  // Set language
                                  window.tinymce.addI18n(options.language, options.translationMap);
                              
                                  // BookStack Version
                              Severity: Major
                              Found in resources/js/wysiwyg/config.js - About 2 hrs to fix

                                Method formatTextUsingMatchPositions has 63 lines of code (exceeds 25 allowed). Consider refactoring.
                                Open

                                    protected function formatTextUsingMatchPositions(array $matchPositions, string $originalText, int $targetLength): string
                                    {
                                        $maxEnd = mb_strlen($originalText);
                                        $fetchAll = ($targetLength === 0);
                                        $contextLength = ($fetchAll ? 0 : 32);
                                Severity: Major
                                Found in app/Search/SearchResultsFormatter.php - About 2 hrs to fix

                                  Function formatTextUsingMatchPositions has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                      protected function formatTextUsingMatchPositions(array $matchPositions, string $originalText, int $targetLength): string
                                      {
                                          $maxEnd = mb_strlen($originalText);
                                          $fetchAll = ($targetLength === 0);
                                          $contextLength = ($fetchAll ? 0 : 32);
                                  Severity: Minor
                                  Found in app/Search/SearchResultsFormatter.php - About 2 hrs to fix

                                  Cognitive Complexity

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

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

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

                                  Further reading

                                  File web.php has 267 lines of code (exceeds 250 allowed). Consider refactoring.
                                  Open

                                  <?php
                                  
                                  use BookStack\Access\Controllers as AccessControllers;
                                  use BookStack\Activity\Controllers as ActivityControllers;
                                  use BookStack\Api\ApiDocsController;
                                  Severity: Minor
                                  Found in routes/web.php - About 2 hrs to fix

                                    Function setupListeners has 60 lines of code (exceeds 25 allowed). Consider refactoring.
                                    Open

                                        setupListeners() {
                                            // Filter tab click
                                            onSelect(this.filterTabs, e => {
                                                this.resetAll();
                                                this.filter = e.target.dataset.filter;
                                    Severity: Major
                                    Found in resources/js/components/image-manager.js - About 2 hrs to fix
                                      Severity
                                      Category
                                      Status
                                      Source
                                      Language