Developer Guide =============== EXPLIoT Framework is a brilliant choice for vendors, smart infrastructure admins, developers and security researchers for various reasons: - It will streamline your security/regression testing. - You will be able to identify security loopholes prior to deployment on an IoT solution in your infrastructure. - It will help you in automating time consuming test cases. - If you fall under any compliance or regulatory requirements for the IoT product or Smart Infrastructure, it will help you in automating and performing compliance checks regularly. - It will save a lot of time during IoT security research or assessments. - You can mold it to your needs by simply extending it with your own plugins. If you are interested in extending the framework i.e. writing new plugins, follow on. Coding style ------------ Please follow the below coding style, when writing new code, if you are used to some other style. We use `Black `_ for code formatting. Every merge request is automatically checked as part of the linting process and we never merge submissions that diverge. We recommend to run ``black``, ``pylint`` and ``flake8`` locally before creating a merge request. #. The code **must** follow `PEP8 (Style Guide for Python Code) `_. #. Class names should be short, simple and define the purpose. It **must** be in `CamelCase `_. #. Import should be grouped and ordered, use ``isort``. #. The method names **must not** use *CamelCase*. It may use underscores ("\_") for a name with more than one word. #. Class member names should follow the same convention as method names. #. Every module, function, class or method definition **must** have at least a `Docstring `_. It's preferred to have additional details for the API documentation. .. code-block:: console """ Method description. Args: param1 (type): param1 description param2 (type): param2 description Returns: (or Yields: for generators) type: Description of return value Raises: type: Description/reason of the exception """ Please refer to the `Google Python Style Guide `_ for further information or if you are unsure about a specific topic. Contribute ---------- If you are interested in contributing to the project. Please follow these steps: #. You must have an idea or a bug fix. #. If this is your first time contributing to EXPLIoT, then please DO NOT submit a pull/merge request first thing. Instead please open an `issue `_ describing your code changes. #. Setup your development environment, see :ref:`development-setup`. #. You will need to sign a contributor license agreement. Please sign, scan and email the same. #. Create the merge request following the mentioned points in the previous section. Additional details ------------------ .. toctree:: :maxdepth: 1 :glob: **