MCPcopy Index your code
hub / github.com/donhui/sonar-mybatis

github.com/donhui/sonar-mybatis @1.0.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.8 ↗ · + Follow
36 symbols 77 edges 9 files 5 documented · 14% updated 2y ago1.0.8 · 2024-02-27★ 7514 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Build Status GitHub release (latest by date) GitHub All Releases

README 英文版

SonarQube MyBatis 插件

MyBatis SonarQube Plugin :自定义规则用于检查 MyBatis Mapper XML 文件中的风险 SQL。

什么是风险 SQL?

风险 SQL 是指在 mybatis mapper 文件中,有一些动态 SQL,例如 <if test=""></if> 元素, 如果 Mapper XML 中的 SQL 语句中的所有参数为 null,那么 SQL 会有比较大的风险。

示例如下:

DELETE FROM table_name
WHERE 1=1
<if test="startTime != null">
    AND start_time <![CDATA[=]]> #{startTime}
</if>
<if test="endTime != null">
    AND end_time <![CDATA[=]]> #{endTime}
</if>

MyBatis 规则

有7个内置的规则,select 语句有3个规则,update 以及 delete 语句分别有2个规则。

mybatis-rules

如何安装?

在SonarQube中安装插件有两种选择: - 应用市场(Marketplace) - 自动从 SonarQube UI 安装插件。 - 手动安装 - 如果您的 SonarQube 实例无法访问互联网,请将使用此方法。

应用市场(Marketplace)

如果您能够访问互联网,并且您的用户具有全局权限“管理系统”的权限,则可以访问"配置 > 应用市场"。 - 通过搜索 mybatis 找到该插件 - 点击安装然后等待下载完成

下载完成后,将使用“重启”按钮重新启动 SonarQube 实例。

手动安装

该插件可以从 github release 下载。

将下载的 jar 放到 $SONARQUBE_HOME/extensions/plugins 目录,并移除该插件的旧版本。

一旦完成,您将需要重新启动 SonarQube 服务器。

如何使用?

使用 maven 构建命令的示例如下:

mvn clean compile -U -Dmaven.test.skip=true -Dmaven.javadoc.skip=true sonar:sonar -Dsonar.host.url=http://127.0.0.1:9000/ -Dsonar.projectKey=demo -Dsonar.projectName=demo -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=. -Dsonar.inclusions=src/main/** -Dsonar.exclusions==src/main/webapp/**

要想分析 mybatis mapper 文件, src/main/resources 目录必须在 sonar.sources 中。

支持全局 Stmt ID 排除列表

对于一些特殊语句的问题,要想忽略它们,可以将附带 namespace 的 statement id 放入全局 stmt id 排除列表。

stmt-id-exclude

跳过 MyBatis 扫描

如果有时候想要跳过 MyBatis 扫描,你可以修改全局属性 sonar.mybatis.skiptrue 或者在命令行中添加参数: -Dsonar.mybatis.skip=true

贡献

可以在 https://github.com/donhui/sonar-mybatis/issues 提交 bug 和新功能请求。

或者可以提交 pull requests 用于修复 bug 或提交新功能,欢迎任何形式的贡献。

Star 趋势图

Star History

Star History Chart

Core symbols most depended-on inside this repo

toString
called by 9
src/main/java/org/sonarsource/plugins/mybatis/rules/MyBatisLintSensor.java
parse
called by 3
src/main/java/org/sonarsource/plugins/mybatis/xml/XmlParser.java
containsFunctionOrLimit
called by 2
src/main/java/org/sonarsource/plugins/mybatis/rules/MyBatisLintSensor.java
getFilePath
called by 2
src/main/java/org/sonarsource/plugins/mybatis/rules/ErrorDataFromLinter.java
getLineNumber
called by 1
src/main/java/org/sonarsource/plugins/mybatis/utils/IOUtils.java
handleMapperElement
called by 1
src/main/java/org/sonarsource/plugins/mybatis/xml/MyBatisMapperXmlHandler.java
handleMapperFile
called by 1
src/main/java/org/sonarsource/plugins/mybatis/xml/MyBatisMapperXmlHandler.java
parseStatement
called by 1
src/main/java/org/sonarsource/plugins/mybatis/rules/MyBatisLintSensor.java

Shape

Method 27
Class 9

Languages

Java100%

Modules by API surface

src/main/java/org/sonarsource/plugins/mybatis/rules/MyBatisLintSensor.java14 symbols
src/main/java/org/sonarsource/plugins/mybatis/rules/ErrorDataFromLinter.java7 symbols
src/main/java/org/sonarsource/plugins/mybatis/xml/MyBatisMapperXmlHandler.java3 symbols
src/main/java/org/sonarsource/plugins/mybatis/utils/IOUtils.java3 symbols
src/main/java/org/sonarsource/plugins/mybatis/xml/XmlParser.java2 symbols
src/main/java/org/sonarsource/plugins/mybatis/rules/MyBatisLintRulesDefinition.java2 symbols
src/main/java/org/sonarsource/plugins/mybatis/languages/MyBatisQualityProfile.java2 symbols
src/main/java/org/sonarsource/plugins/mybatis/MyBatisPlugin.java2 symbols
src/main/java/org/sonarsource/plugins/mybatis/Constant.java1 symbols

For agents

$ claude mcp add sonar-mybatis \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page