OdooWiki OCA HUB

Module Analysis

module_analysis folder_open OCA/server-tools open_in_new
Uncategorised License: AGPL-3

This module allows you to know 'how much code' is running on your Odoo instance, group by 'Type' (Odoo Core, OCA, other...)

This module can be usefull in the following cases :

  • To analyse the size of your technical debt, regarding your Custom modules
  • To know the ratio between Odoo / OCA and Custom modules
  • To evaluate the amount to pay to odoo to upgrade your custom code, or the induced workload

For that purpose, it adds new concepts

  • ir.module.author, based on the value author present in the manifest file.
  • ir.module.type, populated by default with Odoo and OCA values.

Each installed modules have extra data in the 'Technical Data' tab :

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Analyse the code size of installed Odoo modules and classify them by type (Odoo Core, OCA, custom) and author, with pivot and graph reports.

This module adds tools to measure how much code runs on your Odoo instance and to classify each installed module by its origin. It appears under the Technical menu (developer mode) as an "Analysis" menu with Settings and Reporting submenus.

  • On each installed module's form, a "Refresh Code Analysis" button counts lines of Python, XML, JS, CSS and SCSS code and fills the "Code Size" group. It also shows the module's authors and its analysed type.
  • A scheduled job (disabled by default) can refresh the analysis daily for all installed modules.
  • You can define module types (e.g. Odoo Core, OCA) and rules that automatically assign a type based on the module's author. Two types and several rules are preloaded.
  • Authors are stored as separate records with a count of their installed modules; a unique name is enforced.
  • Reporting provides a pivot table and a pie chart of installed modules grouped by type, with code quantities as measures.
  • Two system parameters let you exclude directories (lib, demo, test, etc.) and files (__manifest__.py, __openerp__.py) from the analysis.
  • When a module is uninstalled, its analysis data is cleared.

Access to the new models is restricted to system administrators.

Depends on

base

Menus it adds

AnalysisSettingsReportingmenu_module_authorsmenu_module_by_typemenu_module_typesmenu_module_type_rules
Models and fields (4)
  • ir.module.type · new modelname, sequence, installed_module_ids (Installed Modules), installed_module_qty (Modules Quantity)
  • ir.module.author · new modelname, installed_module_ids (Modules), installed_module_qty (Installed Modules Quantity)
  • ir.module.module · extends an existing modelauthor_ids (Authors), js_code_qty (JS Code Quantity), css_code_qty (CSS Code Quantity), xml_code_qty (XML Code Quantity), scss_code_qty (SCSS Code Quantity), module_type_id (Analysed Module Type), python_code_qty (Python Code Quantity)
  • ir.module.type.rule · new modelsequence, module_domain, module_type_id (Module type)

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 7 confirmed, 2 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/server-tools.

terminal Installation and usage

OCA documentation · Odoo 18.0

To use this module, you have to install the pygount python librairy.

pip install pygount

  • Go to Apps / Module Analysis / Modules Types Rules

The Module types Rules are usefull to get the Type of a module, based on it information.

This module comes with default rules.

>

You can add your custom rules to identify the modules your team have developped for exemple,

>

to update the data manually, you have to :

  • Go to 'Settings' / 'Technical' / 'Scheduled Actions'
  • Run manually the action : 'Update Module Analysis'

This will update analysis of your installed modules.

to update the data automatically, you have to :

  • Go to 'Settings' / 'Technical' / 'Scheduled Actions'
  • Configure the action 'Update Module Analysis' and activate it. (By default, the cron is unactive and no analysis is done)

Adding Extra data

If you want to analyse other data, (for exemple, having the number of HTML files), create a custom modules and overload the module model :

from odoo import api, fields, models

class IrModuleModule(models.Model):
   _inherit = 'ir.module.module'

   xml_documentation_qty = fields.Integer(
      string='Quantity of Comments in XML Files')

  @api.model
  def _get_analyse_settings(self):
      res = super()._get_analyse_settings()
      if not '.html' in res:
          res['.html'] = {}
      res['.html']['documentation'] 'xml_documentation_qty'
      return res

Exclude files and directories

Two parameters are availaible in 'Settings' / 'Technical' / 'Parameters' 'System Parameters' :

>

The list of folders and filename will be exclude from the analysis. You can change the default settings.

  • Go to 'Apps' / 'Module Analysis' / 'Installed module by Types'

Open the stats to analyse the detail of the code installed

> > >

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.