Thanks for the sample project. It’s quite useful to me that you haven’t cleaned it up yet.
I have some feedback on your rules/issues, but none of this is mandatory, so once you sort out the change log question, you should be good to go.
The location of this issue seems arbitrary to me if not random:
If I pull up the
architecture.json file, I can see where the cycle is created. It’s not clear to me whether the file is purely descriptive, or actually has some impact on the code, but it took me a while to connect the package name to the string “bookingmanagement” from the issue message.
It seems to me that this issue should probably be raised in
architecture.json with the primary location on the first part of the cycle and secondary locations on the other parts of the cycle. If you’re about to object that you’re participating in an analysis of Java code and that’s a JSON file, well… you’re clearly already reading the file. You just have to figure out how to raise issues on it. SonarJava raises issues on pom files, so you can probably take a page from its book.
There’s currently an arbitrary limit on the message length passed from the back end to the UI. You should reconsider the structure of your messages:
I’d suggest something like
Code from this dataaccess layer cannot depend on the dataaccess layer of a different component (component here)
Also, it would be really helpful if the description for this rule gave a “why” on this. Currently all your rule descriptions basically just say (implicitly) “Because I said so.” and that’s one of the quickest ways I know to start an argument.
Are you missing a “not” here?
I think maybe some punctuation is missing here(?). Maybe after "or common… (which BTW would be better as “and common”). As-is, the message doesn’t make a lot of sense to me:
And again this is a rule that could really benefit from a (fuller) description. I guess you’re telling me that something’s missing in the file, but I don’t have a lot to work with here in terms of knowing what to do to fix the problem.
This message seems to tell me that general dependencies are allowed, which means… that I can use any dependency? But then why do I have an issue: