GithubHelp home page GithubHelp logo

magento / marketplace-eqp Goto Github PK

View Code? Open in Web Editor NEW
225.0 38.0 68.0 200 KB

Magento 1.x Coding Standard

Home Page: http://docs.magento.com/marketplace/user_guide/Resources/pdf/Extension_Quality_Program_Overview.pdf

License: MIT License

PHP 100.00%

marketplace-eqp's Introduction

Magento Extension Quality Program Coding Standard

⚠️ Versions 3.0.0 and above of the MEQP Coding Standard are for Magento 1.x code only.

To check Magento 2.x code use Consolidated Magento Coding Standard.

Build Status

Magento EQP Coding Standard is a set of rules and sniffs for PHP_CodeSniffer tool.

It allows automatically check your code against some of the common Magento and PHP coding issues, like:

  • raw SQL queries;
  • SQL queries inside a loop;
  • direct class instantiation;
  • unnecessary collection loading;
  • excessive code complexity;
  • use of dangerous functions;
  • use of PHP superglobals;
  • code style issues and many others.

Magento Extension Quality Program Coding Standard consists of one ruleset - MEQP1 for Magento 1.x.

Installation

Install all dependencies via Composer:

$ composer create-project --repository=https://repo.magento.com magento/marketplace-eqp magento-coding-standard

You’re required to authenticate; see Get your authentication keys for details.

Usage

$ cd magento-coding-standard

Select the standard to run with PHP_CodeSniffer. To check Magento extension run:

$ vendor/bin/phpcs /path/to/your/extension --standard=MEQP1

By default, PHP_CodeSniffer will check any file it finds with a .inc, .php, .js or .css extension. To check design templates you can specify --extensions=php,phtml option.

To check syntax with specific PHP version set paths to php binary dir:

$ vendor/bin/phpcs --config-set php7.0_path /path/to/your/php7
$ vendor/bin/phpcs --config-set php5.4_path /path/to/your/php5.4

Fixing Errors Automatically

PHP_CodeSniffer offers the PHP Code Beautifier and Fixer (phpcbf) tool. It can be used in place of phpcs to automatically generate and fix all fixable issues. We highly recommend run following command to fix as many sniff violations as possible:

$ vendor/bin/phpcbf /path/to/your/extension --standard=MEQP1

Marketplace Technical Review

To make sure your extension will pass CodeSniffer checks of Magento Marketplace Technical Review, you could run phpcs command with --severity=10 option.

$ vendor/bin/phpcs /path/to/your/extension --standard=MEQP1 --severity=10 --extensions=php,phtml

All severity 10 errors must be fixed in order to successfully pass Level 1 CodeSniffer checks.

Requirements

Notice: PHP and Composer should be accessible globally.

Contribution

Please feel free to contribute new sniffs or any fixes or improvements for the existing ones.

marketplace-eqp's People

Contributors

chnorton avatar diazwatson avatar ihor-sviziev avatar ikruchynskyi avatar lenaorobei avatar moleman avatar nocturnalfrog avatar paweltatarczuk avatar pivulic avatar powli avatar rafaelstz avatar rud5g avatar slitviachenko avatar t-richards avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

marketplace-eqp's Issues

Throwing exception class from the same namespace is marked as error

This is related to throwing exceptions.
If in class, other class is used, but both classes belongs to the same namespace, EQP tool will result:
ERROR - Namespace for <> class is not specified.

Example:
Test.php

<?php

namespace Somespace;

class Test
{
    public function run()
    {
        throw new TestException('Test exception message');
    }
}

TestException.php

<?php

namespace Somespace;

class TestException extends \Exception
{
}

Result of testing file Test.php:

----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 9 | ERROR | Namespace for TestException class is not specified.
----------------------------------------------------------------------

However, if you change run() method a bit:

public function run()
{
    $testException = new TestException('Test exception message');
}

Tools won't result an error.

I am attaching code, which is correct, but tools will result error:
test.tar.gz

Change Protector class member detector to private

Hello, I found not logic rule.
https://github.com/magento/marketplace-eqp/blob/develop/MEQP2/Sniffs/PHP/ProtectedClassMemberSniff.php
Comment in line 13 says "Detects possible usage of 'private' scope modifiers.", and whole class detecting 'protected'.
To fast fix: change return [T_PROTECTED]; to return [T_PRIVATE]; in line 32. And protected $warningCode = 'FoundProtected'; to protected $warningCode = 'FoundPrivate';

Same on Russian:
Похоже что произошла ошибка, PHPCS с стилем MEQP2 говорит мне что protected переменные не желательны. А судя по комменту в коде детектора, должно искать private, а не protected.

Fixed file:
ProtectedClassMemberSniff.php.txt

Error while using it in PHPStorm

Magento 2.1, version 1.0.2. I can't get it working in PHPStorm.

Using the path$PROJECT/vendor/magento/marketplace-eqp/MEQP1

phpcs: PHP Fatal error: Uncaught PHP_CodeSniffer_Exception: Referenced sniff "Generic.Arrays.DisallowShortArraySyntax" does not exist in /vendor/squizlabs/php_codesniffer/CodeSniffer.php:847 Stack trace:
#0 /vendor/squizlabs/php_codesniffer/CodeSniffer.php(587): PHP_CodeSniffer->_expandRulesetReference(Object(SimpleXMLElement), '/Users/paul/Sit...', 0)
#1 /vendor/squizlabs/php_codesniffer/CodeSniffer.php(435): PHP_CodeSniffer->processRuleset('/Users/paul/Sit...')

Using the path$PROJECT/vendor/magento/marketplace-eqp/MEQP2

phpcs: PHP Fatal error: Uncaught PHP_CodeSniffer_Exception: Referenced sniff "MEQP1.CodeAnalysis.EmptyBlock" does not exist in vendor/squizlabs/php_codesniffer/CodeSniffer.php:847 Stack trace:
#0 vendor/squizlabs/php_codesniffer/CodeSniffer.php(587): PHP_CodeSniffer->_expandRulesetReference(Object(SimpleXMLElement), '/Users/paul/Sit...', 0)
#1 vendor/squizlabs/php_codesniffer/CodeSniffer.php(435): PHP_CodeSniffer->processRuleset('/Users/paul/Sit...')

Instructions how to integrate with PHPStorm to run besides the default code sniffer.

Magento 2's default code sniffer is ran from here:
$PROJECT/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs

Is this code sniffer meant to replace Magento's code sniffer or is it complementary? I understand they both offer a different purpose, but I see a lot of smart checks that are helpful during development.

Current configuration not useful for Marketplace Technical Review

I don't know if this coding standard was ever intended for it (the naming marketplace-eqp suggests it though), but with the current configuration it is not useful to preview the Magento Marketplace technical review.

The technical review mostly uses the Code Validation Guidelines with some undocumented additions. The current rulesets for MEQP1 and MEQP2 do not define the severity or change the rules/sniffs that would block the technical review from passing to the error type.

I guess developers using any kind of CI to automatically perform static code analysis would appreciate to have the possibility to let their builds fail, if they would not pass the Marketplace technical review.

phpcbf have no impact on files

After I run phpcs it shows several fixable warnings.
Now when i run phpcbf, most of the warnings remain, it's like phpcbf didn't correct any thing.

On the standard output, I get this from phpcbf:

 [0] => Ignoring potentially dangerous file name /home/XXX..
    [1] => can't find file to patch at input line 3
    [2] => Perhaps you used the wrong -p or --strip option?
    [3] => The text leading up to this was:
    [4] => --------------------------
    [5] => |--- /home/XXXX..
    [6] => |+++ PHP_CodeSniffer

Why phpcbf is considering most of files as "potentially dangerous" ?
How can I force it to do the correction ?

Multi-line function parameters not resolvable

Let's say you have a multi-line function with long parameter names that would force you to go over 120 characters. The rules say that if you're going to line-break, you need to do one parameter per line.

Since this is a multi-line function, the closing parenthesis must be on its own line, sure. Then, the opening brace needs to be on a new line.

So we run into this:

The closing parenthesis and the opening brace of
a multi-line function declaration must be on the
same line

This is not valid:

    public function functionWithManyParams(
        $parameter1,
        $parameter2 = array(),
        $parameter3 = 'custom',
        $parameter4 = false,
        $parameter5 = '',
        $parameter6 = null,
        $parameter7 = false,
        $parameter8 = false
    )
    {

Nor is this:

    public function functionWithManyParams(
        $parameter1,
        $parameter2 = array(),
        $parameter3 = 'custom',
        $parameter4 = false,
        $parameter5 = '',
        $parameter6 = null,
        $parameter7 = false,
        $parameter8 = false
    ) {

I know there's something to be said for the number of parameters, but the issue at hand is that this is throwing a warning.

Am I completely missing something here?

MEQP1.Performance.InefficientMethods : GetFirstItem always triggered

This warning is getting trigerred even if you limit your collection for example with this code:

/** @var Mage_Cms_Model_Resource_Page_Collection $collection */
$collection = Mage::getResourceModel('cms/page_collection')
    ->addFieldToFilter('identifier', 'home')
    ->setPageSize(1)
    ->setCurPage(1);

if ($collection->getSize()) {
    /** @var Mage_Cms_Model_Page $page */
    $page = $collection->getFirstItem();
}

It should not trigger if setPageSize() is called on the collection IMHO

Direct object instantiation for exceptions

Extending the Magento APIs, we're running into this:

Direct object instantiation (class
Mage_Api2_Exception) is discouraged in Magento.

This is something used throughout the core, which also fails.

Warning : Session object MUST NOT be requested in constructor.

I'm not sure this is the appropriate place to ask this question:
After running phpcs , I got a warning saying :

Session object MUST NOT be requested in constructor.
It can only be passed as a method argument.

I searched on Magento2 doc, And I can't find another way to access Session object from an observer context.
When I looked into Magento2 modules, I found that injecting session via constructor practice is widely used
Why Session object MUST NOT be requested in constructor?
What is the good practice to access Session?

New release

It's been > 7 months since the last release and a few updates have been made since then. Are there any plans for a new release?

Use of protected class members is discouraged

Hello Magento,

Just a question, can you please explain why using protected is considered bad practice in Magento:
"WARNING | Use of protected class members is discouraged."

We're trying to prepare one extension for marketplace, and we deliberately used protected on few places to give other developers a chance to extend and change behavior of some classes if ever needed. If we change everything to private, any kind of class extensibility is harder to achieve.

I'm just not sure if discouraging protected is a good idea, they have their own purpose, so we would like to know logic behind this so we could follow best practices better :)

Thanks, Ivan

Erroneous code sniff "The use of public non-interface method in ACTION is discouraged" in a Controller plugin

Prerequisites

Marketplace EQP 1.0.5

Steps to reproduce

  1. Create a plugin on a controller with the path to the plugin involving the substring Controller somewhere.
  2. On the beforeExecute/afterExecute/aroundExecute function, see that you receive the following erroneous code sniff: The use of public non-interface method in ACTION is discouraged. Example: https://www.screencast.com/t/Dcw3DdM0R

Workaround

Create the plugin without using the word "Controller" in the file or folder structure.

Analysis

Seems to be due to PublicNonInterfaceMethodsSniff::foundInAction looking for the substring "Controller" in the file path to determine if a class is a controller.

Possible solution

Possibly also look for the phrase "public function execute(" or something similar to determine if a file is indeed a controller action? And/or check that the file's structure is specifically <module top level folder>/Controller, rather than looking for Controller anywhere?

Not sure if either of these solutions are possible or desired.

PHP Fatal error: Class 'Generic_Sniffs_CodeAnalysis_EmptyStatementSniff' not found

hi,
i got this error and could find any way to fix this issue.
PHP Fatal error: Class 'Generic_Sniffs_CodeAnalysis_EmptyStatementSniff' not found in /home/user/marketplace-eqp/MEQP1/Sniffs/CodeAnalysis/EmptyBlockSniff.php on line 16

Can you guide me how i solve this issue i am using PHP Version 7.1.8 and ubuntu 16.04.

Thanks

Create 1.0.3 tag

Hello,

Composer.json was updated to be version 1.0.3, but there exists no such tag in the repository.

Could you tag version 1.0.3? Thank you :)

It should work with PHP 5.5

Hi,
Magento 2 modules which are declared as compatible with Magento 2.0.* should be compatible even with PHP 5.5 but this package is declared compatibile only with PHP >= 5.6.
So, if we put this package as a dev dependency of our extensions, it's not possible to run a continuous integration build with PHP 5.5 (the only option is to run composer install --ignore-platform-reqs)

So my question is: there is any reason that requires PHP ">=5.6" constraint? Can it be set to ">=5.5"?

Point of PSR1.Classes.ClassDeclaration.MissingNamespace for M1 ?

In the M1 sniff ruleset, the following rule is included: PSR1.Classes.ClassDeclaration.MissingNamespace

With the following message: "Each class must be in a namespace of at least one level"

AFAIK, it cannot be done with Magento 1 by default and you need your own autoloader to be able to achieve this.

So I reckon that's a problem and that rule should be removed from the M1 ruleset. I'm happy to do a PR if you can confirm or curious to hear about the reason if it is a good reason ^^

Question: why are we showing warnings that do not make much sense?

The one that keeps popping up that I'm referring to is Use of protected class members is discouraged

If I apply the same code sniff standard to the latest Magento 2 core, we get a ton of them. Additionally, there is little sense in not using protected class properties.

Am I missing something?

Namespace error in Magento 1 EQP

Hello magento,

we are getting the following error message on all of our classes and can't get the meaning when running.

vendor/bin/phpcs --standard=MEQP1 --ignore=vendor .

19 | WARNING | Each class must be in a namespace of at least one
| | level (a top-level vendor name)

If we are not wrong, there are no namespace defined in magento 1 and if we define one for our class the autolader will not work any longer.

For example

<?php
class HeidelpayCD_Edition_Model_Payment_Abstract extends Mage_Payment_Model_Method_Abstract
{
...
}

Is this a miss behavior?

Thanks for help.

Too many "warnings" when sniffing phtml files

Shouldn't .phtml files be excluded from the following rules in MEQP2?

  • Generic.PHP.DisallowShortOpenTag.EchoFound

    Short PHP opening tag used with echo; expected "<?php echo count ..." but found "<?= count ..."

  • Squiz.ControlStructures.ControlSignature.SpaceAfterCloseParenthesis

    Expected 1 space after closing parenthesis; found 0

  • Squiz.ControlStructures.ControlSignature.SpaceAfterKeyword

    Expected 1 space after ELSE keyword; 0 found

  • Generic.Files.LineLength.TooLong

    Line exceeds 120 characters; contains 136

These rules drown out the relevant warnings like 'MEQP2.Templates.XssTemplate.FoundUnescaped' and are probably the reason why most core .phtml files contain have a // @codingStandardsIgnoreFile annotation.

The lack of exceptions for .phtml files is driving people towards adding these 'ignore coding standards' annotations which is quite sad given how easy it would be to add the exclude patterns.

Any thoughts on this?
Should I create a Pull Request for this?
Am I missing some other rule that should be excluded?

composer require magento/marketplace-eqp

After I run composer require magento/marketplace-eqp
I get error:

[InvalidArgumentException]
  Could not find package magento/marketplace-eqp at any version for your mi
  nimum-stability (alpha). Check the package spelling or your minimum-stabi
  lity

ProtectedClassMemberSniff

It looks like the following Pull request 84192d4 had to fix
not a typo but change a sniff to at least PrivateClassMemberSniff like it is in MEQP1 standard.

But in general what is the nature of the following sniffs? Why using of private/protected members is a bad practice?

MEQP1 does not working properly

We have executed the below command,

phpcs --standard=MEQP1 module/

But throw below errors:

PHP Fatal error: Interface 'PHP_CodeSniffer\Sniffs\Sniff' not found in /var/www/marketplace-eqp-master/MEQP1/Sniffs/Classes/Mysql4Sniff.php on line 15

How to resolve this issue.

A false positive: «Each class must be in a file by itself» on a conditional class declaration

I have the following code there:

if (@class_exists('\PHPUnit\Framework\TestCase')) {
    /** @noinspection PhpMultipleClassesDeclarationsInOneFile */
    abstract class TestCaseBase extends \PHPUnit\Framework\TestCase {}
}
else {
    /** @noinspection PhpMultipleClassesDeclarationsInOneFile */
    abstract class TestCaseBase extends \PHPUnit_Framework_TestCase {

https://github.com/mage2pro/core/blob/2.12.21/Core/TestCaseBase.php#L10-L16

The code sniffer reports a false positive: «Each class must be in a file by itself».

PHP Fatal error: Trait 'MEQP\Utils\Helper' not found

We have checked the MEQP1 standard. But throw below mentioned errors,

PHP Fatal error: Trait 'MEQP\Utils\Helper' not found in /var/www/development/marketplace-eqp-master/MEQP1/Sniffs/Classes/ResourceModelSniff.php on line 21

My system details.
OS - Ubuntu 16.04.3
PHP - 7.0.18

How to solve this issue.....!

Composer installable

Can we make this a package on packagist so that the standard can be installed via composer just to make life easier ? It can then be added to projects without having to require this git repo.

Got error on marketplace submission but not on my local sniffer

PHP syntax error: Can't use method return value in write context
File:
app/code/local/Test/Test1/controllers/Adminhtml/TestController.php
Line:
328
Column:
1
Source:
MEQP1.PHP.Syntax.PHPSyntax

but local code-sniffer command not showing any of this error?

Cant execute commande on Magento 2 extention

When I execute this cmd : $ vendor/bin/phpcs [/path/to/your/extension] --standard=MEQP2

My php version is : PHP 5.6.23
I'm working on ubuntu14

I get a fatal error saying :

PHP Fatal error: Uncaught exception 'PHP_CodeSniffer_Exception' with message 'Referenced sniff "MEQP1.Exceptions.Namespace" does not exist' in /home/a7med/projects/marketplace-eqp-master/magento-coding-standard/vendor/squizlabs/php_codesniffer/CodeSniffer.php:1150
Stack trace:
#0 /home/a7med/projects/marketplace-eqp-master/magento-coding-standard/vendor/squizlabs/php_codesniffer/CodeSniffer.php(763): PHP_CodeSniffer->_expandRulesetReference(Object(SimpleXMLElement), '/home/a7med/pro...', 0)
#1 /home/a7med/projects/marketplace-eqp-master/magento-coding-standard/vendor/squizlabs/php_codesniffer/CodeSniffer.php(562): PHP_CodeSniffer->processRuleset('/home/a7med/pro...')
#2 /home/a7med/projects/marketplace-eqp-master/magento-coding-standard/vendor/squizlabs/php_codesniffer/CodeSniffer/CLI.php(907): PHP_CodeSniffer->initStandard(Array, Array, Array)
#3 /home/a7med/projects/marketplace-eqp-master/magento-coding-standard/vendor/squizlabs/php_codesniffer/CodeSniffer/CLI.php(106): PHP_CodeSniffer_CLI->process()
#4 /home/a7med/projects in /home/a7med/projects/marketplace-eqp-master/magento-coding-standard/vendor/squizlabs/php_codesniffer/CodeSniffer.php on line 1150
a7med@a7med-PC:~/projects/marketplace-eqp-master/magento-coding-standard$

PHP Parse error: syntax error, unexpected '['

I got these error when i tried to sniff for MEQP1 standard
PHP Parse error: syntax error, unexpected '[' in marketplace-eqp/MEQP1/Sniffs/Exceptions/NamespaceSniff.php on line 43
This is code causing the problem

return [T_CATCH, T_THROW];

can you suggest me any solution for that?

My mistake it is php version problem.

Unescaped output detected for displayPrices()

For method "displayPrices()" validator return warning
"Unescaped output detected"
Source: MEQP1.Templates.XssTemplate.FoundUnescaped

    <td>
        <?php echo $this->displayPrices(
            $this->getSource()->getBaseFeeAmount(),
            $this->getSource()->getFeeAmount()
        ); ?>
    </td>

Conflictive array syntax in M1 and M2

The coding standard MEQP1 disallows short array syntax and the MEQP2 disallows long array syntax. While I perfectly understand this decision for the sake of consistency with the core code, it leads to a number of violations when using the shared libraries approach.

Shared libraries, that is delivering platform specific code to hook into one or the other major Magento version, accompanied by framework independent code (the library) that provides functionality for reuse in both, M1 and M2.

Magento Shared Libraries
Fabian Schmengler / integer_net

To overcome the current situation where the library cannot comply to the rules of both major versions, I suggest enforcing short array syntax in MEQP2 and accepting both in MEQP1 (i.e. remove the rule in question).

A false positive: «The use of public non-interface method in ACTION is discouraged» when extending parent classes

When running EQP against our Force Login module the warning "The use of public non-interface method in ACTION is discouraged" shows up for this piece of code. The method in question is part of an interface implemented by the class our class is extending from thus the warning does not seem correct to me.

The warning can be avoided by letting our class implement the interface in question. This means the sniff does not check interfaces implemented by all parent classes but just the interfaces by the class in question.

getting error while install

where to run this command "composer require magento/marketplace-eqp".

every time i got this error :
[InvalidArgumentException]
Could not find package magento/marketplace-eqp at any version for your minimum-stability (stable). Check the packag
e spelling or your minimum-stability

Please help me properly setup this.

Issue installing marketplace-eqp on Mac os sierra

The "https://repo.magento.com/packages.json" file could not be downloaded: SSL: Connection reset by peer  
Failed to enable crypto                                                                                   
failed to open stream: operation failed

Getting this error after attempting to install. I never get prompted for any auth. I've tried setting up an auth.json file, according to the Composer docs, and added the public/secret keys that I set up with my Magento account, but get the same error as without having an auth.json.

Any tips?

A false positive: «Only dependency assignment operations are allowed in constructor»

When running EQP against our Force Login module the warning "Only dependency assignment operations are allowed in constructor. No other operations are allowed." shows up for this piece of code:

/**
 * @param StrategyInterface[] $strategies
 */
public function __construct(array $strategies)
{
    foreach ($strategies as $identifier => $strategyEntry) {
        $this->strategies[$identifier] = $strategyEntry;
        $this->strategyNames[$identifier] = $strategyEntry->getName();
    }
}

I guess it might be quite hard to guess what constructor code is valid, but in that regard the warning does not make any sense to me.

A false positive: «Namespace for class is not specified» on throwing a function call result

I have the following code:

catch (\Exception $e) {df_log($e); throw df_le($e);}

https://github.com/mage2pro/core/blob/2.12.20/Config/Backend.php#L64

The code sniffer reports: «Namespace for df_le class is not specified»

But df_le is not a class, it is a function:

function df_le(E $e) {return $e instanceof LE ? $e : new LE(__(df_ets($e)), $e);}

https://github.com/mage2pro/core/blob/2.12.20/Qa/lib/exception.php#L53-L58

So what should I do?

Can not pass EQP for a theme that included several modules

I try to submit a theme to Magento MarketPlace, but I can not pass marketplace-eqp, both theme and modules is obeyed official file structure and with composer.json file, but I have no idea how to package both theme and modules together to pass EQP.
My theme has some plugins so the directory structure is like:

app

code
-- Cattheme
--- Ajaxfilter
--- Base
--- Install
--- Megamenu
--- Themeconfig
design
-- frontend
--- Cattheme
---- rabel

pub

media
-- themeconfig

I got error:

"composer.json" file missing.
"registration.php" file missing.
"theme.xml" file missing.

How can I submit a theme with plugins to Marketplace?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.