# Plugin-Release: statische Code analyse

**URL:** <https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853>\
**Category:** Programmierung\
**Created:** [4. August 2019 um 21:55 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853 "2019-08-04T21:55:57Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![oli2](https://avatars.discourse-cdn.com/v4/letter/o/bbce88/32.png) [@oli2](https://forum.shopware.com/u/oli2)\
**Post date:** [4. August 2019 um 21:55 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/1 "2019-08-04T21:55:57Z")

</div>

Die statische Code-Analyse meines Plugins schlägt fehl:

```
A not allowed file or folder was found, Context: [expected namespace: composer.json/, found namespace: src/]
the required composer.json file was not found
the required composer.json file was not found

Warnings:
Warnings of the static code analysis:
------ ------------------------------------------------------------------ 
  Line src/Subscriber/StoreFront.php                                     
 ------ ------------------------------------------------------------------ 
  36 Class Shopware\Storefront\Event\StorefrontRenderEvent not found.  
 ------ ------------------------------------------------------------------ 

 [ERROR] Found 1 error   

```

Zur composer.json: Ist vorhanden.

Bei den Warnings meckert er, dass das die Klasse nicht gefunden wurde, was geht hier schief? Meine StoreFront Klasse sieht in etwa so aus:

```
use Shopware\Storefront\Event\StorefrontRenderEvent;

class StoreFront implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return [
            StorefrontRenderEvent::class => 'onStorefrontRender',
        ];
    }

```

Funktionieren tut das Plugin ebenfalls einwandfrei.

---

<div class="post-metadata">

**Author:** ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)\
**Post date:** [5. August 2019 um 05:32 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/2 "2019-08-05T05:32:59Z")

</div>

1. Die composer.json muss ins Hauptverzeichnis, nicht in src/

2. Du musst namespaces verwenden in deinem Plugin. namspace DeinPlugin/Storefront;

&nbsp;

VG

---

<div class="post-metadata">

**Author:** ![oli2](https://avatars.discourse-cdn.com/v4/letter/o/bbce88/32.png) [@oli2](https://forum.shopware.com/u/oli2)\
**Post date:** [5. August 2019 um 05:51 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/3 "2019-08-05T05:51:34Z")

</div>

1. check

2. check

ohne diese Vorraussetzungen wäre das Plugin ja gar nicht lauffähig -&nbsp;habe lediglich den augescheinlich relevanten Teil der Datei gepostet

---

<div class="post-metadata">

**Author:** ![kilb\_software](https://avatars.discourse-cdn.com/v4/letter/k/9d8465/32.png) [@kilb\_software](https://forum.shopware.com/u/kilb_software)\
**Post date:** [18. August 2019 um 16:31 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/4 "2019-08-18T16:31:49Z")

</div>

Ich kann den Fehler reproduzieren, ich erhalte beim Upload eines SW 6 Plugins ebenfalls die Fehlermeldung:

```
A not allowed file or folder was found, Context: [expected namespace: composer.json/, found namespace: src/]
the required composer.json file was not found
the required composer.json file was not found

```

Ich vermute einen Fehler in der statischen Code-Überprüfung.

---

<div class="post-metadata">

**Author:** ![Jens\_K](https://avatars.discourse-cdn.com/v4/letter/j/c67d28/32.png) [@Jens\_K](https://forum.shopware.com/u/Jens_K)\
**Post date:** [19. August 2019 um 05:31 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/5 "2019-08-19T05:31:07Z")

</div>

Moin!

Könntet ihr einmal den Inhalt eurer composer.json und euer Plugin Bootstrap Datei hier posten?

---

<div class="post-metadata">

**Author:** ![oli2](https://avatars.discourse-cdn.com/v4/letter/o/bbce88/32.png) [@oli2](https://forum.shopware.com/u/oli2)\
**Post date:** [29. August 2019 um 21:19 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/6 "2019-08-29T21:19:17Z")

</div>

Ich habs rausgefunden, folgendermaßen klappt es:

./custom/plugins/{technischerName}/composer.json - Auszug der relevanten Direktiven darin:

```
{
  "extra": {
    "shopware-plugin-class": "{technischerName}\\{technischerName}",
  },
  "autoload": {
    "psr-4": {
      "{technischerName}\\": "src/"
    }
  }
}

```

/custom/plugins/{technischerName}/src/{technischerName}.php

Dann klappts auch mit der statischen Code-Analyse 🙂

---

<div class="post-metadata">

**Author:** ![kilb\_software](https://avatars.discourse-cdn.com/v4/letter/k/9d8465/32.png) [@kilb\_software](https://forum.shopware.com/u/kilb_software)\
**Post date:** [11. September 2019 um 18:07 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/7 "2019-09-11T18:07:58Z")

</div>

@oli\_ das heißt, ohne dem Herstellernamen als Teil des Namespaces funktioniert es? Laut Doku soll dieser aber enthalten sein.

---

<div class="post-metadata">

**Author:** ![kilb\_software](https://avatars.discourse-cdn.com/v4/letter/k/9d8465/32.png) [@kilb\_software](https://forum.shopware.com/u/kilb_software)\
**Post date:** [11. September 2019 um 18:11 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/8 "2019-09-11T18:11:36Z")

</div>

@Jens_K: ich werde bei Gelegenheit mal ein einfaches Beispiel vorbereiten.

---

<div class="post-metadata">

**Author:** ![oli2](https://avatars.discourse-cdn.com/v4/letter/o/bbce88/32.png) [@oli2](https://forum.shopware.com/u/oli2)\
**Post date:** [16. September 2019 um 15:09 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/9 "2019-09-16T15:09:10Z")

</div>

@kilb\_software‍ der Herstellername ist in meinem Fall im technischen Namen und damit auch im Namespace enthalten.

---

<div class="post-metadata">

**Author:** ![kilb\_software](https://avatars.discourse-cdn.com/v4/letter/k/9d8465/32.png) [@kilb\_software](https://forum.shopware.com/u/kilb_software)\
**Post date:** [1. Oktober 2019 um 14:21 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/10 "2019-10-01T14:21:01Z")

</div>

@oli\_‍ Laut Dokumentation sollte aber Herstellername und Technischer Name getrennt sein, im Beispiel:

=\> Der technische Name lautet “BaseClass”, nicht “SwagBaseClass”. Andernfalls wäre es auch redundant, weil im gesamten Namespace der Herstellername zwei mal erscheinen würde. Den Herstellernamen als Teil des Namespaces zu entfernen und dem Teil des technischen Namen hinzuzufügen - so wie es bei Shopware 5 war -&nbsp;dürfte doch eigentlich nicht richtig sein, weil dei Dokumentation klar etwas anderes aussagt. Es wundert mich, dass es für Dich funktioniert. Vielleicht ist für die Shopware 6 Plugins noch die statische Code-Analyse für Shopware 5 (zum Teil) aktiv?

Ich habe mal ein Beispiel-Plugin hochgeladen, bei dem der Fehler auftritt:

[https://www.dropbox.com/s/qzqkbacxw2y5tca/TestPlugin.zip?dl=0](https://www.dropbox.com/s/qzqkbacxw2y5tca/TestPlugin.zip?dl=0)

@Jens\_K‍ vielleich kannst Du ja mal drauf schauen? Vielleicht übersehe ich auch etwas?

&nbsp;

&nbsp;

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![kilb\_software](https://avatars.discourse-cdn.com/v4/letter/k/9d8465/32.png) [@kilb\_software](https://forum.shopware.com/u/kilb_software)\
**Post date:** [2. Oktober 2019 um 11:00 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/11 "2019-10-02T11:00:34Z")

</div>

Ich habe mir die Sache noch einmal angeschaut.  
Wenn ein neues Plugin im Herstellerbereich angelegt wird, muss ein „Technischer Name“ eingetragen werden.&nbsp;

Das erste Level in der hochzuladenden ZIP-File muss ein Verzeichnis sein, das diesem Technischen Namen entspricht. Entsprechend muss der Namespace und der Bootstrap-Klassename heißen. @oli\_‍ liegt also damit richtig, dass der Herstellername der beginnende Teil des technischen Pluginnamens ist - weil die Oberfläche in Shopware aktuell nicht erlaubt, einen technischen Namen ohne Hersteller-Prefix festzulegen . Trotzdem funktioniert es, wenn der Herstellername als weiterer Teil des Namespaces bestehen bleibt.&nbsp;

Hier ein funktionierendes Beispiel:  
[https://www.dropbox.com/s/zm0k1825ysh6q58/KilbTestPlugin\_working.zip?dl=0](https://www.dropbox.com/s/zm0k1825ysh6q58/KilbTestPlugin_working.zip?dl=0)

Um die ZIP-Datei zu bauen, lege ich im Verzeichnis des Plugins parallel zum src-Verzeichnis und zur composer.json ein build.sh-Script mit folgendem Inhalt an:

```
#!/usr/bin/env bash
rm -f KilbTestPlugin.zip &&
cd .. &&
zip -9 -r KilbTestPlugin.zip ./KilbTestPlugin \
    -x "*.git*" \
       "*.idea*" \
       "*.DS_Store*" \
       "*build.sh" &&
mv KilbTestPlugin.zip KilbTestPlugin/

```

@Jens_K eventuell wäre es hilfreich, wenn in der Dokumentation

- noch einmal darauf hingewiesen wird, dass der Plugin-Code in der Zip in einem Verzeichnis mit dem technischen Pluginname als Namen liegen muss

und

- auf das Herstellerprefix im technischen Namen eingegangen wird (also „Swag/SwagBaseClass“ statt "Swag/BaseClass)  
oder
- der Herstellername nicht mehr als Prefix für Shopware 6-Plugins vorausgesetzt wird.

---

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [21. Oktober 2019 um 11:21 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/12 "2019-10-21T11:21:31Z")

</div>

Was ist eigentlich aus der Ausgangsfrage geworden?

Warum zeigt die statische Code-Analyse für das StorefrontRenderEvent einen Fehler an?

---

<div class="post-metadata">

**Author:** ![flix](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/flix/32/13441_2.png) [@flix](https://forum.shopware.com/u/flix)\
**Post date:** [26. November 2019 um 22:12 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/13 "2019-11-26T22:12:46Z")

</div>

> [@zenit schrieb:](https://forum.shopware.com/profile/22455/zenit "zenit")
> 
> Was ist eigentlich aus der Ausgangsfrage geworden?
> 
> Warum zeigt die statische Code-Analyse für das StorefrontRenderEvent einen Fehler an?

Ich habe das gleiche Problem. Hat jemand eine Lösung gefunden?&nbsp;

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [2. Dezember 2019 um 16:08 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/14 "2019-12-02T16:08:10Z")

</div>

Die Code-Analyse bemängelt bei mir nach wie vor alle Parameter in Subscribern (das diese angeblich nicht existieren).  
Ich hatte das dem Account-Team genannt mit der Antwort, dass die Code-Analyse noch fehlerhaft ist. Dementsprechend ignoriere ich die Meldungen, weil diese faktisch falsch sind.

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [2. Dezember 2019 um 16:55 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/15 "2019-12-02T16:55:53Z")

</div>

Der häufigste Fehler, dass vergessen wird shopware/storefront zu requiren wenn man Storefront sachen benutzt.

@TeichDatensysteme‍ kannst du mir mal via PN den Fehler + Plugin Namen (technischen) sagen

---

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [5. Dezember 2019 um 16:50 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/16 "2019-12-05T16:50:45Z")

</div>

Hi @Shyim‍&nbsp;

kannst Du das ein wenig genauer erläutern? Hier ein verinfachtes Beispiel. Fehlt da was?&nbsp;

&nbsp;

```
 'onStorefrontRender'
		];
	}

    /**
     * @param StorefrontRenderEvent $event
     */
	public function onStorefrontRender(StorefrontRenderEvent $event)
	{
        // foo
	}
}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [6. Dezember 2019 um 08:15 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/17 "2019-12-06T08:15:46Z")

</div>

Hast du shopware/storefront required?

---

<div class="post-metadata">

**Author:** ![zenit](https://avatars.discourse-cdn.com/v4/letter/z/a87d85/32.png) [@zenit](https://forum.shopware.com/u/zenit)\
**Post date:** [6. Dezember 2019 um 11:19 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/18 "2019-12-06T11:19:17Z")

</div>

@Shyim‍

achsooo Du meinst in der composer.json ![Sticking-out-tongue](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/sticking-out-tongue.png "Sticking-out-tongue")&nbsp;  
&nbsp;

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [6. Dezember 2019 um 12:31 UTC](https://forum.shopware.com/t/plugin-release-statische-code-analyse/60853/19 "2019-12-06T12:31:46Z")

</div>

Genau
