コードをチェックして改善するためのPHPコード品質ツール

by tobiniumu
0 comment


それらは、同僚の開発者であるDaveによってコーディングされました。

クラスは、フォーマットエラー、不十分なインデント、および奇妙な1文字の変数でいっぱいです。 肥大化したコンストラクターを回避するには、数分間下にスクロールする必要がある依存関係がたくさんあります。

シャッキング、ユニットテストを開いて、それがどのように機能するかを理解します…しかし、それらは存在しません。 ホラーと不幸!

あなたはデイブにあなたの机に来るように頼むことができ、あなたがそのようなくだらないコードをどこにも見たことがないことを彼に叫び、彼と彼の家族を何世代にもわたって呪いました。

しかし、あなたはとても敬意を表する人間なので、それは良い解決策ではないことを知っています。 非難する代わりに教えることは常により良い結果をもたらします。

禅僧にふさわしい落ち着きを持って、最初にデイブの助けを借りて上司を狂わせるバグを修正します。 次に、チームにいくつかのコード品質ツールを導入することにしました。

読者の皆様には良いアプローチがあります。コード品質ツールは、堅実でエラーのないPHPコードを作成するために不可欠です。 これは、同僚がコードベースの欠陥を検出し、いくつかの重要な概念を教えるのに役立ちます。

ただし、アドバイスや提供できるデータがどこでも適切であるとは限らないことを忘れないでください。 多くの場合、それはコンテキストに大きく依存します:コードベースは大きいですか? 一部の関数で循環的複雑度が高い理由はありますか?

この記事にすでに飽きていて、単純なPHPツールのリストを見たいだけの場合は、最後にあるリファレンスリストに直接アクセスできます。

飛び込む前の最後のこと:この記事で紹介するツールは、コードを分析またはフォーマットします。 テストについては話しません。

[Read: 3 concrete steps to learning a programming language]

ここで説明するツールをインストールするには、常に複数の方法があります。

私の個人的な好みは、を使用して作曲家のグローバルパッケージインストールを使用することです cgr グローバルスコープへの依存関係の問題を回避するため。

あなたも使用することができます PHAR ほとんどの場合、フォーマット。

各ツールのドキュメントを参照して、可能な限りのインストール方法を確認できます。

あなたのターミナルで

すべてのツールはターミナルで使用できます。 ほとんどの場合、コードベースのパスを引数として渡す必要があります。 この記事では、すべてのツールについてこのプロセスについて説明します。

プロジェクトのメインフォルダからツールを呼び出すことをお勧めします。 すべての例では、コードベースがフォルダー内にあることを前提としています src

Vim / Neovimで

必要なすべてのツールをVimで簡単に構成し、開いているファイルを解析させることができます。

プラグイン付き ネオメイク PHPMD、PHPSTAN、PHPCSをVimに簡単に接続できます。 側溝の警告とエラーに表示されます。 とても便利な!

独自のメーカーを作成して、必要なすべてのPHPコード品質ツールを使用することもできます。 参考までに、 neomake設定ファイル

PHPStormで

以来 PhpStormはもう使用していません、IDEにこれらのツールをインストールする方法については説明しません。

それにもかかわらず、ここにJetbrainのドキュメントへのいくつかの手軽なリンクがあります:

次のプラグインがないと、コードを記述できません。 彼らはあなたのコードを適切にフォーマットし、あなたに貴重なアドバイスを与えます。

PHP-CS-Fixer(PHPコーディング標準フィクサー)

長い会議、憎悪行動、殺人の衝動の原因から始めましょう:コードフォーマットルール。 の良い例 パーキンソンの凡例の法則

個人的には、コードのフォーマットに関して好みはありません。 私が気にしているのは 一貫性がある 1:

  • 読みやすい
  • それはより重要な質問のためにあなたの心を解放します

PHP-CS-fixerは、コードを自動的にフォーマットできるシンプルなツールです。 デフォルトでは、 PSR-1 そして PSR-2 ルールが使用されますが、独自のフォーマットルールを定義できます。

次のコマンドを使用して、コードベース全体をフォーマットできます。

$ php-cs-fixer fix src/

適用せずに変更をプレビューする可能性もあります(--diff オプション)またはルールを正確にすることができます(--rules オプション)使用したい。

PHPCS(PHP CodeSniffer)

PHP CodeSnifferは、コードベースにあるコーディング標準違反を出力するための非常に優れたツールです。 2つのコマンドラインスクリプトを使用できます。 phpcs 実際のコーディング標準の欠陥と、いくつかのエラーを修正できるphpcbfを出力します。

たとえば、次のように入力できます。

$ phpcs src/

出力は次のようになります。

FILE: /home/superCoolUser/mySuperProject/src/Model/SuperModel.php
------------------------------------------------------------------------------------------
FOUND 6 ERRORS AND 1 WARNINGS AFFECTING 7 LINES
------------------------------------------------------------------------------------------
  2 | ERROR   | [ ] Missing file doc comment
 14 | ERROR   | [ ] Missing @category tag in class comment
 20 | ERROR   | [ ] Missing doc comment for function __construct()
 34 | WARNING | [ ] Line exceeds 85 characters; contains 93 characters
 57 | ERROR   | [x] Opening parenthesis of a multi-line function call must be the last content on the line
 60 | ERROR   | [ ] Expected "if (...) {n"; found "if(...) {n"
 63 | ERROR   | [x] Closing parenthesis of a multi-line function call must be on a line by itself
----------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------------

ご覧のとおり、phpcbfは次のように入力することで2つのエラーを自動的に修正できます。

$ phpcbf src/Model/SuperModel.php

PHP Code Snifferに付属のデフォルトのコーディング標準を使用することも、独自の標準を簡単に実装することもできます。

PHPMD(PHP Mess Detector)

PHPMDは、アプリケーションで発生する可能性のある言語のバグと誤用を表示します。

ここで魔法を行う方法:

$ phpmd src/ text cleancode

PHPMDは、プロジェクトのディレクトリとサブディレクトリをスキャンし、見つかったエラーをプレーンテキストで出力します。 を作成することもできます html または xml を置き換えることによる出力 text 上記のコマンドラインのオプション。

この例では、 cleancode ルールセットですが、明らかに変更したり、独自に作成したりできます。

エラーをファイルに出力しますか? 簡単:

$ phpmd src/ html cleancode --reportfile ~/phpmd.html

選択した場合 xml 出力として、次のようなルールセットに関する詳細情報が表示されます。

  <file name="/home/mySuperUser/mySuperProject/src/randomClass.php">
    <violation beginline="61" endline="61" rule="BooleanArgumentFlag" ruleset="Clean Code Rules" externalInfoUrl="http://phpmd.org/rules/cleancode.html#booleanargumentflag" priority="1">
      The method notThatCoolMethod has a boolean flag argument $badBoolean, which is a certain sign of a Single Responsibility Principle violation.
    </violation>
    <violation beginline="102" endline="104" rule="ElseExpression" ruleset="Clean Code Rules" externalInfoUrl="http://phpmd.org/rules/cleancode.html#elseexpression" priority="1">
      The method superMethod uses an else expression. Else is never necessary and you can simplify the code to work without else.
    </violation>
  </file>

たとえば、違反したルールの優先度を確認できます。 次に、を使用して結果を絞り込むことができます。 --minimumpriority たとえばオプション。

つまり、PHPMDは、使用することを強くお勧めする優れたツールです。 コード内の多くの潜在的な問題を検出し、デバッグの時間を節約します。

あなたの上司はとても幸せになり、あなたの給料を200%増やします。 保証付き。

PHPStan(PHP静的分析ツール)

PHPStanは、ツールボックスに含めるもう1つのツールです。 狙っていますか? コンパイルされた言語のような出力エラーは、コンパイル中に表示されます。 これはPHPMDを補完するものです。

次のように実行できます。

$ phpstan analyse src/ --level=7

レベルオプションを使用して、PHPStanの厳密さを正確に指定できます。 最小値は level 0、 最大 level 7

ここであなたにアイデアを与えるために、出力の例:

 ------ -----------------------------------------------------------------------
  Line   src/MySuperModels/RandomModel
 ------ -----------------------------------------------------------------------
  78     Instantiated class AppServiceApiInvalidArgumentException not found.
  82     Instantiated class AppServiceApiInvalidArgumentException not found.
  93     Method AppServiceApiClientClientInterface::post() invoked with 3 parameters, 4 required.
  103    Casting to string something that's already string.
 ------ -----------------------------------------------------------------------

他のツールと同様に、独自のルールを作成できます。

PHPUnitとCRAPメトリック

この記事は単体テストに関するものではありません。 コードの単体テストは、この記事にあるものよりもはるかに重要であることをご存知だと思います。

PHPUnitは、非常に興味深い情報を表示することもできます。 くだらない メトリック。

CRAPは 循環的複雑度 コードのコードカバレッジを使用して、アプリケーションで変更するのが難しいコードを表示します。

CRAPインデックスが高いほど、コードは「くだらない」と見なされます。

実際、コードの複雑さが非常に高いがコードカバレッジが低い場合は、コードを変更するたびに不幸なバグが発生することが予想されます。 上司があなたに怒鳴るまで、あなたは気付かないでしょう。 同僚の開発者であるデイブが、あなたの恥の陰で彼が輝くようにあなたをさらに押し下げようとしていることを期待してください。

CRAPメトリックを表示するには、コードカバレッジレポートを作成する必要があります。

$ phpunit phpunit --coverage-html ./tempFolder

これにより、HTMLファイルが作成されます。 tempFolder ディレクトリ。 あなたは開くことができます index.html そこにあり、ダッシュボードのリンクをクリックして、最終的にCRAPインジケーターを検討します。

がらくたメトリックCRAPの中心への旅

ただし、覚えておいてください。コードカバレッジは、コードが十分にテストされていることを意味するわけではありません。 これは、別の記事のために保持するまったく異なるトピックです。

PHPコードをより深くチェックする

次のツールを使用して、作業しているプロジェクトが正しい方向に進んでいることを確認します。 彼らは全体像を見るのを手伝うことができます。

未知の(レガシー)アプリケーションで作業する必要がある場合、彼らは実際の救世主になることもできます。 それらはリファクタリングに非常に役立ちます。

PhpLoc

PhpLocは、プロジェクトのサイズを把握するための非常に優れたツールです。

コードベースで実行できます。

$ phploc src

これは次のようなものを出力します:

Size
  Lines of Code (LOC)                               61
  Comment Lines of Code (CLOC)                       0 (0.00%)
  Non-Comment Lines of Code (NCLOC)                 61 (100.00%)
  Logical Lines of Code (LLOC)                      23 (37.70%)
    Classes                                         17 (73.91%)
      Average Class Length                          17
        Minimum Class Length                        17
        Maximum Class Length                        17
      Average Method Length                          3
        Minimum Method Length                        1
        Maximum Method Length                        7
    Functions                                        0 (0.00%)
      Average Function Length                        0
    Not in classes or functions                      6 (26.09%)

Cyclomatic Complexity
  Average Complexity per LLOC                     0.26
  Average Complexity per Class                    7.00
    Minimum Class Complexity                      7.00
    Maximum Class Complexity                      7.00
  Average Complexity per Method                   2.20
    Minimum Method Complexity                     1.00
    Maximum Method Complexity                     4.00

Dependencies
  Global Accesses                                    0
    Global Constants                                 0 (0.00%)
    Global Variables                                 0 (0.00%)
    Super-Global Variables                           0 (0.00%)
  Attribute Accesses                                 7
    Non-Static                                       7 (100.00%)
    Static                                           0 (0.00%)
  Method Calls                                      14
    Non-Static                                      14 (100.00%)
    Static                                           0 (0.00%)

Structure
  Namespaces                                         1
  Interfaces                                         0
  Traits                                             0
  Classes                                            1
    Abstract Classes                                 0 (0.00%)
    Concrete Classes                                 1 (100.00%)
  Methods                                            5
    Scope
      Non-Static Methods                             5 (100.00%)
      Static Methods                                 0 (0.00%)
    Visibility
      Public Methods                                 3 (60.00%)
      Non-Public Methods                             2 (40.00%)
  Functions                                          0
    Named Functions                                  0 (0.00%)
    Anonymous Functions                              0 (0.00%)
  Constants                                          1
    Global Constants                                 0 (0.00%)
    Class Constants                                  1 (100.00%)


これらのデータは、プロジェクトに関するいくつかの手がかりをすでに与えてくれます。

  • Comment lines of code 決して良いことではありません。 何も考えずにそれを取り除きます。
  • 高すぎる Average Class length 通常はどちらも良くありません。 分割する 神のクラス
  • 高すぎる Average Method length 再び良くありません。 同僚の袋のために、それらを分割します。
  • Cyclomatic complexity すべてのビットを示すことができます。 のようなものを信頼する くだらない 賢いかもしれません。
  • 不要なものは避けてください Dependencies。 それを忘れないでください globals accesses, constants and variables できる あなたに多くの問題をもたらします
  • 避ける abstract classes 可能な限り:継承よりも構成を覚えておいてください。

一言で言えば:非常にシンプルで価値のあるツール。

PHPの洞察

PHP Insightは、コードの品質を向上させるための多くのアドバイスを提供する、非常に優れた静的アナライザーです。

次のように使用できます。

phpinsights analyse ./src

まず、コードベースの概要を簡単に説明します。

PHPInsightの最初の画面

次に、それはあなたに多くのアドバイスを提供します:

PHPInsightの2番目の画面

これは本当に便利なツールです。 出力をフォーマットすることもできます(JSON たとえば)または独自のルールを作成することもできます!

PHPCPD(PHPコピー過去の検出器)

PHPCPDはコードベースをスキャンし、複製されたコードを出力します。

次のように入力して使用できます。

$ phpcpd src/

PHPCPDは、次のような出力を生成します。

phpcpd 4.0.0 by Sebastian Bergmann.

Found 1 clones with 44 duplicated lines in 2 files:

  - /home/superUser/src/superFile.php:11-55
    /home/superUser/src/superFolder/superFile.php:11-55

5.04% duplicated lines out of 873 total lines of code.

Time: 29 ms, Memory: 4.00MB

ディレクトリ全体ではなく複数のファイルを含めたり、一部のファイル(またはパス)を除外したり、結果をXMLファイルで出力したりすることもできます。

ただし、次の点に注意してください。コードベースでDRY原則違反ハンティングを行う場合は、次の点に注意してください。 コードの重複は必ずしもDRY違反を意味するわけではありません

PHPMND(PHPマジックナンバー検出器)

このツールはかなり具体的です:それはあなたが見つけるのを助けることができます マジックナンバー あなたのコードで。

それを使用する最も簡単な方法:

$ phpmnd src/

ここに出力があります:

--------------------------------------------------------------------------------

httpClient/myHttpClient.php:98. Magic number: 200
  > 98|         if ($response->getStatusCode() != 200) {

--------------------------------------------------------------------------------

service/superClass.php:47. Magic number: 8
  > 47|         for ($i = 0; $i < 8; $i++) {

--------------------------------------------------------------------------------


数字を無視したり、ファイル/パス/拡張子を除外したりするなど、さまざまなオプションを試すことができます…

dePHPend

この悪夢をどのように理解するのか疑問に思って、不要な依存関係に満ちたプロジェクトに取り組んだことはありますか? あなたの素晴らしいプロジェクトが複雑な大きな泥だんごに変化していないかどうかを確認しますか?

dePHPendは、その問題について大いに役立ちます。

次のように使用できます。

$ dephpend metrics src/

この出力は魔法のように表示されます。

dephpend出力の例

ご覧のとおり、dePHPendは次の数を出力します 求心性結合、の数 効率的な結合 それらに基づいて不安定性インジケータを表示します。

明確に:

  • クラスに依存するクラスはありません AppKernel
  • クラス AppKernel 他の5つのクラスに依存

ここでは不安定性スコアが高くなっています。このクラスは他のクラスを結合しますが、使用されることはありません。

たとえば、プレーンテキストやUMLを出力することもできます。

チャーン-php

churn-phpは、リファクタリングする必要のあるクラスを表示します。 循環的複雑度 クラスのコミット数。

これは非常に興味深いアプローチです。 頻繁に変更される非常に複雑なクラスは、実際にバグを引き起こす可能性が高くなります。

他のツールと同様に、使用するのは非常に簡単です。

$ churn run src/

ここに結果があります:

+-------------------------------------------+---------------+------------+-------+
| File                                      | Times Changed | Complexity | Score |
+-------------------------------------------+---------------+------------+-------+
| src/Service/classToRefactor.php           | 12            | 8          | 0.441 |
| src/Service/anotherClass.php              | 3             | 15         | 0.185 |
+-------------------------------------------+---------------+------------+-------+

スコアが高いほど、リファクタリングの必要性が高くなります。

PhpCodeFixer

非推奨の関数は悪いです。 それらは、デバッグが難しい非常に奇妙なバグを作成する可能性があります。 このツールは、光沢のあるアプリケーションでそれらを検出するのに役立ちます。 使用するPHPのバージョンとメインのコードベースディレクトリは、次のように正確に指定できます。

$ phpcf --target 7.1 src

そしてここに通常の可能な出力:

phpcf出力

PhpMetrics

最後になりましたが、メトリックが好きな場合は、PhpMetricsが毎日の修正になります。 出力します たくさん あなたのプロジェクトに関する測定基準の。

次のように入力する必要があります。

$ phpmetrics --report-html=myreport.html src/

HTML出力は、図と数字でいっぱいになります。

ここで、メトリックは必ずしも絶対的な真実ではなく、プロジェクトによって異なることに注意してください。 このツールが出力できるすべてのことをここで説明することはしません。おそらく将来の記事で説明しますか?

私の経験は私にそれを示しました ソフトウェアエントロピー 本物です。 アプリケーションを変更すればするほど、アプリケーションが破損する可能性が高くなります。 アプリケーションは必然的により複雑になります。

これらのPHPコード品質ツールは、その点で間違いなく役立ちます。 コードベースはますますバグが多いため、リファクタリングが必要であり、これらのツールはどこから始めればよいかを示してくれます。 毎日、コードベースを正常に保つために注意が必要なこれらすべての小さなことについて、彼らはあなたに良いアドバイスを与えることができます。

ただし、覚えておいてください:彼らは良いです 補完しますが、堅実なテストスイートの代わりにはなりません、良い単体テストから始めます。

ここで説明されているツール以外のツールを使用していますか? 使い方は違いますか? あなたの経験を共有することによってコミュニティを助けることを躊躇しないでください。


この記事はによって書かれました マシュー・クヌード もともとはに公開されました 貴重な開発者、ソフトウェア開発における重要で時代を超越した概念に焦点を当てたブログ。 あなたは作品を読むことができます ここに

次を読む:

SyncPenでデジタルノート取りが一歩前進



Source link

GEARBRST特価情報(9/2更新)

世界一の価格とクオリティでAliexpressに迫るGEARBEST。
おすすめ商品とクーポンを、できるだけ毎日ご紹介しています。
選ばれたサイトのみが紹介できる限定クーポン、お見逃しのないよう…

商品名倉庫クーポンコードクーポン価格(円)限定回数終了日備考
Xiaomi Redmi 9 6.53 inch 4G Smartphone NFC Global Version – Green 4GB+64GB (NFC Version)HK
3HYP128UMA14104円509月30日3%-5%
Xiaomi Redmi Note 9 Pro 4G Smartphone Snapdragon 720G Octa Core 2.3GHz 6.67 inch 64MP + 8MP + 5MP + 2MP Camera 5020mAh Battery Global Version – White 6GB+128GBHK
HA7TH3X6J326147円502月28日3%-5%
Xiaomi Redmi 9C 4G Smartphone 6.53 inch Media Tek Helio G35 2.3GHz Octa-core 13MP AI Triple Camera 5000mAh Battery Global Version – Gray 2GB+32GBHK
フラッシュセール13019円509月14日3%-5%
DOOGEE N20 Mobilephone Fingerprint 6.3inch FHD Display 16MP Triple Back Camera – Purple Hong KongCN
フラッシュセール13019円509月14日3%-5%
DOOGEE N20 Pro Quad Camera Mobile Phones Helio P60 Octa Core 6GB RAM 128GB ROM Global Version – Space GrayCN
フラッシュセール17359円509月14日3%-5%
Ulefone Power 6 4G Smartphone 6350mAh Battery – Black EU VersionHK
GBULEF7E11113019円509月30日3%-5%
DOOGEE S40 Rugged Mobile Phone 5.5inch 4650mAh MT6739 Quad Core 3GB 32GB Android 9.0 8.0MP IP68 – Orange Hong KongHK
フラッシュセール11934円509月14日3%-5%
KUMI Mi1 2G GSM DCS Mobile Phone with Thermometer Function MTK6261D 2.4 inch 32MB RAM 32MB ROM 1700mAh Battery Global Version – BlackCN
GBKUMI1234339円509月16日3%-5%
Cubot KINGKONG MINI 4G Smartphone 4.0 inch Android 9.0 MT6761 Quad Core 3GB RAM 32GB ROM 13.0MP Rear Camera 2000mAh Battery Global Version – OrangeHK
フラッシュセール10849円509月16日3%-5%
Cubot X19 S 4G Smartphone 5.93 inch Android 9.0 MT6763 Octa Core 4GB RAM 32GB ROM 2 Rear Camera 4000mAh Battery Global Version – BlackHK
フラッシュセール10849円509月16日3%-5%
CUBOT KingKong CS 3G Smartphone Android 10 (Go Edition) 2GB RAM 16GB ROM Face ID IP68 Waterproof Global Version – BlackHK
フラッシュセール10849円509月16日3%-5%
Ulefone Armor X3 3G Smartphone – Black EUHK
フラッシュセール10849円509月16日3%-5%
Ulefone Armor X7 4G Smartphone 5 inch Android 10.0 Helio A20 MT6761VWE 2GB RAM 16GB ROM 2 Rear Camera 4000mAh Battery IP68 IP69K Waterproof Global Version – BlackHK
フラッシュセール10849円509月16日3%-5%
Ulefone Note 8P 4G Phablet 5.5 inch Android 10 Go Edition MT6737VW 2GB RAM 16GB ROM 8MP + 2MP Rear Camera 2700mAh Battery Global Version – BlackHK
フラッシュセール7594円509月16日3%-5%
OUKITEL C19 4G Smartphone Android 10 Go 2GB RAM 16GB ROM 6.49 inch HD + 13.0MP + 0.3MP + 0.3MP Rear Camera 4000mAh Global Version – BlackHK
フラッシュセール9764円509月16日3%-5%
World Premise DOOGEE X95 Android 10 4G-LTE Cellphones 6.52 Display MTK6737 16GB ROM Dual SIM – Green Hong Kong 2+16GBCN
フラッシュセール8679円509月16日3%-5%
HOMTOM HT80 IP68 Smartphone 4G LTE Android 10 5.5 Inch MT6737 Quad Core NFC SmarthoneWireless charger – Original green RAM 2GB ROM 16GB Hong Kong CN
フラッシュセール9764円509月16日3%-5%
BMAX X15 Laptop 15.6 inch Intel Gemini Lake N4100 Intel UHD Graphics 600 8GB LPDDR4 RAM 128GB SSD ROM Notebook – Dark GrayCN
GBBMAX12330379円509月5日3%-5%
Xiaomi Mi Laptop 15.6 inch Pro 2020 Upgrade MX350 Notebook Intel i7-10510U 16GB 1TB SSD Computer – I5-10210U 8G 512G ChinaCN
フラッシュセール136819円509月30日3%
CHUWI AeroBook Pro 13.3 inch Notebook Intel Core m3-8100Y 8GB DDR3 256GB SSD Windows 10 OS – PlatinumHK
フラッシュセール48824円509月16日3%-5%
Jumper EZbook X3 Air Notebook 13.3inch IPS Screen Intle Gemini Lake N4100 8GB DDR4 128GB eMMC 1.1cm Ultra-thin design Laptop – Mocha brown US plug ChinaCN
Q53722CCA51EB00136346円509月6日8%
Xiaomi RedmiBook 16 Laptop Ryzen Edition With AMD Ryzen 4700U/4500U 16.1 Inch Display Type C Charge 512G SSD – R5 8G 512G SSD ChinaCN
フラッシュセール81050円509月30日3%
TECLAST P20HD 10.1-inch 4G Tablet Android 10.0 SC9863A Call Eight-core 1.6GHz 4GB RAM 64GB Bluetooth 5.0 EU – BlackCN
フラッシュセール13561円509月14日3%-5%
Teclast F6 Plus 13.3 inch Convertible Laptop 8GB 256GB 360° Flip-and-fold FHD IPS Display Touch Screen Intel N4100 Chip 38Wh(10000mAh / 3.8V)Battery – Cloudy GrayCN
フラッシュセール40144円509月14日3%-5%
Teclast T30 10.1 inch 4G Tablet MTK Helio P70 Octa-core CPU 4GB RAM + 64GB ROM 8.0MP + 5.0MP Camera 8000mAh Battery 5G + 2.4G Dual-band WiFi – BlackCN
フラッシュセール21699円509月14日3%-5%
CHUWI Hi10X 10.1 Inch Tablet PC Intel Gemini Lake N4100 Quad Core CPU Windows 10 OS 6GB LPDDR4 128GB EMMC with Keyboard Stylus Pen – Gray SETHK
フラッシュセール31464円509月14日3%-5%
CHUWI HeroBook Pro 14.1 inch Laptop Intel Gemini Lake N4000 Intel UHD Graphics 600 8GB LPDDR4 RAM 256GB SSD Notebook – Gray EU PlugHK
フラッシュセール29294円509月14日3%-5%
OPPO Realme Band Smart Bracelet Large Color Screen Motion Tracker 16mm Wrist Strap Heart Rate Monitor IP68 USB Charging Wristband International Edition – BlackHK
flash sale2603円509月17日3%-5%
Philips Audio Philips SHP9500 HiFi Precision Stereo Headset Over-Ear Headphones – Black CN
F52F3846A15EB0017259円509月17日5%
Amazfit Pace Smartwatch Amazfit Smart Watch Bluetooth Notification GPS Information Push Heart Rate Monitor for Android – Red Spain (entrepot EU)CN
V52A6B54835EB0003112円509月17日3%
Xiaomi Mijia Redmi Wireless TV Sound Bar Speaker Bluetooth 5.0 Audio Music Playback Redmi Soundbar for Home Theater – add EU adapter CN
M530ED72C4A270015424円509月17日3%
Xiaomi Outdoor Bluetooth Speaker Stereo IP55 Dustproof Waterproof Dual Microphone Noise Reduction Call Bluetooth 5.0 Sound – Black 3%commissionsCN
U5336DF195DEB0004013円509月17日3%-5%
Xiaomi Outdoor Bluetooth Speaker Stereo IP55 Dustproof Waterproof Dual Microphone Noise Reduction Call Bluetooth 5.0 Sound – Mini 3%commissionsCN
M5370247BE5EB0002603円509月17日3%-5%
NEW 2020 Amazfit Neo Smart Watch Bluetooth Smartwatch 5ATM Heart Rate Tracking 28Days Battery Life For Android IOS Phone – Orange 3%commissionsCN
I533102A896270014990円509月17日3%-5%
Xiaomi Airdots Pro 2 Air 2 Bluetooth Headset Wireless Earphone LHDC Tap Control Dual MIC ENC – Airdots Air 2 6%commssionsCN
フラッシュセール4664円509月17日3%-5%
2020 Xiaomi Airdots Pro 2 SE Earphone Mi True Wireless TWS Bluetooth Dual SBC/AAC Tap Stereo Control Dual MIC ENC 5%commissionsCN
フラッシュセール2927円509月17日3%-5%
Original Xiaomi Mijia New 1080P IP Camera 130 Degree FOV Night Vision 2.4Ghz Dual-band WiFi Xiaomi Home Kit Security Monitor – Standrad China EU Plug 5%commissionsCN
M52F7C9E526270012060円509月17日3%-5%
Aqara WSDCGQ11LM Temperature Humidity Sensor ( Xiaomi Ecosysterm Product )CN
フラッシュセール1149円509月17日3%-5%
Aqara Window Door Sensor ( Xiaomi Ecosystem Product )CN
フラッシュセール1041円509月17日3%-5%
Aqara WXKG11LM Smart Wireless Switch Asia Pacific Version ( Xiaomi Ecosystem Product ) – WhiteCN
フラッシュセール997円509月17日3%-5%
CORN WB05 Bluetooth Call Smart Watch 90 Days Standby 1.2 inch 390 X 390 AMOLED Full Touch Screen 8 Sports Modes IP67 Waterproof Smart Watch – BlackCN
フラッシュセール4339円509月17日3%-5%

You may also like

Leave a Comment