olov / ng-annotate

Add, remove and rebuild AngularJS dependency injection annotations
MIT License
2.03k stars 150 forks source link

Using ng-annotate to detect namespace collisions? #243

Closed parlarjb closed 8 years ago

parlarjb commented 8 years ago

I'd like to use ng-annotate to detect something like this:

angular.module('foo')
    .factory('XYZ', function () {})
    .service('XYZ', function () {});

i.e. detecting if someone has accidentally assigned the same name to two different factories/controllers/services/directives/etc.

The way I was thinking about doing this is to write a plugin that keeps a list of all names that it sees, and throwing an error whenever it comes across a duplicate.

But I'm not sure of all the properties available on a given node passed to the plugin match, so I'm not sure yet what to look for.

Any pointers would be appreciated!

olov commented 8 years ago

https://github.com/olov/ng-annotate/issues/245

schmod commented 8 years ago

This might be a better task for eslint-plugin-angular.

There's also ng-directive-parser, which could be adapted to this purpose, although it's worth noting that it's perfectly legal for multiple directives to have the same name.

Finally, I'd also suggest opening a bug in the Angular bug-tracker if this is a persistent problem for you. There are quite a few aspects of Angular's DI that seem to encourage bugs for no good reason (ie. angular.module('mod',[]) will clobber any existing modules named mod without warning).