javascript - 定义一个常量而不是将这个文字复制 3 次 sonar

标签 javascript react-native sonarqube

我想知道如何重构以下内容。基本上,在我从谷歌获得用户信息后,它会被验证,因为可能允许特定的域。如果它通过了那个,我们将根据后端 API 验证 token 。

Sonar 提示 return displayAlert('LoginFailed') 三次。鉴于这些方法具有独特的用途,我想知道可以做些什么来改进它?

import React, {useContext} from 'react';
import {View, Alert} from 'react-native';
import {LocalizationContext} from 'library/localization';
import ServiceAuth from 'services/ServiceAuth';
import {saveLoggedInDetails} from 'library/userInformation';

const MyComponent = (props) => {
  const {translations} = useContext(LocalizationContext);

  const displayAlert = (msg) =>{
      //translations happen here
    Alert.alert("Failed", msg)
    return false;
  }


  const validateToken = async (userGoogleInfo) => {
    const {idToken} = userGoogleInfo;
    let serviceAuth = ServiceAuth.getInstance();
    try {
      return await serviceAuth.validateT(idToken);
    } catch (error) {
      //show alert here
      return displayAlert('LoginFailed')
    }
  };


  const authorize = async (userGoogleInfo) => {
    const allowedDomains = [];
    let reply = {ok: false};
    //check if domain is allowed etc and set to true.
    if (!reply['ok']) {
      return displayAlert('InvalidDomain');
    }

    try {
      const userInfo = await validateToken(userGoogleInfo);

      if (userInfo) {
       console.log("okay")
      } else {
        return displayAlert('LoginFailed')
      }
    } catch (error) {
      return displayAlert('LoginFailed')
    }
  };

  return (
    <>
        <View>
          <Text>Hello</Text>
        </View>
    </>
  );
};
export default MyComponent;

最佳答案

消息有点困惑,但 Sonar 仅提示 LoginFailed 字符串作为参数使用了三次。

创建一个常量,例如:

const LOGIN_FAILED = 'LoginFailed';

然后在对 displayAlert 的所有三个调用中使用它:

return displayAlert(LOGIN_FAILED);

关于javascript - 定义一个常量而不是将这个文字复制 3 次 sonar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62544907/

相关文章:

configuration - 无法访问 SonarQube : not a valid locale

SonarQube 认知复杂度指标

javascript - Gmail 对话 View 切换 bookmarketlet/favelet/"scriptlet"

javascript - 选择除第一个以外的所有子元素

android - React-Native:无法重新创建Android和iOS文件夹

react-native - React Native Elements - 在输入周围包裹可触摸的不透明度在 IOS 中不起作用

javascript - 在 node.js child_process.exec 上显示进度?

javascript - 如何使用变量使用javascript更改css样式的类型

react-native - expo-av 裸错误 : Missing audio recording permissions

javascript - 将 JavaScript 库添加到 Sonar