Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MIG] module_analysis: Migration to 18.0 #3184

Open
wants to merge 51 commits into
base: 18.0
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
78a38d2
[ADD] new module module_analysis
legalsylvain Jul 7, 2019
5fa074d
Added translation using Weblate (Chinese (Simplified))
liweijie0812 Aug 31, 2019
f23a82b
Translated using Weblate (Chinese (Simplified))
liweijie0812 Aug 31, 2019
5e05176
[IMP] module_analysis: black, isort, prettier
santostelmo Jan 6, 2021
10b05c0
[MIG] module_analysis: Migration to 13.0
santostelmo Jan 7, 2021
15dda63
Fix pre-commit warnings
santostelmo Jan 7, 2021
a58e7ec
fixup! Fix pre-commit warnings
santostelmo Jan 7, 2021
9956b56
Skip _test modules from test_installed_modules
santostelmo Jan 7, 2021
fcceb99
Remove anonymous variable _
santostelmo Jan 8, 2021
a1bf9ad
fixup! [MIG] module_analysis: Migration to 13.0
santostelmo Jan 8, 2021
06ecacb
[Fix] author_txt_list assign
santostelmo Feb 24, 2021
85afb8b
Fix _get_files_to_analyse
santostelmo Feb 24, 2021
619a336
Added translation using Weblate (Italian)
alessandro-fiorino Apr 17, 2021
dfe2a1f
Translated using Weblate (Italian)
alessandro-fiorino Apr 17, 2021
dcfd60d
[FIX] module_analysis: correct syntax
royle-vietnam Dec 28, 2021
69782f4
[MIG] module_analysis: Migration to 15.0
Jun 10, 2022
85be102
[FIX+IMP] module_analysis : remove analysis when updating modules, be…
legalsylvain Mar 30, 2021
904f18a
[UPD] Update module_analysis.pot
Feb 14, 2023
665b570
[UPD] README.rst
OCA-git-bot Feb 14, 2023
dbf5e10
Translated using Weblate (Italian)
francesco-ooops Mar 7, 2023
79dc54d
[16.0][MIG] module_analysis : migrate to 16
florian-dacosta Apr 18, 2023
5d78126
[IMP] Remove automatic analyse at installation and update
florian-dacosta Apr 18, 2023
7a4a2f6
[IMP] Add SCSS SLOC measure
kevinkhao May 31, 2021
e26cd08
[FIX] fix usage of cron data, deactivate it by default
kevinkhao Nov 29, 2021
2c373b0
[REF] module_analysis: add legalsylvain as maintainers
legalsylvain Dec 15, 2021
4f36e08
[FIX] test: proper analysis before testing
Mar 29, 2022
74bbad3
[FIX] Playing test after install must not be mandatory anymore becaus…
florian-dacosta Apr 18, 2023
112829f
module_analysis : Update readme
florian-dacosta Apr 18, 2023
950f4b4
[IMP] module_analysis : allow to pass a custom domain to the analysis…
florian-dacosta Apr 18, 2023
ceb1392
[UPD] Update module_analysis.pot
May 16, 2023
5715fa5
[UPD] README.rst
OCA-git-bot May 16, 2023
f982348
Update translation files
weblate May 17, 2023
08c95c4
[FIX] module_analysis : tests compatibility with pip install
florian-dacosta May 18, 2023
ce1ee08
module_analysis 16.0.1.0.1
OCA-git-bot May 18, 2023
88eb049
Translated using Weblate (Italian)
mymage Jun 7, 2023
4272a4e
[UPD] Update module_analysis.pot
Jun 7, 2023
c202292
Update translation files
weblate Jun 7, 2023
f5e277c
Translated using Weblate (Italian)
mymage Aug 10, 2023
ba270d8
Added translation using Weblate (Spanish)
Ivorra78 Aug 25, 2023
1c48aab
Translated using Weblate (Spanish)
Ivorra78 Aug 25, 2023
7a8030e
[UPD] README.rst
OCA-git-bot Sep 3, 2023
a987e64
Translated using Weblate (Italian)
mymage Oct 3, 2023
1a1c69a
Translated using Weblate (Italian)
mymage Nov 3, 2023
251cf71
Translated using Weblate (Italian)
mymage Jan 2, 2024
1bbcd55
Translated using Weblate (Italian)
mymage Feb 5, 2024
8aeadb5
Translated using Weblate (Italian)
mymage May 24, 2024
6c11c02
[MIG] module_analysis: Migration to 17.0
Sep 12, 2024
8eae0f8
[UPD] Update module_analysis.pot
Sep 15, 2024
9cac561
[17.0][FIX] module_analysis: interpret exclude_directories as relativ…
fcayre Oct 3, 2024
b52fc86
[IMP] module_analysis: pre-commit auto fixes
absal-smile Feb 3, 2025
8c6705a
[MIG] module_analysis: Migration to 18.0
absal-smile Feb 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 202 additions & 0 deletions module_analysis/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
===============
Module Analysis
===============

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d00d83d918ced79270057ca2a185260375834ac2e4526c7c5cb0fa745158aca6
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/18.0/module_analysis
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-module_analysis
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

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

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/installed_modules_by_types.png
:alt: image

For that purpose, it adds new concepts

- ``ir.module.author``, based on the value ``author`` present in the
manifest file.

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/module_authors.png
:alt: image

- ``ir.module.type``, populated by default with Odoo and OCA values.

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/module_types.png
:alt: image

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

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/module_form.png
:alt: image

**Table of contents**

.. contents::
:local:

Installation
============

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

``pip install pygount``

Configuration
=============

- 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.

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/default_module_type_rules.png
:alt: image

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

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/add_module_type_rules.png
:alt: image

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 :

.. code:: python

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' :

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/config_parameters.png
:alt: image

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

Usage
=====

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

Open the stats to analyse the detail of the code installed

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/analysis_pivot.png
:alt: image

.. image:: https://raw.githubusercontent.com/OCA/server-tools/18.0/module_analysis/static/description/analysis_pie.png
:alt: image

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20module_analysis%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* GRAP

Contributors
------------

- Sylvain LE GAL (https://twitter.com/legalsylvain)

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px
:target: https://github.com/legalsylvain
:alt: legalsylvain

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-legalsylvain|

This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/18.0/module_analysis>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions module_analysis/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
32 changes: 32 additions & 0 deletions module_analysis/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Copyright (C) 2019-Today: GRAP (<http://www.grap.coop/>)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

{
"name": "Module Analysis",
"summary": "Add analysis tools regarding installed modules"
" to know which installed modules comes from Odoo Core, OCA, or are"
" custom modules",
"author": "GRAP, Odoo Community Association (OCA)",
"maintainers": ["legalsylvain"],
"website": "https://github.com/OCA/server-tools",
"version": "18.0.1.0.0",
"license": "AGPL-3",
"depends": ["base"],
"data": [
"security/ir.model.access.csv",
"views/menu.xml",
"views/view_ir_module_author.xml",
"views/view_ir_module_type.xml",
"views/view_ir_module_type_rule.xml",
"views/view_ir_module_module.xml",
"data/ir_cron.xml",
"data/ir_config_parameter.xml",
"data/ir_module_type.xml",
"data/ir_module_type_rule.xml",
],
"external_dependencies": {
"python": ["pygount"],
},
"installable": True,
}
16 changes: 16 additions & 0 deletions module_analysis/data/ir_config_parameter.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2019-Today: GRAP (<http://www.grap.coop/>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo noupdate="1">
<record id="parameter_exclude_directories" model="ir.config_parameter">
<field name="key">module_analysis.exclude_directories</field>
<field name="value">lib,demo,test,tests,doc,description</field>
</record>
<record id="parameter_exclude_files" model="ir.config_parameter">
<field name="key">module_analysis.exclude_files</field>
<field name="value">__openerp__.py,__manifest__.py</field>
</record>
</odoo>
20 changes: 20 additions & 0 deletions module_analysis/data/ir_cron.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2021-Today: GRAP (<http://www.grap.coop/>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo noupdate="1">
<record id="cron_module_analysis" model="ir.cron">
<field name="name">Update Module Analysis</field>
<field name="active" eval="False" />
<field name="model_id" ref="base.model_ir_module_module" />
<field name="state">code</field>
<field name="code">model.cron_analyse_code()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="nextcall" eval="(DateTime.today()).strftime('%Y-%m-%d')" />
<!-- <field name="numbercall">-1</field> -->
<field name="user_id" ref="base.user_root" />
</record>
</odoo>
14 changes: 14 additions & 0 deletions module_analysis/data/ir_module_type.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2019-Today: GRAP (<http://www.grap.coop/>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<record id="module_type_odoo" model="ir.module.type">
<field name="name">Odoo Core</field>
</record>
<record id="module_type_oca" model="ir.module.type">
<field name="name">OCA</field>
</record>
</odoo>
37 changes: 37 additions & 0 deletions module_analysis/data/ir_module_type_rule.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2019-Today: GRAP (<http://www.grap.coop/>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<!-- Odoo Rules -->
<record id="module_type_rule_odoo_a" model="ir.module.type.rule">
<field name="sequence">1</field>
<field name="module_domain">[('author_ids', 'ilike', 'Odoo S.A')]</field>
<field name="module_type_id" ref="module_type_odoo" />
</record>
<record id="module_type_rule_odoo_b" model="ir.module.type.rule">
<field name="sequence">2</field>
<field name="module_domain">[('author_ids', 'ilike', 'OpenERP SA')]</field>
<field name="module_type_id" ref="module_type_odoo" />
</record>
<record id="module_type_rule_odoo_c" model="ir.module.type.rule">
<field name="sequence">3</field>
<field name="module_domain">[('author_ids', '=', 'Odoo SA')]</field>
<field name="module_type_id" ref="module_type_odoo" />
</record>
<record id="module_type_rule_odoo_d" model="ir.module.type.rule">
<field name="sequence">4</field>
<field name="module_domain">[('author_ids', '=', 'Odoo')]</field>
<field name="module_type_id" ref="module_type_odoo" />
</record>
<!-- OCA Rules -->
<record id="module_type_rule_oca_a" model="ir.module.type.rule">
<field name="sequence">100</field>
<field
name="module_domain"
>[('author_ids', '=', 'Odoo Community Association (OCA)')]</field>
<field name="module_type_id" ref="module_type_oca" />
</record>
</odoo>
Loading