An issue is just an issue. It’s tied to a rule, so you’ll have to query that seperately. So if you you retreive a single issue from GET api/issues/search…
{
"total": 40105,
"p": 1,
"ps": 100,
"paging": {
"pageIndex": 1,
"pageSize": 100,
"total": 40105
},
"effortTotal": 383174,
"issues": [
{
"key": "5a7386d8-6c01-46a4-8885-682263756f1a",
"rule": "java:S5853",
"severity": "MINOR",
"component": "sonarqube:server/sonar-db-dao/src/test/java/org/sonar/db/jira/JiraSelectedWorkTypeDaoTest.java",
"project": "sonarqube",
"line": 77,
"hash": "795df24d839bb392dd433ed9ed9db4b8",
"textRange": {
"startLine": 77,
"endLine": 77,
"startOffset": 4,
"endOffset": 14
},
...
You have to clue into the rule java:S5853, and query info for that rule seperately
https://next.sonarqube.com/sonarqube/api/rules/show?key=java:S5853
{
"rule": {
"key": "java:S5853",
"repo": "java",
"name": "Consecutive AssertJ \"assertThat\" statements should be chained",
"createdAt": "2020-06-09T12:12:11+0000",
"severity": "MINOR",
"status": "READY",
"isTemplate": false,
"tags": [],
"sysTags": [
"tests",
"assertj"
],
"lang": "java",
"langName": "Java",
"params": [],
"defaultDebtRemFnType": "CONSTANT_ISSUE",
"debtRemFnType": "CONSTANT_ISSUE",
"type": "CODE_SMELL",
"defaultRemFnType": "CONSTANT_ISSUE",
"defaultRemFnBaseEffort": "5min",
"remFnType": "CONSTANT_ISSUE",
"remFnBaseEffort": "5min",
"remFnOverloaded": false,
"scope": "TEST",
"isExternal": false,
"descriptionSections": [
{
"key": "root_cause",
"content": "\u003Cp\u003EAssertJ assertions methods targeting the same object can be chained instead of using multiple \u003Ccode\u003EassertThat\u003C/code\u003E. It avoids duplication and\nincreases the clarity of the code.\u003C/p\u003E\n\u003Cp\u003EThis rule raises an issue when multiples \u003Ccode\u003EassertThat\u003C/code\u003E target the same tested value.\u003C/p\u003E\n\u003Ch3\u003ENoncompliant code example\u003C/h3\u003E\n\u003Cpre\u003E\nassertThat(someList).hasSize(3);\nassertThat(someList).contains(\"something\");\n\u003C/pre\u003E\n\u003Ch3\u003ECompliant solution\u003C/h3\u003E\n\u003Cpre\u003E\nassertThat(someList)\n .hasSize(3)\n .contains(\"something\");\n\u003C/pre\u003E"
}
],
"educationPrinciples": [],
"updatedAt": "2025-02-05T09:31:08+0000",
"cleanCodeAttribute": "CLEAR",
"cleanCodeAttributeCategory": "INTENTIONAL",
"impacts": [
{
"softwareQuality": "MAINTAINABILITY",
"severity": "LOW"
}
]
},
"actives": []
}