首页 > 其他分享 >sonarqube添加一条自定义规则,扫描文件中出现的username和password,方法一

sonarqube添加一条自定义规则,扫描文件中出现的username和password,方法一

时间:2024-08-19 11:05:02浏览次数:12  
标签:username java 自定义 sonarqube tree MyTxtBlockCheck org sonar import

下载源码与使用详情参考:Sonarqube 自定义规则,部署SonarSource / sonar-java源码中示例规则:docs/java-custom-rules-example - yxchun - 博客园 (cnblogs.com)

假设你已经有了sonarqube-java源码,并且已经把sonarqube部署到电脑上

1、在check 里面创建文件 MyTxtBlockCheck.java

package org.sonar.samples.java.checks;

import org.sonar.check.Rule;
import org.sonar.plugins.java.api.IssuableSubscriptionVisitor;
import org.sonar.plugins.java.api.tree.LiteralTree;
import org.sonar.plugins.java.api.tree.Tree;
import org.sonar.plugins.java.api.tree.Tree.Kind;

import java.util.Collections;
import java.util.List;

@Rule(key = "MyTxtBlockCheck")
public class MyTxtBlockCheck extends IssuableSubscriptionVisitor {


  @Override
  public List<Kind> nodesToVisit() {

    return Collections.singletonList(Kind.TEXT_BLOCK);
  }

  @Override
  public void visitNode(Tree tree) {

    if (tree.is(Kind.TEXT_BLOCK)) {
      LiteralTree textBlock = (LiteralTree) tree;
      String value = textBlock.value().toLowerCase();
      if (value.contains("username") || value.contains("password")) {
        reportIssue(tree, "Sensitive information detected: 'username' or 'password'.");
      }
    }

  }


}

2、在resouces/org.sonar.I10n.rules.java创建 MyTxtBlockCheck.json 和MyTxtBlockCheck.html

MyTxtBlockCheck.html如下

<!DOCTYPE html>
<html>
<head>
  <title>Sensitive Information Rule TXT TXT</title>
</head>
<body>
<h1>Sensitive Information Rule TXT TXT</h1>
<p>This rule detects hardcoded sensitive information such as 'username' or 'password' in the code.</p>

<h2>Rule Description</h2>
<p>Hardcoding sensitive information can lead to security vulnerabilities and is considered a bad practice. This rule helps identify such cases in your codebase.</p>

<h2>Examples</h2>
<h3>Non-compliant Code</h3>
<pre>
    private static final String username = "myUsername";
    private static final String password = "myPassword";
    </pre>

<h3>Compliant Code</h3>
<pre>
    private static final String someValue = "value"; // Use configuration files or environment variables
    </pre>

<h2>Best Practices</h2>
<ul>
  <li>Do not hardcode sensitive information in your codebase.</li>
  <li>Use configuration files or environment variables to manage sensitive data securely.</li>
</ul>
</body>
</html>

MyTxtBlockCheck.json 如下

{
"title": "Sensitive Information Rule txt txt",
"type": "Bug",
"status": "ready",
"tags": [
"bugs",
"gandalf",
"magic"
],
"defaultSeverity": "Critical"
}

 3、将MyTxtBlockCheck添加到RulesList.java

 4、在测试文件中加入新规则MyTxtBlockCheck,测试文件:MyJavaFileCheckRegistrarTest.java 

目录

 

 

5、代码到此写好;开始构建

进入pom文件所在文件夹

使用命令:

 mvn clean install -f .\pom_SQ_9_9_LTS.xml

构建成功

 

6、拿到构建好的jar

 

7、将jar放到 sonarqube-安装目录\extensions\plugins中

 8、重启项目

9、进入http://localhost:9000/

 添加新加的规则进行扫描

使用默认规则文件,激活新规则

 加入新规则

 使用新规则进行扫描请参考:

sonarqube如何创建maven项目进行扫描 - yxchun - 博客园 (cnblogs.com)

 

标签:username,java,自定义,sonarqube,tree,MyTxtBlockCheck,org,sonar,import
From: https://www.cnblogs.com/ychun/p/18366920

相关文章

  • sonarqube如何创建maven项目进行扫描
     1)创建一个maven项目 2)填写名称 3)扫描本地项目 4)生成 5)继续 6)复制命令 7)进行扫描进入到你项目所有的目录,pom.xml那一层级;使用命令,去掉换行符\,-fpom_xxxx.xml写你自己的项目mvncleanverifysonar:sonar-Dsonar.projectKey=mavenProject0819......
  • SonarQube使用新增的自定义规则,进行maven项目扫描
    1、将新加规则添加到QualityProfiles中 2、创建, 写完名称回车  3、暂时将原先的规则禁用掉  点击apply; 499条规则被更改 4、添加我们新增的自定义规则  应用  规则已经添加;将我们创建的规则设置为默认扫描规则 5、进行项目扫描1)创建......
  • Sonarqube 自定义规则,部署SonarSource / sonar-java源码中示例规则:docs/java-custom-r
    自定义规则,可以参考sonar-java/docs/CUSTOM_RULES_101.mdat8.0.0.36314·SonarSource/sonar-java·GitHub1、下载一份sonarqube源码,配置好本地的环境,JDK17和mavendocs/java-custom-rules-example示例项目中会有写好的规则;我们可以先尝试将这些写好的规则添加到Sonarqube......
  • 【TCP/IP】自定义应用层协议,常见端口号
    互联网中,主流的是TCP/IP五层协议5G/4G上网,是有自己的协议栈,要比TCP/IP更复杂(能够把TCP/IP的一部分内容给包含进去了)应用层可以代表我们所编写的应用程序,只要应用程序里面用到了网络通信,就可以认为这个代码就是属于应用层的代码日常开发中最常用到的一层:使用大佬......
  • 027、Vue3+TypeScript基础,使用自定义hook,把功能计算都放到hook中精简代码
    01、在view中创建myhook文件夹,并创建2个文件。usesDog.ts代码如下:import{onMounted,reactive}from"vue";importaxiosfrom"axios";exportdefaultfunction(){//抓取图片letdogList=reactive(['https://images.dog.ceo/breeds/pembro......
  • 自定义类型:结构体
    结构体类型的声明结构的声明structtag{ member-list;}variable-list;例如描述一个学生:structStu{charname[20];//名字intage;//年龄charsex[5];//性别charid[20];//学号};//分号不能丢结构体变量的创建和初始化#include<stdio.h>structStu......
  • Odin Inspector教程 | (四)创建自定义 Drawers(抽屉)
    【OdinInspectorandSerializer最新版免费下载地址】引言在Unity开发过程中,编辑器的用户体验同样重要。OdinInspector作为一个强大的编辑器扩展工具,允许开发者通过创建自定义Drawers来优化和个性化Inspector界面。自定义Drawers可以改变属性的显示方式,增加新的交......
  • Excel vba自定义函数公式智能提示
    效果如下第一步下载,智能提示显示xll文件Releases·Excel-DNA/IntelliSense(github.com)xll文件报病毒解决办法默认情况下,Excel正在阻止不受信任的XLL加载项-Microsoft支持 第二步,加载xll文件,xll文件放在excel插件目录:%appdata%\Microsoft\AddIns 第三步编写e......
  • ArkTS 页面和自定义组件生命周期
    页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口: onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。onBackPress:当用户点击返回按钮时触发。      ......
  • 分享!! 如何自定义权限校验的注解并用AOP拦截实现权限校验
    CustomizepermissionverificationannotationandimplementitwithAOP详细步骤创建自定义注解自定义如下解释一下:@Target(ElementType.METHOD)//指定为method上使用的注解@Retention(RetentionPolicy.RUNTIME)//在运行时保留StringmustRole()default""//注......