使用 Ollama 在本地运行 LLM 进行代码审查 – 完整实战指南

使用 Ollama 在本地运行 LLM 进行代码审查

代码审查是软件开发中的常规环节,但人工审查效率低、主观性强。云端 AI 审查工具又存在隐私顾虑。

Ollama 是一个开源工具,能让用户在本地机器上跑大语言模型,不用联网,不用交 API 费用,代码也不会离开你的电脑。

为什么需要本地 LLM 代码审查

把代码发给云端 API 有几个麻烦:

隐私是最大的问题。代码里可能包含密钥、数据库配置、业务逻辑。

成本也是现实考虑。频繁调用云端 API 要花钱。

网络依赖。没有稳定的网,审查就用不了。

Ollama 正好针对这些痛点。它可以运行 Codellama、Mistral 等开源模型,完全离线,代码始终留在本地。

安装 Ollama

Ollama 支持 macOS、Linux 和 Windows。

macOS 用 Homebrew:brew install ollama

Linux 用官方脚本:curl -fsSL https://ollama.com/install.sh | sh

验证安装:ollama --version

Ollama 会自动在后台启动服务,默认监听 11434 端口。

下载模型

对于代码审查任务,推荐用 Codellama 或 Mistral。

下载模型:ollama pull codellamaollama pull mistral

查看已下载的模型:ollama list

编写代码审查脚本

下面是一个完整的 Python 脚本,实现自动化代码审查功能。

#!/usr/bin/env python3
import os
import sys
import json
from pathlib import Path
from typing import List, Dict
import requests

class CodeReviewer:
    def __init__(self, model: str = "codellama", ollama_host: str = "http://localhost:11434"):
        self.model = model
        self.ollama_host = ollama_host

    def review_code(self, code: str) -> str:
        url = f"{self.ollama_host}/api/generate"
        prompt = f"你是一位代码审查专家。请审查以下代码并给出建议:
{code}"
        payload = {"model": self.model, "prompt": prompt, "stream": False}
        response = requests.post(url, json=payload, timeout=120)
        return response.json().get("response", "无响应")

    def review_file(self, file_path: str) -> str:
        with open(file_path, 'r', encoding='utf-8') as f:
            code = f.read()
        return self.review_code(code)

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('path')
    args = parser.parse_args()
    reviewer = CodeReviewer()
    print(reviewer.review_file(args.path))

安装依赖并运行

先安装 requests 库:pip install requests

使用方式:python code_reviewer.py your_code.py

运行效果示例

假设有如下有问题的代码:

import sqlite3
def get_user_data(user_id):
    conn = sqlite3.connect("app.db")
    query = f"SELECT * FROM users WHERE id = {user_id}"
    return conn.cursor().execute(query).fetchone()

审查后会指出:SQL 注入漏洞、数据库连接未关闭、敏感信息硬编码等问题。

这个方案适合谁

本地 LLM 代码审查的好处:代码不离开你的机器,不用交 API 费,不需要网络也能用,还能根据团队规范定制提示词。

局限:本地模型的智力不如 GPT-4;需要下载几GB的模型文件;建议至少 8GB 内存。

对于注重隐私的团队和个人开发者来说,这套方案值得一试。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇