Skip to content

Commit

Permalink
Corrige les problèmes de codage remontés par SonarQube
Browse files Browse the repository at this point in the history
  • Loading branch information
jycr committed Feb 17, 2022
1 parent 95b7384 commit 8709785
Show file tree
Hide file tree
Showing 50 changed files with 860 additions and 496 deletions.
22 changes: 13 additions & 9 deletions GreenPanel.html
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,14 @@ <H4> EcoIndex <span id="grade"></span>
</H4>

<table class="mytable">
<tbody>
<thead>
<tr>
<th data-i18n="ecoIndex" class="center-td"></th>
<th data-i18n="waterConsumption" class="center-td"></th>
<th data-i18n="greenhouseGasesEmission" class="center-td"></th>
<th scope="col" data-i18n="ecoIndex" class="center-td"></th>
<th scope="col" data-i18n="waterConsumption" class="center-td"></th>
<th scope="col" data-i18n="greenhouseGasesEmission" class="center-td"></th>
</tr>
</thead>
<tbody>
<tr>
<td id="ecoIndex" class="center-td"></td>
<td id="waterConsumption" class="center-td"></td>
Expand All @@ -150,12 +152,14 @@ <H4> EcoIndex <span id="grade"></span>
<div class="line">.</div>

<table>
<tbody>
<thead>
<tr>
<th data-i18n="requestNumber" class="center-td"></th>
<th data-i18n="pageSize" class="center-td"></th>
<th data-i18n="domSize" class="center-td"></th>
<th scope="col" data-i18n="requestNumber" class="center-td"></th>
<th scope="col" data-i18n="pageSize" class="center-td"></th>
<th scope="col" data-i18n="domSize" class="center-td"></th>
</tr>
</thead>
<tbody>
<tr>
<td id="requestNumber" class="center-td"></td>
<td id="responsesSize" class="center-td"></td>
Expand All @@ -167,7 +171,7 @@ <H4> EcoIndex <span id="grade"></span>
</div>

<div id="bestPracticesView" hidden>
<H4 data-i18n="bestPractices"></H4>
<h4 data-i18n="bestPractices"></h4>

<table>
<tbody id="bestPracticesTable">
Expand Down
231 changes: 128 additions & 103 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,103 +1,128 @@
# GreenIT-Analysis (V2.2.1)


GreenIT-Analysis est une extension pour navigateur qui vous permet de quantifier les impacts environnementaux d'un parcours utilisateur complet, même derrière un firewall et / ou une authentification applicative. L'outil vérifie également l'utilisation de bonnes pratiques visant à diminuer ces impacts.

Cette extension s'inspire fortement des fonctionnalités de [EcoIndex](http://www.ecoindex.fr/) et [EcoMeter](http://www.ecometer.org/).

Elle est supportée sur toutes les versions de navigateurs basés sur chromium (à partir de la version 55 ). Elle est aussi supportée sur firefox avec quelques bonnes pratiques non supportées (du fait de limitations des API Firefox).
A noter que bien que fonctionnant sur la version ESR de firefox, le plugin a des comportements particuliers, voir point FireFox ESR ci-après.


### Utiliser l'extension
* Ouvrir les outils de développement du navigateur (F12).
* Aller dans l'onglet GreenIT.
* Dans le navigateur, aller sur la page à analyser.
* Dans l'onglet GreenIT des outils de développement, cliquer sur le bouton "Lancer l'analyse".
* Les résultats s'affichent.
* Vous pouvez sauvegarder ce résultat dans un historique (seul les indicateurs sont enregistrés) via le bouton "Sauver l'analyse"
* L'historique des résultats sauvegardés est disponible via le bouton "Historique"

Pour avoir une analyse des bonnes pratiques, il faut cocher la case "Activer l'analyse des bonnes pratiques".


Quelques points de vigilance:

* Si le nombre de requêtes est à zéro, c'est probablement parce que vous n'avez pas charger la page avec les outils de developpement démarrés. Il faut donc penser à faire un rechargement de la page.
* Pour avoir des mesures correctes, il faut préalablement vider le cache du navigateur (Dans le cas contraire, le volume transféré va être réduit si vous avez déjà consulté le site mesuré). Pour vous eviter d'aller dans les menus du navigateur, un bouton est prévu à cet effet dans l'extension.
* L'utilisation d'un bloqueur de publicité ou autre filtre a une influence sur le résultat.

### Enregistrement du parcours utilisateur

Vous pouvez quantifier les impacts environnementaux d'un parcours utilisateur en lançant et en enregistrant des analyses sucessives après chaque page visitée.

Attention cependant car le plugin ne vous permet pas d'enregistrer simplement un parcours utilisateur dans le cas d'une application monopage (Single Page Application). En effet lorsque vous cliquez sur analyse, les valeurs "Taille de la page" et "Nombre de requêtes" portent sur toute la page en cours (qui reste la même tout au long du parcours) et pas sur les ressources ajoutées entre l'analyse en cours et l'analyse précédente.Pour remédier à ce problème, deux solutions possibles :
* Après chaque analyse intermédiaire vider les requêtes tracées par le navigateur via le panneau réseau (ou Network) du panel développeur. L'analyse suivante ne prendra en compte que les nouvelles ressources téléchargées.
* Faire une seule analyse à la fin du parcours sur l'application single page (du fait de la structure mono page , l'analyse prendra en compte toutes les requêtes et données echangées lors du parcours) .

### Particularités liées à Firefox ESR

Si vous utilisez l'extension sur firefox ESR:
* vous devez aller dans l'onglet réseau lorsque vous avez ouvert le panel développeur(F12) avant d'aller sur la page à analyser (cela permet d'activer l'analyse des flux au sein du navigateur).
* il peut arriver que la taille du dom soit à 0, vous devez dans ce cas fermer le panel developpeur et recommencer.

### Particularité lié à Chrome

Si vous utilisez l'extension avec chrome et que vous avez coché l'option "bloquer les cookies tiers", la fonction de sauvegarde de analyses ne pourra pas fonctionner (cf. https://github.com/cnumr/GreenIT-Analysis/issues/30)

### Permissions de l'extension

Pour fonctionner, l'extension utilise les permissions suivantes :
* activeTab, tabs : utilisée pour afficher la page des analyses sauvegardées et pour accéder aux contenus des pages pour l'analyse
* <all_urls> : utilisée pour accéder aux Urls pour l'analyse
* browsingData : utilisée pour vider le cache du navigateur

### Confidentialité

L'analyse est effectuée en local et le résulat est stocké dans l'espace de stockage du navigateur lorsque l'utilisateur choisit d'enregister l'analyse. Le plugin ne fait aucune connexion réseau et donc aucune donnée n'est envoyé sur le réseau.

## Tests
Pour utiliser directement l'extension avec les modifications effectuées localement :
* Aller dans les paramètres de Chrome > Plus d'outils > Extensions. Activer le Mode Développeur.
* Cliquer sur "Chargez l'extension non empaquetée" et sélectionner le dossier où se trouve le code source.


### Tests unitaires
Pour lancer les tests, il suffit d'ouvrir le fichier SpecRunner.html avec Chrome.
Pour éviter un problème de CORS, lancer Chrome en désactivant la sécurité :

```
google-chrome --disable-web-security --user-data-dir
```

### Tests manuels
Ouvrir dans Google Chrome les pages test1.html, test2.html et test3.html situées dans le répertoire tests/Manual/.
Lancer l'outil d'analyse pour chaque page et vérifier que les résultats correspondent à ce qui est indiqué sur la page.

### Questions & anomalies
Pour toutes anomalies ou questions, vous pouvez poster une issue ou contacter [email protected]


## License

GreenIT-Analysis est sous license AGPLv3.

Copyright (C) 2016 The EcoMeter authors (https://gitlab.com/ecoconceptionweb/ecometer)
Copyright (C) 2019-2021 [email protected]

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

Le texte complet de la license se trouve dans le fichier `LICENSE`.

Une partie du code provient du projet [EcoMeter](https://gitlab.com/ecoconceptionweb/ecometer).
# GreenIT-Analysis (V2.2.1)

GreenIT-Analysis est une extension pour navigateur qui vous permet de quantifier les impacts environnementaux d'un
parcours utilisateur complet, même derrière un firewall et / ou une authentification applicative. L'outil vérifie
également l'utilisation de bonnes pratiques visant à diminuer ces impacts.

Cette extension s'inspire fortement des fonctionnalités de [EcoIndex](http://www.ecoindex.fr/)
et [EcoMeter](http://www.ecometer.org/).

Elle est supportée sur toutes les versions de navigateurs basés sur chromium (à partir de la version 55 ). Elle est
aussi supportée sur firefox avec quelques bonnes pratiques non supportées (du fait de limitations des API Firefox). A
noter que bien que fonctionnant sur la version ESR de firefox, le plugin a des comportements particuliers, voir point
FireFox ESR ci-après.

### Utiliser l'extension

* Ouvrir les outils de développement du navigateur (F12).
* Aller dans l'onglet GreenIT.
* Dans le navigateur, aller sur la page à analyser.
* Dans l'onglet GreenIT des outils de développement, cliquer sur le bouton "Lancer l'analyse".
* Les résultats s'affichent.
* Vous pouvez sauvegarder ce résultat dans un historique (seul les indicateurs sont enregistrés) via le bouton "Sauver
l'analyse"
* L'historique des résultats sauvegardés est disponible via le bouton "Historique"

Pour avoir une analyse des bonnes pratiques, il faut cocher la case "Activer l'analyse des bonnes pratiques".

Quelques points de vigilance:

* Si le nombre de requêtes est à zéro, c'est probablement parce que vous n'avez pas charger la page avec les outils de
developpement démarrés. Il faut donc penser à faire un rechargement de la page.
* Pour avoir des mesures correctes, il faut préalablement vider le cache du navigateur (Dans le cas contraire, le volume
transféré va être réduit si vous avez déjà consulté le site mesuré). Pour vous eviter d'aller dans les menus du
navigateur, un bouton est prévu à cet effet dans l'extension.
* L'utilisation d'un bloqueur de publicité ou autre filtre a une influence sur le résultat.

### Enregistrement du parcours utilisateur

Vous pouvez quantifier les impacts environnementaux d'un parcours utilisateur en lançant et en enregistrant des analyses
sucessives après chaque page visitée.

Attention cependant car le plugin ne vous permet pas d'enregistrer simplement un parcours utilisateur dans le cas d'une
application monopage (Single Page Application). En effet lorsque vous cliquez sur analyse, les valeurs "Taille de la
page" et "Nombre de requêtes" portent sur toute la page en cours (qui reste la même tout au long du parcours) et pas
sur les ressources ajoutées entre l'analyse en cours et l'analyse précédente.Pour remédier à ce problème, deux solutions
possibles :

* Après chaque analyse intermédiaire vider les requêtes tracées par le navigateur via le panneau réseau (ou Network) du
panel développeur. L'analyse suivante ne prendra en compte que les nouvelles ressources téléchargées.
* Faire une seule analyse à la fin du parcours sur l'application single page (du fait de la structure mono page ,
l'analyse prendra en compte toutes les requêtes et données echangées lors du parcours) .

### Particularités liées à Firefox ESR

Si vous utilisez l'extension sur firefox ESR:

* vous devez aller dans l'onglet réseau lorsque vous avez ouvert le panel développeur(F12) avant d'aller sur la page à
analyser (cela permet d'activer l'analyse des flux au sein du navigateur).
* il peut arriver que la taille du dom soit à 0, vous devez dans ce cas fermer le panel developpeur et recommencer.

### Particularité lié à Chrome

Si vous utilisez l'extension avec chrome et que vous avez coché l'option "bloquer les cookies tiers", la fonction de
sauvegarde de analyses ne pourra pas fonctionner (cf. https://github.com/cnumr/GreenIT-Analysis/issues/30)

### Permissions de l'extension

Pour fonctionner, l'extension utilise les permissions suivantes :

* activeTab, tabs : utilisée pour afficher la page des analyses sauvegardées et pour accéder aux contenus des pages pour
l'analyse
* <all_urls> : utilisée pour accéder aux Urls pour l'analyse
* browsingData : utilisée pour vider le cache du navigateur

### Confidentialité

L'analyse est effectuée en local et le résulat est stocké dans l'espace de stockage du navigateur lorsque l'utilisateur
choisit d'enregister l'analyse. Le plugin ne fait aucune connexion réseau et donc aucune donnée n'est envoyé sur le
réseau.

## Tests

Pour utiliser directement l'extension avec les modifications effectuées localement :

* Aller dans les paramètres de Chrome > Plus d'outils > Extensions. Activer le Mode Développeur.
* Cliquer sur "Chargez l'extension non empaquetée" et sélectionner le dossier où se trouve le code source.

### Tests unitaires

Pour lancer les tests, il suffit d'ouvrir le fichier SpecRunner.html avec Chrome.
Pour éviter un problème de CORS, lancer Chrome en désactivant la sécurité :

```
google-chrome --disable-web-security --user-data-dir
```

### Tests manuels

Ouvrir dans Google Chrome les pages test1.html, test2.html et test3.html situées dans le répertoire tests/Manual/.
Lancer l'outil d'analyse pour chaque page et vérifier que les résultats correspondent à ce qui est indiqué sur la page.

### Questions & anomalies

Pour toutes anomalies ou questions, vous pouvez poster une issue ou contacter [email protected]

## License

GreenIT-Analysis est sous license AGPLv3.

Copyright (C) 2016 The EcoMeter authors (https://gitlab.com/ecoconceptionweb/ecometer)
Copyright (C) 2019-2021 [email protected]

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

Le texte complet de la license se trouve dans le fichier `LICENSE`.

Une partie du code provient du projet [EcoMeter](https://gitlab.com/ecoconceptionweb/ecometer).
24 changes: 15 additions & 9 deletions background.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,17 @@ const notify = (message, sender, sendResponse) => {

if (sender.tab) {
let tabId = sender.tab.id;
if (tabId in connections) connections[tabId].postMessage(message);
else console.warn("Tab not found in connection list.");
if (tabId in connections) {
connections[tabId].postMessage(message);
}
else {
console.warn("Tab not found in connection list.");
}
}
else {
console.warn("sender.tab not defined.");
}
else console.warn("sender.tab not defined.");
}
};


chrome.runtime.onMessage.addListener(notify);
Expand All @@ -42,31 +48,31 @@ chrome.runtime.onConnect.addListener((devToolsConnection) => {
console.log("received onConnect");
// assign the listener function to a variable so we can remove it later
let devToolsListener = (message, sender, sendResponse) => {

// in case message form devtools is to clean cache
if (message.clearBrowserCache) {
clearBrowserCache();
return;
}
// Otherwise message is to inject script
else {
// Inject a content script into the identified tab
console.log("received script to execute form tabId " + message.tabId);
if (!connections[message.tabId]) connections[message.tabId] = devToolsConnection;
if (!connections[message.tabId]) {
connections[message.tabId] = devToolsConnection;
}
chrome.tabs.executeScript(message.tabId,
{code: "var analyseBestPractices=" + message.analyseBestPractices + ";", allFrames: true});
chrome.tabs.executeScript(message.tabId,
{file: message.scriptToInject, allFrames: true});
}
}
};
// add the listener
devToolsConnection.onMessage.addListener(devToolsListener);

devToolsConnection.onDisconnect.addListener((port) => {
devToolsConnection.onMessage.removeListener(devToolsListener);

Object.keys(connections).map(tab => {
if (connections[tab] == port) {
if (connections[tab] === port) {
delete connections[tab];
return false;
}
Expand Down
20 changes: 10 additions & 10 deletions history.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,16 +72,16 @@
<table class="table table-condensed ">
<thead>
<tr>
<th data-i18n="date"></th>
<th data-i18n="url"></th>
<th data-i18n="requestNumber"></th>
<th data-i18n="pageSize"></th>
<th data-i18n="domSize"></th>
<th data-i18n="greenhouseGasesEmission"></th>
<th data-i18n="waterConsumption"></th>
<th data-i18n="ecoIndex"></th>
<th data-i18n="grade"></th>
<th></th>
<th scope="col" data-i18n="date"></th>
<th scope="col" data-i18n="url"></th>
<th scope="col" data-i18n="requestNumber"></th>
<th scope="col" data-i18n="pageSize"></th>
<th scope="col" data-i18n="domSize"></th>
<th scope="col" data-i18n="greenhouseGasesEmission"></th>
<th scope="col" data-i18n="waterConsumption"></th>
<th scope="col" data-i18n="ecoIndex"></th>
<th scope="col" data-i18n="grade"></th>
<th scope="col"></th>
</tr>
</thead>
<tbody id="history">
Expand Down
Loading

0 comments on commit 8709785

Please sign in to comment.