idealo/php-rdkafka-ffi

View on GitHub

Showing 38 of 61 total issues

Function enrich has a Cognitive Complexity of 37 (exceeds 5 allowed). Consider refactoring.
Open

    public function enrich($element): void
    {
        foreach ($this->documentedElements as $documentedElement) {
            if (preg_match('/\b' . $element->getName() . '\b/', $documentedElement['name'])) {
                $element->getDocBlock()->addTag(
Severity: Minor
Found in resources/ffigen/LibrdkafkaDocumentation.php - About 5 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 Client.php has 309 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php

declare(strict_types=1);

namespace RdKafka\Admin;
Severity: Minor
Found in src/RdKafka/Admin/Client.php - About 3 hrs to fix

    Method extract has 79 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        public function extract(): void
        {
            echo 'Download and prepare librdkafka documentation ...';
    
            $html = file_get_contents($this->url);
    Severity: Major
    Found in resources/ffigen/LibrdkafkaDocumentation.php - About 3 hrs to fix

      Function generateConstantsFiles has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
      Open

          private function generateConstantsFiles(): void
          {
              $versionRelatedConstants = [];
              $overAllConstants = [];
              /** @var Constant[] $constants */
      Severity: Minor
      Found in resources/ffigen/MultiVersionGenerator.php - About 3 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

      Client has 24 functions (exceeds 20 allowed). Consider refactoring.
      Open

      class Client
      {
          private RdKafka $kafka;
          private int $waitForResultEventTimeoutMs = 50;
      
      
      Severity: Minor
      Found in src/RdKafka/Admin/Client.php - About 2 hrs to fix

        Method prepareFileContent has 64 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            private function prepareFileContent(string $file, string $content, string $version): string
            {
                if (strpos($file, 'rdkafka.h') !== false) {
                    // prefilter header file content - not supported by cparser
                    $content = preg_replace_callback(
        Severity: Major
        Found in resources/ffigen/LibrdkafkaHeaderFiles.php - About 2 hrs to fix

          Method producev has 39 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              public function producev(
                  int $partition,
                  int $msgflags,
                  ?string $payload = null,
                  ?string $key = null,
          Severity: Minor
          Found in src/RdKafka/ProducerTopic.php - About 1 hr to fix

            Method enrich has 39 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                public function enrich($element): void
                {
                    foreach ($this->documentedElements as $documentedElement) {
                        if (preg_match('/\b' . $element->getName() . '\b/', $documentedElement['name'])) {
                            $element->getDocBlock()->addTag(
            Severity: Minor
            Found in resources/ffigen/LibrdkafkaDocumentation.php - About 1 hr to fix

              Method parseHeaders has 36 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  private function parseHeaders(CData $nativeMessage): array
                  {
                      $headers = [];
              
                      if ($nativeMessage->err !== RD_KAFKA_RESP_ERR_NO_ERROR) {
              Severity: Minor
              Found in src/RdKafka/Message.php - About 1 hr to fix

                Method generateConstantsFiles has 34 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    private function generateConstantsFiles(): void
                    {
                        $versionRelatedConstants = [];
                        $overAllConstants = [];
                        /** @var Constant[] $constants */
                Severity: Minor
                Found in resources/ffigen/MultiVersionGenerator.php - About 1 hr to fix

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

                      private function loadSupportedVersions(): array
                      {
                          echo 'Load librdkafka releases ...';
                  
                          $content = file_get_contents(
                  Severity: Minor
                  Found in resources/ffigen/LibrdkafkaHeaderFiles.php - About 1 hr to fix

                    Method __construct has 32 lines of code (exceeds 25 allowed). Consider refactoring.
                    Open

                        public function __construct(CData $nativeMessage)
                        {
                            $timestampType = Library::new('rd_kafka_timestamp_type_t');
                            $this->timestamp = (int) Library::rd_kafka_message_timestamp($nativeMessage, FFI::addr($timestampType));
                            $this->timestampType = (int) $timestampType->cdata;
                    Severity: Minor
                    Found in src/RdKafka/Message.php - About 1 hr to fix

                      Method setPartitioner has 30 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                          public function setPartitioner(int $partitioner): void
                          {
                              switch ($partitioner) {
                                  case RD_KAFKA_MSG_PARTITIONER_RANDOM:
                                      $partitionerMethod = 'rd_kafka_msg_partitioner_random';
                      Severity: Minor
                      Found in src/RdKafka/TopicConf.php - About 1 hr to fix

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

                            public function setReplicaAssignment(int $new_partition_id, array $broker_ids): void
                            {
                                if (empty($broker_ids) === true) {
                                    throw new \InvalidArgumentException('broker_ids array must not be empty');
                                }
                        Severity: Minor
                        Found in src/RdKafka/Admin/NewPartitions.php - About 1 hr to fix

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

                              public function setReplicaAssignment(int $partition_id, array $broker_ids): void
                              {
                                  if (empty($broker_ids) === true) {
                                      throw new \InvalidArgumentException('broker_ids array must not be empty');
                                  }
                          Severity: Minor
                          Found in src/RdKafka/Admin/NewTopic.php - About 1 hr to fix

                            Function parseHeaders has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                            Open

                                private function parseHeaders(CData $nativeMessage): array
                                {
                                    $headers = [];
                            
                                    if ($nativeMessage->err !== RD_KAFKA_RESP_ERR_NO_ERROR) {
                            Severity: Minor
                            Found in src/RdKafka/Message.php - 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 benchProduce100MessagesWithLogAndDrMsgCallbacksWithOpaque has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                            Open

                                public function benchProduce100MessagesWithLogAndDrMsgCallbacksWithOpaque(): void
                                {
                                    $counter = new stdClass();
                                    $counter->count = 0;
                            
                            
                            Severity: Minor
                            Found in benchmarks/ProducerBench.php - About 1 hr to fix

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

                                  private function parse(string $version): void
                                  {
                                      echo '  Parse ...' . PHP_EOL;
                                      $parser = new Parser($this->config);
                              
                              
                              Severity: Minor
                              Found in resources/ffigen/MultiVersionGenerator.php - About 1 hr to fix

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

                                    public function benchConsume100MessagesWithLogCallback(): void
                                    {
                                        $conf = new Conf();
                                        $conf->set('metadata.broker.list', 'kafka:9092');
                                        $conf->set('auto.offset.reset', 'earliest');
                                Severity: Minor
                                Found in benchmarks/ConsumerBench.php - About 1 hr to fix

                                  Function setPartitioner has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                      public function setPartitioner(int $partitioner): void
                                      {
                                          switch ($partitioner) {
                                              case RD_KAFKA_MSG_PARTITIONER_RANDOM:
                                                  $partitionerMethod = 'rd_kafka_msg_partitioner_random';
                                  Severity: Minor
                                  Found in src/RdKafka/TopicConf.php - 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

                                  Severity
                                  Category
                                  Status
                                  Source
                                  Language