change_code/src/utils/Constants.h

136 lines
6.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef CONSTANTS_H
#define CONSTANTS_H
#include <QCoreApplication>
#include <QString>
// ============================================================================
// 项目公共常量 — 所有 URL、路径、文件名等配置集中于此修改只需改一处
// ============================================================================
namespace Constants {
// ---------------------------------------------------------------------------
// 应用版本号(发版时只需修改此处)
// ---------------------------------------------------------------------------
namespace App {
constexpr char Version[] = "1.4.0";
}
// ---------------------------------------------------------------------------
// URL 常量
// ---------------------------------------------------------------------------
namespace Urls {
constexpr char Base[] = "http://10.20.163.105:6045";
inline QString updateInfo() { return QString::fromLatin1(Base) + "/download/uft3changecode/update_info.json"; }
inline QString downloadPage(){ return QString::fromLatin1(Base) + "/uft3changecode/下载.html"; }
inline QString helpPage() { return QString::fromLatin1(Base) + "/uft3changecode"; }
}
// ---------------------------------------------------------------------------
// 目录 / 文件路径常量(相对于 exe 目录的子路径名称)
// ---------------------------------------------------------------------------
namespace Paths {
inline const QString ToolDir = "uf2touft3"; // 工具主目录
inline const QString LogDir = "logs"; // 日志目录
inline const QString CacheDir = "cache"; // 缓存目录
inline const QString ChangeCodeDir = "change_code"; // 代码检索根目录toolDir 下)
inline const QString FunctionOutput = "function_output"; // 调用链/文件导出目录
}
// ---------------------------------------------------------------------------
// ToolDir 下的文件名
// ---------------------------------------------------------------------------
namespace ToolFiles {
inline const QString Exe = "uf2touft3.exe";
inline const QString ConfigIni = "config.ini";
inline const QString Uf2Json = "uf2.json";
inline const QString Uft3Json = "uft3.json";
inline const QString Uft3Trans = "uft3Trans.json";
inline const QString CustJson = "cust.json";
}
// ---------------------------------------------------------------------------
// Cache 相关
// ---------------------------------------------------------------------------
namespace Cache {
inline const QString DbFile = "config_cache.db";
}
// ---------------------------------------------------------------------------
// 元数据文件相对子路径(相对于业务工程目录 dirPath 拼接)
// ---------------------------------------------------------------------------
namespace MetaPaths {
// UFT3
inline const QString Uft3StdField = "/metadata/stdfield.stdfield"; // UFT3 标准字段文件
inline const QString Uft3DataType = "/metadata/datatype.datatype"; // UFT3 数据类型文件
inline const QString Uft3StructDir = "/uftstructure"; // UFT3 表结构目录
// UF2
inline const QString Uf2StdField = "/公共资源/stdfields.xml"; // UF2 标准字段文件
inline const QString Uf2DataType = "/公共资源/datatypes.xml"; // UF2 数据类型文件
inline const QString Uf2ErrNumber = "/公共资源/errNumbers.xml"; // UF2 错误号文件
// 文件扩展名
inline const QString Uft3StructExt = ".uftstructure"; // UFT3 表结构文件扩展名
}
// ---------------------------------------------------------------------------
// 运行时路径辅助函数(基于 applicationDirPath 拼接)
// ---------------------------------------------------------------------------
inline QString toolDir() { return QCoreApplication::applicationDirPath() + "/" + Paths::ToolDir; }
inline QString toolExe() { return toolDir() + "/" + ToolFiles::Exe; }
inline QString configIni() { return toolDir() + "/" + ToolFiles::ConfigIni; }
inline QString custJson() { return toolDir() + "/" + ToolFiles::CustJson; }
inline QString logDir() { return QCoreApplication::applicationDirPath() + "/" + Paths::LogDir; }
inline QString cacheDir() { return QCoreApplication::applicationDirPath() + "/" + Paths::CacheDir; }
inline QString cacheDb() { return cacheDir() + "/" + Cache::DbFile; }
// ---------------------------------------------------------------------------
// 代码检索CodeSearch相关常量与路径
// ---------------------------------------------------------------------------
namespace CodeSearch {
constexpr char ChangeCodeIni[] = "change_code.ini"; // 路径持久化配置文件名
constexpr char ConvertPathKey[] = "codeSearch/convertPath"; // QSettings 键:转码业务路径
constexpr char SearchPathKey[] = "codeSearch/searchPath"; // QSettings 键:非转码业务路径
}
inline QString changeCodeDir() { return toolDir() + "/" + Paths::ChangeCodeDir; } // 默认代码检索根目录
inline QString changeCodeIni() { return toolDir() + "/" + QString::fromLatin1(CodeSearch::ChangeCodeIni); }
inline QString functionOutput() { return Paths::FunctionOutput; } // 调用链/文件导出目录名
} // namespace Constants
// ============================================================================
// 路径与规则相关的公共工具(原 pathutils.h 合并至此)
// - 反斜杠标准化replace('\\','/')
// - “转码接口”路径判定规则(原在 uft3interface/uf2interface 多处硬编码)
// 仅依赖 <QString>,不引入额外耦合
// ============================================================================
namespace PathUtils {
// 将 Windows 反斜杠统一为斜杠,返回标准化后的副本(不修改入参)
inline QString normPath(const QString& path)
{
QString p = path;
p.replace('\\', '/');
return p;
}
// 判断路径是否属于“转码”接口:位于 cbptrans / mgrcbptrans / converttrans / ses
// 目录下,但排除 cbptrans/cbptranspub 公共转码目录。内部先做路径标准化,
// 因此即使传入含反斜杠的原始路径也能正确判定。
inline bool isTransCodePath(const QString& filePath)
{
const QString p = normPath(filePath);
return (p.contains("/cbptrans/") ||
p.contains("/mgrcbptrans/") ||
p.contains("/converttrans/") ||
p.contains("/ses/")) &&
!p.contains("/cbptrans/cbptranspub/");
}
} // namespace PathUtils
#endif // CONSTANTS_H